The libssh2_channel_receive_window_adjust() function failed to set the state

variables at times and thus this function would misbehave on repeated invokes.
This commit is contained in:
Daniel Stenberg 2007-08-12 21:53:32 +00:00
parent f216b36328
commit d90d8bdae7
2 changed files with 10 additions and 0 deletions

8
NEWS
View File

@ -1,6 +1,14 @@
Version 0.18 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 - Satish Mittal and David J Sullivan fixed an infinit recv() loop in
libssh2_banner_receive() libssh2_banner_receive()

View File

@ -1327,7 +1327,9 @@ libssh2_channel_receive_window_adjust(LIBSSH2_CHANNEL * channel,
"Unable to send transfer-window adjustment packet, deferring", "Unable to send transfer-window adjustment packet, deferring",
0); 0);
channel->adjust_queue = adjustment; channel->adjust_queue = adjustment;
channel->adjust_state = libssh2_NB_state_idle;
} else { } else {
channel->adjust_state = libssh2_NB_state_idle;
channel->remote.window_size += adjustment; channel->remote.window_size += adjustment;
} }