diff options
Diffstat (limited to 'winsup/cygwin/fhandler_socket.cc')
-rw-r--r-- | winsup/cygwin/fhandler_socket.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 288b4f4e5..3ec1ac69e 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -103,15 +103,19 @@ fhandler_socket::create_secret_event (int* secret) secret_event = OpenEvent (EVENT_ALL_ACCESS, FALSE, buf); if (secret_event) - { - ProtectHandle (secret_event); - SetEvent (secret_event); - } + ProtectHandle (secret_event); return secret_event; } void +fhandler_socket::signal_secret_event () +{ + if (secret_event) + SetEvent (secret_event); +} + +void fhandler_socket::close_secret_event () { if (secret_event) @@ -136,6 +140,8 @@ fhandler_socket::check_peer_secret_event (struct sockaddr_in* peer, int* secret) ev = OpenEvent (EVENT_ALL_ACCESS, FALSE, buf); } + signal_secret_event (); + if (ev) { DWORD rc = WaitForSingleObject (ev, 10000); |