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:
-rw-r--r--winsup/cygwin/net.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index 2ff2148f0..fd903b112 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -517,8 +517,6 @@ cygwin_getprotobynumber (int number)
bool
fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
{
- int size;
-
fd = build_fh_dev (*dev);
if (!fd.isopen ())
return false;
@@ -607,6 +605,13 @@ fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
Mbits/sec with a 65535 send buffer. We want this to be a multiple
of 1k, but since 64k breaks WSADuplicateSocket we use 63Kb.
+ NOTE 4. Tests with iperf uncover a problem in setting the SO_RCVBUF
+ and SO_SNDBUF sizes. Windows is using autotuning since Windows Vista.
+ Manually setting SO_RCVBUF/SO_SNDBUF disables autotuning and leads to
+ inferior send/recv performance in scenarios with larger RTTs, as is
+ basically standard when accessing the internet. For a discussion,
+ see https://cygwin.com/ml/cygwin-patches/2017-q1/msg00010.html.
+
(*) Maximum normal TCP window size. Coincidence? */
#ifdef __x86_64__
((fhandler_socket *) fd)->rmem () = 212992;
@@ -615,6 +620,9 @@ fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
((fhandler_socket *) fd)->rmem () = 64512;
((fhandler_socket *) fd)->wmem () = 64512;
#endif
+#if 0 /* See NOTE 4 above. */
+ int size;
+
if (::setsockopt (soc, SOL_SOCKET, SO_RCVBUF,
(char *) &((fhandler_socket *) fd)->rmem (), sizeof (int)))
{
@@ -633,7 +641,7 @@ fdsock (cygheap_fdmanip& fd, const device *dev, SOCKET soc)
(size = sizeof (int), &size)))
system_printf ("getsockopt(SO_SNDBUF) failed, %u", WSAGetLastError ());
}
-
+#endif
/* A unique ID is necessary to recognize fhandler entries which are
duplicated by dup(2) or fork(2). This is used in BSD flock calls
to identify the descriptor. */