From 5ed274d0b7483085d5d8642daddace93b41316e7 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 1 Oct 2009 07:05:07 +0000 Subject: [PATCH] - 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. --- CHANGES | 7 +++++++ RELEASE-NOTES | 4 +++- lib/connect.c | 7 +++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index af62b6066..d0dbdb1b4 100644 --- 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 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 2035a93bf..b3a1d013b 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) diff --git a/lib/connect.c b/lib/connect.c index 2a6b003e0..aaeee6762 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -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