Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Duda <deo@logos-m.ru>2001-06-20 10:50:13 +0400
committerEgor Duda <deo@logos-m.ru>2001-06-20 10:50:13 +0400
commitae036f47c54449400fb178008094e20e70488711 (patch)
treeb78bd45aabe39755a80515cb34a2768a795a8814 /winsup/cygwin/fhandler_socket.cc
parent4abaaac33c73c2658bc0851f6e0ddc2c39a43a81 (diff)
* fhandler_socket.cc (fhandler_socket::signal_secret_event): New
function. * fhandler.h: Declare it. * fhandler_socket.cc (fhandler_socket::create_secret_event): Don't signal secret event immediately. (fhandler_socket::check_peer_secret_event): Do it after peer event was opened. * net.cc (cygwin_connect): Or if socket is non-blocking. (cygwin_accept): Ditto.
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);