diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2009-06-30 10:36:40 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2009-06-30 10:36:40 +0000 |
commit | 4a83803381f3ce1838f5650e7096d9006f673fdd (patch) | |
tree | 90132897a2d186a4cf83d214d319bfc2476ed8ee /winsup/cygwin/net.cc | |
parent | 9adef9ffefbf7f7fc25274bc2774f81c65e72444 (diff) | |
download | cygnal-4a83803381f3ce1838f5650e7096d9006f673fdd.tar.gz cygnal-4a83803381f3ce1838f5650e7096d9006f673fdd.tar.bz2 cygnal-4a83803381f3ce1838f5650e7096d9006f673fdd.zip |
* 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.cc | 21 |
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; } |