From 05230a4a2907989b8d11e5ff9aa707dec1bbb38f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 30 Oct 2001 11:48:36 +0000 Subject: [PATCH] * fhandler_socket.cc (fhandler_socket::close): Add error handling. Fixed ChangeLog entries. --- winsup/cygwin/ChangeLog | 8 +++++++- winsup/cygwin/fhandler_socket.cc | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 063ab3c1f..0fc1db1ff 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,6 +1,10 @@ 2001-10-30 Corinna Vinschen - * (fhandler_socket::dup): Revert previous change. + * fhandler_socket.cc (fhandler_socket::close): Add error handling. + +2001-10-30 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::dup): Revert previous change. 2001-10-30 Christopher Faylor @@ -10,6 +14,8 @@ more debugging output. (fhandler_socket::dup): Allocate new space for prot_info_ptr for duplicated entry. + (fhandler_socket::close): Loop closesocket() as long as WSAEWOULDBLOCK + is returned. * syscalls.cc (stat_worker): Always delete fh if it has been created. 2001-10-29 Corinna Vinschen diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 638611876..95793b4ab 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -289,9 +289,14 @@ fhandler_socket::close () setsockopt (get_socket (), SOL_SOCKET, SO_LINGER, (const char *)&linger, sizeof linger); - while (closesocket (get_socket ()) + while ((res = closesocket (get_socket ())) && WSAGetLastError () == WSAEWOULDBLOCK) continue; + if (res) + { + set_winsock_errno (); + res = -1; + } close_secret_event ();