diff options
-rw-r--r-- | winsup/cygwin/ChangeLog | 8 | ||||
-rw-r--r-- | 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 <corinna@vinschen.de> - * (fhandler_socket::dup): Revert previous change. + * fhandler_socket.cc (fhandler_socket::close): Add error handling. + +2001-10-30 Corinna Vinschen <corinna@vinschen.de> + + * fhandler_socket.cc (fhandler_socket::dup): Revert previous change. 2001-10-30 Christopher Faylor <cgf@redhat.com> @@ -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 <corinna@vinschen.de> 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 (); |