diff options
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_socket.cc | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 93d5eabee..e7f39dc3c 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,10 @@ 2008-04-16 Corinna Vinschen <corinna@vinschen.de> + * fhandler_socket.cc (fhandler_socket::close): Disable enforced + lingering since the original problem can no longer be reproduced. + +2008-04-16 Corinna Vinschen <corinna@vinschen.de> + * grp.cc (internal_getgroups): Drop local buf. Allocate groups directly using alloca. diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index d25733629..50aaf1f83 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -1460,7 +1460,11 @@ int fhandler_socket::close () { int res = 0; - + /* TODO: CV - 2008-04-16. Lingering disabled. The original problem + could be no longer reproduced on NT4, XP, 2K8. Any return of a + spurious "Connection reset by peer" *could* be caused by disabling + the linger code here... */ +#if 0 /* HACK to allow a graceful shutdown even if shutdown() hasn't been called by the application. Note that this isn't the ultimate solution but it helps in many cases. */ @@ -1469,7 +1473,7 @@ fhandler_socket::close () linger.l_linger = 240; /* secs. default 2MSL value according to MSDN. */ setsockopt (get_socket (), SOL_SOCKET, SO_LINGER, (const char *)&linger, sizeof linger); - +#endif release_events (); while ((res = closesocket (get_socket ())) != 0) { |