- Constantine Sapuntzakis: The current implementation will always set
authorDaniel Stenberg <daniel@haxx.se>
Thu, 1 Oct 2009 07:05:07 +0000 (07:05 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 1 Oct 2009 07:05:07 +0000 (07:05 +0000)
  SO_SNDBUF to CURL_WRITE_SIZE even if the SO_SNDBUF starts out larger.  The
  patch doesn't do a setsockopt if SO_SNDBUF is already greater than
  CURL_WRITE_SIZE. This should help folks who have set up their computer with
  large send buffers.

CHANGES
RELEASE-NOTES
lib/connect.c

diff --git a/CHANGES b/CHANGES
index af62b60..d0dbdb1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,13 @@
 
                                   Changelog
 
+Daniel Stenberg (1 Oct 2009)
+- Constantine Sapuntzakis: The current implementation will always set
+  SO_SNDBUF to CURL_WRITE_SIZE even if the SO_SNDBUF starts out larger.  The
+  patch doesn't do a setsockopt if SO_SNDBUF is already greater than
+  CURL_WRITE_SIZE. This should help folks who have set up their computer with
+  large send buffers.
+
 Daniel Stenberg (27 Sep 2009)
 - I introduced a maximum limit for received HTTP headers. It is controlled by
   the define CURL_MAX_HTTP_HEADER which is even exposed in the public header
index 2035a93..b3a1d01 100644 (file)
@@ -33,6 +33,7 @@ This release includes the following bugfixes:
  o libcurl-OpenSSL can load CRL files with more than one certificate inside
  o received cookies without explicit path got saved wrong if the URL had a
    query part
+ o don't shrink SO_SNDBUF on windows for those who have it set large already
 
 This release includes the following known bugs:
 
@@ -43,6 +44,7 @@ advice from friends like these:
 
  Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet,
  Michal Marek, Eric Wong, Guenter Knauf, Peter Sylvester, Daniel Johnson,
- Claes Jakobsson, Sven Anders, Chris Mumford, John P. McCaskey
+ Claes Jakobsson, Sven Anders, Chris Mumford, John P. McCaskey,
+ Constantine Sapuntzakis
 
         Thanks! (and sorry if I forgot to mention someone)
index 2a6b003..aaeee67 100644 (file)
@@ -664,6 +664,13 @@ static void nosigpipe(struct connectdata *conn,
 void Curl_sndbufset(curl_socket_t sockfd)
 {
   int val = CURL_MAX_WRITE_SIZE + 32;
+  int curval = 0;
+  int curlen = sizeof(curval);
+
+  if (getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char *)&curval, &curlen) == 0)
+    if (curval > val)
+      return;
+
   setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (const char *)&val, sizeof(val));
 }
 #endif