[erlang-patches] SSH-daemon freezing while call io:getopts() and io:setopts()

Alexander Demidenko <>
Thu Nov 21 02:41:43 CET 2013

Hello, friends.

I have a trouble with using shell in the ssh-daemon, when I call the
function io:getopts() and io:setopts([{echo, false}, {encoding, latin1}]).

Tested by Erlang 16B02, ssh 2.1.8 and R15B02, ssh 2.1.1

How can i see, in the ssh_cli.erl module, handle_msg metod no function for
processing param ({Group, set_unicode_state, Arg}, State) and ({Group,
get_unicode_state}, State).

My patch for fixing:

--- ssh-2.1.1/src/ssh_cli.erl 2013-10-26 14:25:26.000000000
+++ ssh-2.1.2/src/ssh_cli.erl 2013-10-26 14:18:18.000000000
@@ -159,12 +159,20 @@
 handle_msg({ssh_channel_up, ChannelId, ConnectionManager},
    #state{channel = ChannelId,
   cm = ConnectionManager} = State) ->
     {ok,  State};

+handle_msg({Group, set_unicode_state, _Arg}, State) ->
+  Group ! {self(), set_unicode_state, false},
+    {ok, State};
+handle_msg({Group, get_unicode_state}, State) ->
+    Group ! {self(), get_unicode_state, false},
+    {ok, State};
 handle_msg({Group, Req}, #state{group = Group, buf = Buf, pty = Pty,
  cm = ConnectionManager,
  channel = ChannelId} = State) ->
     {Chars, NewBuf} = io_request(Req, Buf, Pty),
     write_chars(ConnectionManager, ChannelId, Chars),
     {ok, State#state{buf = NewBuf}};

Also I attached simple sample, where you can see this problem. To run it,
compile ssh_shell.erl and ssh_manager.erl and invoke
"ssh_manager:start_link()" method to run ssh-daemon. (you need generate
personal keys for used it) Then run ssh-client on terminal to localhost on
port 7777, after entering the password “test”, enter the command "echo_on"
or "echo_off".

You can see that there is a delay when calling functions io:getopts() and
io:setopts([{echo, false}, {encoding, latin1}]).

With best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20131121/37a2bee6/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ssh_delay_test.tar.gz
Type: application/x-gzip
Size: 3311 bytes
Desc: not available
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20131121/37a2bee6/attachment-0001.bin>

More information about the erlang-patches mailing list