* 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>
|
2003-06-02 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* fhandler_socket.cc: Include cygthread.h.
|
* 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 };
|
sock_thread_data cd = { get_socket (), (sockaddr *) &sin, &namelen, -1 };
|
||||||
cygthread *thread = new cygthread (connect_thread, &cd, "connect");
|
cygthread *thread = new cygthread (connect_thread, &cd, "connect");
|
||||||
HANDLE wait_events[2] = { *thread, signal_arrived };
|
HANDLE waitevt = CreateEvent(&sec_none_nih, FALSE, TRUE, NULL);
|
||||||
if (WaitForMultipleObjects(2, wait_events, FALSE, INFINITE)
|
interrupted = thread->detach (waitevt);
|
||||||
!= WAIT_OBJECT_0)
|
CloseHandle (waitevt);
|
||||||
{
|
if (!interrupted)
|
||||||
/* Signal arrived */
|
res = cd.ret;
|
||||||
thread->terminate_thread ();
|
|
||||||
interrupted = TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* connect returned normally */
|
|
||||||
res = cd.ret;
|
|
||||||
thread->detach ();
|
|
||||||
}
|
|
||||||
delete thread;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
res = ::connect (get_socket (), (sockaddr *) &sin, namelen);
|
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 };
|
sock_thread_data ad = { get_socket (), peer, len, -1 };
|
||||||
cygthread *thread = new cygthread (accept_thread, &ad, "accept");
|
cygthread *thread = new cygthread (accept_thread, &ad, "accept");
|
||||||
HANDLE wait_events[2] = { *thread, signal_arrived };
|
HANDLE waitevt = CreateEvent(&sec_none_nih, FALSE, TRUE, NULL);
|
||||||
if (WaitForMultipleObjects(2, wait_events, FALSE, INFINITE)
|
bool signalled = thread->detach (waitevt);
|
||||||
!= WAIT_OBJECT_0)
|
CloseHandle (waitevt);
|
||||||
{
|
if (signalled)
|
||||||
/* Signal arrived */
|
return -1;
|
||||||
thread->terminate_thread ();
|
|
||||||
delete thread;
|
|
||||||
set_errno (EINTR);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
/* accept returned normally */
|
|
||||||
res = ad.ret;
|
res = ad.ret;
|
||||||
thread->detach ();
|
|
||||||
delete thread;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
res = ::accept (get_socket (), peer, len);
|
res = ::accept (get_socket (), peer, len);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user