Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-06-30 14:36:40 +0400
committerCorinna Vinschen <corinna@vinschen.de>2009-06-30 14:36:40 +0400
commit4a83803381f3ce1838f5650e7096d9006f673fdd (patch)
tree90132897a2d186a4cf83d214d319bfc2476ed8ee /winsup/cygwin/net.cc
parent9adef9ffefbf7f7fc25274bc2774f81c65e72444 (diff)
* net.cc (fdsock): Set default socket buffer sizes to 65520. Change
comment accordingly. * fhandler_socket.cc (fhandler_socket::send_internal): Set maximum send size to 65520 as well.
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;
}