[erlang-bugs] SSH Bugs
Ingela Anderton Andin
Ingela.Anderton.Andin@REDACTED
Tue Jul 1 17:22:24 CEST 2014
Hi!
On 07/01/2014 03:14 PM, Michael.K.Schmidt@REDACTED wrote:
> Hi Angela,
^^^^^^^^
It is a Swedish name starts with I ;)
>> Ingela Anderton Andin <Ingela.Anderton.Andin@REDACTED>
>> Sent by: erlang-bugs-bounces@REDACTED
>>
>> 07/01/2014 03:50 AM
>>
>> To
>>
>> <erlang-bugs@REDACTED>,
>>
>> cc
>>
>> Subject
>>
>> Re: [erlang-bugs] SSH Bugs
>>
>> Hi!
>>
>> On 06/30/2014 10:37 PM, Michael.K.Schmidt@REDACTED 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.
Humm ... looks like the refactor went wrong, when I make this change
which also conform with the next clause, the ssh test SUITE still
passes. It would be great if you could make a pull-request and add a
test case for this. I will make a ticket for this issue, but it is
vacation times now so it will take a while for someone to look into the
ticket.
Regards Ingela Erlang/OTP team - Ericsson AB
More information about the erlang-bugs
mailing list