gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 61/153: windows: implement send buffer tuning


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 61/153: windows: implement send buffer tuning
Date: Tue, 11 Sep 2018 12:52:12 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit 1ba1dba76a8898d1de4dfbc9f1910a352d8a9dab
Author: Daniel Jelinski <address@hidden>
AuthorDate: Thu Jul 19 14:07:59 2018 +0200

    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
---
 lib/transfer.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/lib/transfer.c b/lib/transfer.c
index 43f567c4f..1d33e861a 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -869,6 +869,22 @@ static CURLcode done_sending(struct connectdata *conn,
   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.
@@ -1020,10 +1036,11 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
                         k->upload_fromhere, /* buffer pointer */
                         k->upload_present,  /* buffer size */
                         &bytes_written);    /* actually sent */
-
     if(result)
       return result;
 
+    win_update_buffer_size(conn->writesockfd);
+
     if(data->set.verbose)
       /* show the data before we change the pointer upload_fromhere */
       Curl_debug(data, CURLINFO_DATA_OUT, k->upload_fromhere,

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]