Re: SSH Bugs

[email protected]
Newsgroups gmane.comp.lang.erlang.bugs
Message-ID <OFD6861720.44B5EF91-ON85257D08.00469ACB-86257D08.0048C3D9@apcc.com>
Hi Angela,

> Ingela Anderton Andin <[email protected]>
> Sent by: [email protected]
>
> 07/01/2014 03:50 AM
>
> To
>
> <[email protected]>,
>
> cc
>
> Subject
>
> Re: [erlang-bugs] SSH Bugs
>
> Hi!
>
> On 06/30/2014 10:37 PM, [email protected] wrote:
> >
> > Hi,
> >
> > Does anyone know what the final resolution was with this bug?
> > http://erlang.org/pipermail/erlang-patches/2013-December/004499.html
>
> Humm I can not remeber seeing this patch before! Maybe it got lost in
> the process some how :(

No worries! When I didn't see it in 17.1, I thought I would check to see if
that was the case.

>
>
> > The patch given by Anton Ryabkov seems to address the immediate bug.
Is
> > this fix ok?  Or is there a better way?
> >
> > With Anton's patch I am able to get this example to run:
> >
https://github.com/erlang/otp/blob/maint/lib/ssh/examples/ssh_sample_cli.erl

> >
> > It works with Tera Term as the client, but when I try to use PuTTY I
get
> > the following error:
> > "Disconnected:  Server protocol violation: unexpected
> > SSH2_MSG_CHANNEL_SUCCESS packet"
> >
> > I believe this worked with PuTTY before R16B03.  Did an edge case get
> > missed with this refactor?
> > https://github.com/erlang/otp/commit/
> 68263a48bfbdac4dc219a91f06af3d535d881850
>
> Possible!
>
> Have you tried it with 17.1? I think the 17.1 code semantically seems to
> be doing the same as the patch.

I'm still having trouble with 17.1.  When I make Anton's changes, TeraTerm
seems to work.

As far as PuTTY, I assume the root cause is somewhere in
ssh_connection.erl:handle_cli_msg() :

handle_cli_msg(#connection{channel_cache = Cache} = Connection,
	       #channel{user = undefined,
			remote_id = RemoteId,
			local_id = ChannelId} = Channel0, Reply0) ->

    case (catch start_cli(Connection, ChannelId)) of
	{ok, Pid} ->
	    erlang:monitor(process, Pid),
	    Channel = Channel0#channel{user = Pid},
	    ssh_channel:cache_update(Cache, Channel),
	    Reply = {connection_reply,
		     channel_success_msg(RemoteId)},
	    {{replies, [{channel_data, Pid, Reply0}, Reply]}, Connection};
	_Other ->
	    Reply = {connection_reply,
		     channel_failure_msg(RemoteId)},
	    {{replies, [Reply]}, Connection}
    end;

We start_cli() and send channel_success_msg().  Prior to the refactor I
believe this was reply_msg() instead.  If I change
	    Reply = {connection_reply,
		     channel_success_msg(RemoteId)},
	    {{replies, [{channel_data, Pid, Reply0}, Reply]}, Connection};
To:
	    {Reply, Connection1} = reply_msg(Channel, Connection, Reply0),
 	    {{replies, [Reply]}, Connection1};

Then PuTTY seems happy again. Does this seem OK?  Or am I messing something
else up by "fixing" this.

Thanks again for all the help,
Mike


_______________________________________________
erlang-bugs mailing list
[email protected]
http://erlang.org/mailman/listinfo/erlang-bugs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.