summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/net.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r--winsup/cygwin/net.cc21
1 files changed, 9 insertions, 12 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index b6ec47744..bf982b317 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -492,26 +492,23 @@ fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
fd->set_flags (O_RDWR | O_BINARY);
fd->uninterruptible_io (true);
debug_printf ("fd %d, name '%s', soc %p", (int) fd, dev->name, soc);
-#if 0
- /* Same default buffer sizes as on Linux (instead of WinSock default 8K).
- NOT. If the SO_RCVBUF size exceeds 65535(*), and if the socket is
- connected to a remote machine, then duplicating the socket on
- fork/exec fails with WinSock error 10022, WSAEINVAL. Given that,
- there's not any good reason to set the buffer sizes at all. So we
- stick with the defaults. However, an explanation for this weird
- behaviour would be nice. I keep this stuff in the code for later
- generations. Archeological programmers might find it useful.
+ /* Raise default buffer sizes (instead of WinSock default 8K).
+
+ NOTE. If the SO_RCVBUF size exceeds 65535(*), and if the socket is
+ connected to a remote machine, then duplicating the socket on fork/exec
+ fails with WinSock error 10022, WSAEINVAL. An explanation for this
+ weird behaviour would be nice.
(*) Maximum normal TCP window size. Coincidence? */
- int rmem = dev == tcp_dev ? 87380 : 120832;
- int wmem = dev == tcp_dev ? 16384 : 120832;
+ int rmem = 65520;
+ int wmem = 65520;
if (::setsockopt (soc, SOL_SOCKET, SO_RCVBUF, (char *) &rmem, sizeof (int)))
debug_printf ("setsockopt(SO_RCVBUF) failed, %lu", WSAGetLastError ());
if (::setsockopt (soc, SOL_SOCKET, SO_SNDBUF, (char *) &wmem, sizeof (int)))
debug_printf ("setsockopt(SO_SNDBUF) failed, %lu", WSAGetLastError ());
-#endif
+
return true;
}