* fhandler_socket.cc (fhandler_socket::connect): Simplify previous
patch. (fhandler_socket::accept): Ditto.
This commit is contained in:
parent
8e13bd144d
commit
dfe7d28850
@ -1,3 +1,9 @@
|
||||
2003-06-02 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* fhandler_socket.cc (fhandler_socket::connect): Simplify previous
|
||||
patch.
|
||||
(fhandler_socket::accept): Ditto.
|
||||
|
||||
2003-06-02 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* fhandler_socket.cc: Include cygthread.h.
|
||||
|
@ -534,21 +534,11 @@ fhandler_socket::connect (const struct sockaddr *name, int namelen)
|
||||
{
|
||||
sock_thread_data cd = { get_socket (), (sockaddr *) &sin, &namelen, -1 };
|
||||
cygthread *thread = new cygthread (connect_thread, &cd, "connect");
|
||||
HANDLE wait_events[2] = { *thread, signal_arrived };
|
||||
if (WaitForMultipleObjects(2, wait_events, FALSE, INFINITE)
|
||||
!= WAIT_OBJECT_0)
|
||||
{
|
||||
/* Signal arrived */
|
||||
thread->terminate_thread ();
|
||||
interrupted = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* connect returned normally */
|
||||
res = cd.ret;
|
||||
thread->detach ();
|
||||
}
|
||||
delete thread;
|
||||
HANDLE waitevt = CreateEvent(&sec_none_nih, FALSE, TRUE, NULL);
|
||||
interrupted = thread->detach (waitevt);
|
||||
CloseHandle (waitevt);
|
||||
if (!interrupted)
|
||||
res = cd.ret;
|
||||
}
|
||||
else
|
||||
res = ::connect (get_socket (), (sockaddr *) &sin, namelen);
|
||||
@ -652,20 +642,12 @@ fhandler_socket::accept (struct sockaddr *peer, int *len)
|
||||
{
|
||||
sock_thread_data ad = { get_socket (), peer, len, -1 };
|
||||
cygthread *thread = new cygthread (accept_thread, &ad, "accept");
|
||||
HANDLE wait_events[2] = { *thread, signal_arrived };
|
||||
if (WaitForMultipleObjects(2, wait_events, FALSE, INFINITE)
|
||||
!= WAIT_OBJECT_0)
|
||||
{
|
||||
/* Signal arrived */
|
||||
thread->terminate_thread ();
|
||||
delete thread;
|
||||
set_errno (EINTR);
|
||||
return -1;
|
||||
}
|
||||
/* accept returned normally */
|
||||
HANDLE waitevt = CreateEvent(&sec_none_nih, FALSE, TRUE, NULL);
|
||||
bool signalled = thread->detach (waitevt);
|
||||
CloseHandle (waitevt);
|
||||
if (signalled)
|
||||
return -1;
|
||||
res = ad.ret;
|
||||
thread->detach ();
|
||||
delete thread;
|
||||
}
|
||||
else
|
||||
res = ::accept (get_socket (), peer, len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user