mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-03-12 18:13:50 -05:00
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. [originally from svn r888]
This commit is contained in:
parent
f2b218078f
commit
c171bb0a2c
2
plink.c
2
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user