diff --git a/NEWS b/NEWS index 8a61548..e4cdbfb 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,14 @@ Version 0.18 ------------ +- Peter O'Gorman reported how a SCP transfer would hang for him, and it was + fairly easy reproducable. One bug was in the transport layer, ignoring to + read more data while there was data left even though it couldn't decrypt the + data that was left due to it being too little... The other bug was in the + channel layer, where the libssh2_channel_receive_window_adjust() function + missed to set the state variables at times and thus this function would + misbehave on repeated invokes. + - Satish Mittal and David J Sullivan fixed an infinit recv() loop in libssh2_banner_receive() diff --git a/src/channel.c b/src/channel.c index 18a1fe2..f56283e 100644 --- a/src/channel.c +++ b/src/channel.c @@ -1327,7 +1327,9 @@ libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL * channel, "Unable to send transfer-window adjustment packet, deferring", 0); channel->adjust_queue = adjustment; + channel->adjust_state = libssh2_NB_state_idle; } else { + channel->adjust_state = libssh2_NB_state_idle; channel->remote.window_size += adjustment; }