* 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.
This commit is contained in:
Egor Duda
2001-06-20 06:50:13 +00:00
parent 4abaaac33c
commit ae036f47c5
4 changed files with 44 additions and 15 deletions

View File

@ -103,14 +103,18 @@ 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 ()
{
@ -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);