summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_socket.cc8
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)
{