summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_socket.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/fhandler_socket.cc')
-rw-r--r--winsup/cygwin/fhandler_socket.cc14
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);