mirror of
https://github.com/curl/curl.git
synced 2024-12-03 06:20:31 +08:00
windows: implement send buffer tuning
Significantly enhances upload performance on modern Windows versions. Bug: https://curl.haxx.se/mail/lib-2018-07/0080.html Closes #2762 Fixes #2224
This commit is contained in:
parent
298d2565e2
commit
1ba1dba76a
@ -869,6 +869,22 @@ static CURLcode done_sending(struct connectdata *conn,
|
|||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(WIN32) && defined(SIO_IDEAL_SEND_BACKLOG_QUERY)
|
||||||
|
static void win_update_buffer_size(curl_socket_t sockfd)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
ULONG ideal;
|
||||||
|
DWORD ideallen;
|
||||||
|
result = WSAIoctl(sockfd, SIO_IDEAL_SEND_BACKLOG_QUERY, 0, 0,
|
||||||
|
&ideal, sizeof(ideal), &ideallen, 0, 0);
|
||||||
|
if(result == 0) {
|
||||||
|
setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF,
|
||||||
|
(const char *)&ideal, sizeof(ideal));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define win_update_buffer_size(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send data to upload to the server, when the socket is writable.
|
* Send data to upload to the server, when the socket is writable.
|
||||||
@ -1020,10 +1036,11 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
|
|||||||
k->upload_fromhere, /* buffer pointer */
|
k->upload_fromhere, /* buffer pointer */
|
||||||
k->upload_present, /* buffer size */
|
k->upload_present, /* buffer size */
|
||||||
&bytes_written); /* actually sent */
|
&bytes_written); /* actually sent */
|
||||||
|
|
||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
win_update_buffer_size(conn->writesockfd);
|
||||||
|
|
||||||
if(data->set.verbose)
|
if(data->set.verbose)
|
||||||
/* show the data before we change the pointer upload_fromhere */
|
/* show the data before we change the pointer upload_fromhere */
|
||||||
Curl_debug(data, CURLINFO_DATA_OUT, k->upload_fromhere,
|
Curl_debug(data, CURLINFO_DATA_OUT, k->upload_fromhere,
|
||||||
|
Loading…
Reference in New Issue
Block a user