From: simon Date: Tue, 23 Jan 2001 10:19:17 +0000 (+0000) Subject: Fix a subtle bug affecting multiple-socket handling in Plink. (Was X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/commitdiff_plain/ffb959c711aeb32bc6116816cee4186cfd5a5c69?hp=630ce4de6dc46484d7821fdec2c6fb8fb118b0ce Fix a subtle bug affecting multiple-socket handling in Plink. (Was interfering with X forwarding.) Details of bug: the event object used as the target of WSAEventSelect is created in such a way that it is automatically reset when it releases a thread from WaitFor*Objects. Subsequently, a read on the first socket in the list causes another network event if not all the available data was read; thus the event object is set again. Then, WSAEnumNetworkEvents is called again for the _second_ socket, and is passed the network event, which it therefore resets. So an event has been dropped, and things only get restarted when some more data arrives on the first socket. git-svn-id: svn://svn.tartarus.org/sgt/putty@888 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/plink.c b/plink.c index 16a44b38..61552fac 100644 --- a/plink.c +++ b/plink.c @@ -557,7 +557,7 @@ int main(int argc, char **argv) { WPARAM wp; socket = sklist[i]; wp = (WPARAM)socket; - if (!WSAEnumNetworkEvents(socket, netevent, &things)) { + if (!WSAEnumNetworkEvents(socket, NULL, &things)) { noise_ultralight(socket); noise_ultralight(things.lNetworkEvents); if (things.lNetworkEvents & FD_READ)