diff options
author | Egor Duda <deo@logos-m.ru> | 2001-06-20 06:50:13 +0000 |
---|---|---|
committer | Egor Duda <deo@logos-m.ru> | 2001-06-20 06:50:13 +0000 |
commit | ae036f47c54449400fb178008094e20e70488711 (patch) | |
tree | b78bd45aabe39755a80515cb34a2768a795a8814 /winsup/cygwin/fhandler_socket.cc | |
parent | 4abaaac33c73c2658bc0851f6e0ddc2c39a43a81 (diff) | |
download | cygnal-ae036f47c54449400fb178008094e20e70488711.tar.gz cygnal-ae036f47c54449400fb178008094e20e70488711.tar.bz2 cygnal-ae036f47c54449400fb178008094e20e70488711.zip |
* 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.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); |