diff options
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r-- | winsup/cygwin/net.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index c63fa3c33..5fbc92e8d 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -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; |