- 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.
This commit is contained in:
Daniel Stenberg 2009-10-01 07:05:07 +00:00
Родитель 4271f44a9e
Коммит 5ed274d0b7
3 изменённых файлов: 17 добавлений и 1 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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)

Просмотреть файл

@ -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