aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Nilsson <[email protected]>2015-04-02 14:53:17 +0200
committerIngela Anderton Andin <[email protected]>2015-04-07 23:02:46 +0200
commit734506318c49778ff959c0f1f5136543fe8c314b (patch)
tree9fd1cc0ac599ad464640069750299d9dfa69ae93
parentbdd146390f1a69251f386ea86c72fb8859de4ec1 (diff)
downloadotp-734506318c49778ff959c0f1f5136543fe8c314b.tar.gz
otp-734506318c49778ff959c0f1f5136543fe8c314b.tar.bz2
otp-734506318c49778ff959c0f1f5136543fe8c314b.zip
ssh: fix loop bug for zero maximum_packet_size.
A channel could be opened with the 'max packet size' set to 0. The behaviour is not defined in the ssh rfc:s, and openssh does not handle that case in some special way besides looping. The introduced solution just "keep quiet" but removes the eternal loop that caused Erlang to core dump.
-rw-r--r--lib/ssh/src/ssh_connection.erl3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/ssh/src/ssh_connection.erl b/lib/ssh/src/ssh_connection.erl
index e9b4547aef..e6f2f12fb7 100644
--- a/lib/ssh/src/ssh_connection.erl
+++ b/lib/ssh/src/ssh_connection.erl
@@ -1040,6 +1040,9 @@ do_update_send_window(Channel0, Cache) ->
get_window(#channel{send_window_size = 0
} = Channel, Acc) ->
{lists:reverse(Acc), Channel};
+get_window(#channel{send_packet_size = 0
+ } = Channel, Acc) ->
+ {lists:reverse(Acc), Channel};
get_window(#channel{send_buf = Buffer,
send_packet_size = PacketSize,
send_window_size = WindowSize0