* net.cc (wsock_event::wait): Explicitely cancel IO when a signal
arrived to avoid data loss. Fallback to blocking IO when canceling fails.
This commit is contained in:
parent
f6b52c79f5
commit
0260054a8c
|
@ -1,3 +1,9 @@
|
|||
Fri May 18 10:31:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* net.cc (wsock_event::wait): Explicitely cancel IO when a signal
|
||||
arrived to avoid data loss. Fallback to blocking IO when canceling
|
||||
fails.
|
||||
|
||||
Thu May 17 15:29:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* security.cc (cygwin_set_impersonation_token): Never destroy
|
||||
|
|
|
@ -90,7 +90,13 @@ wsock_event::wait (int socket, LPDWORD flags)
|
|||
ret = (int) len;
|
||||
break;
|
||||
case WSA_WAIT_EVENT_0 + 1:
|
||||
WSASetLastError (WSAEINTR);
|
||||
if (!CancelIo ((HANDLE)socket))
|
||||
{
|
||||
debug_printf ("CancelIo() %E, fallback to blocking io");
|
||||
WSAGetOverlappedResult(socket, &ovr, &len, TRUE, flags);
|
||||
}
|
||||
else
|
||||
WSASetLastError (WSAEINTR);
|
||||
break;
|
||||
case WSA_WAIT_FAILED:
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue