diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix index 5dd523d6fa6b..9ed56ee1ec56 100644 --- a/pkgs/tools/networking/curl/default.nix +++ b/pkgs/tools/networking/curl/default.nix @@ -18,11 +18,11 @@ assert scpSupport -> libssh2 != null; assert c-aresSupport -> c-ares != null; stdenv.mkDerivation rec { - name = "curl-7.51.0"; + name = "curl-7.52.1"; src = fetchurl { url = "http://curl.haxx.se/download/${name}.tar.bz2"; - sha256 = "1pldg1d8606p4q83k8fcp61kfcsbphln22mycw7h7r87i42410kz"; + sha256 = "16rqhyzlpnivifin8n7l2fr9ihay9v2nw2drsniinb6bcykqaqfi"; }; outputs = [ "bin" "dev" "out" "man" "devdoc" ]; @@ -42,8 +42,6 @@ stdenv.mkDerivation rec { optional sslSupport openssl ++ optional scpSupport libssh2; - patches = stdenv.lib.optional http2Support ./fix-http2-window-size.patch; - # for the second line see http://curl.haxx.se/mail/tracker-2014-03/0087.html preConfigure = '' sed -e 's|/usr/bin|/no-such-path|g' -i.bak configure diff --git a/pkgs/tools/networking/curl/fix-http2-window-size.patch b/pkgs/tools/networking/curl/fix-http2-window-size.patch deleted file mode 100644 index 6fac3e1b42ac..000000000000 --- a/pkgs/tools/networking/curl/fix-http2-window-size.patch +++ /dev/null @@ -1,88 +0,0 @@ -From a4d888857ede39a8e2aa5f961048c6362d3a5377 Mon Sep 17 00:00:00 2001 -From: Jay Satiro -Date: Wed, 16 Nov 2016 02:55:30 -0500 -Subject: [PATCH] http2: Use huge HTTP/2 windows - -- Improve performance by using a huge HTTP/2 window size. - -Bug: https://github.com/curl/curl/issues/1102 -Reported-by: afrind@users.noreply.github.com -Assisted-by: Tatsuhiro Tsujikawa ---- - docs/TODO | 8 -------- - lib/http2.c | 15 +++++++++++++-- - 2 files changed, 13 insertions(+), 10 deletions(-) - -diff --git a/docs/TODO b/docs/TODO -index c3bc4eb..99c610f 100644 ---- a/docs/TODO -+++ b/docs/TODO -@@ -63,7 +63,6 @@ - 5.1 Better persistency for HTTP 1.0 - 5.2 support FF3 sqlite cookie files - 5.3 Rearrange request header order -- 5.4 Use huge HTTP/2 windows - 5.5 auth= in URLs - 5.6 Refuse "downgrade" redirects - 5.7 Brotli compression -@@ -528,13 +527,6 @@ This is not detailed in any FTP specification. - headers use a default value so only headers that need to be moved have to be - specified. - --5.4 Use huge HTTP/2 windows -- -- We're currently using nghttp2's default window size which is terribly small -- (64K). This becomes a bottle neck over high bandwidth networks. We should -- instead make the window size to be very big (512MB?) as we really don't do -- much flow control anyway. -- - 5.5 auth= in URLs - - Add the ability to specify the preferred authentication mechanism to use by -diff --git a/lib/http2.c b/lib/http2.c -index 6720984..202ab1b 100644 ---- a/lib/http2.c -+++ b/lib/http2.c -@@ -59,6 +59,8 @@ - #define nghttp2_session_callbacks_set_error_callback(x,y) - #endif - -+#define HTTP2_HUGE_WINDOW_SIZE (1 << 30) -+ - /* - * Curl_http2_init_state() is called when the easy handle is created and - * allows for HTTP/2 specific init of state. -@@ -965,7 +967,7 @@ static ssize_t data_source_read_callback(nghttp2_session *session, - */ - static nghttp2_settings_entry settings[] = { - { NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 100 }, -- { NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, NGHTTP2_INITIAL_WINDOW_SIZE }, -+ { NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, HTTP2_HUGE_WINDOW_SIZE }, - }; - - #define H2_BUFSIZE 32768 -@@ -2031,7 +2033,8 @@ CURLcode Curl_http2_switched(struct connectdata *conn, - else { - /* stream ID is unknown at this point */ - stream->stream_id = -1; -- rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE, NULL, 0); -+ rv = nghttp2_submit_settings(httpc->h2, NGHTTP2_FLAG_NONE, settings, -+ sizeof(settings) / sizeof(settings[0])); - if(rv != 0) { - failf(data, "nghttp2_submit_settings() failed: %s(%d)", - nghttp2_strerror(rv), rv); -@@ -2039,6 +2042,14 @@ CURLcode Curl_http2_switched(struct connectdata *conn, - } - } - -+ rv = nghttp2_session_set_local_window_size(httpc->h2, NGHTTP2_FLAG_NONE, 0, -+ HTTP2_HUGE_WINDOW_SIZE); -+ if(rv != 0) { -+ failf(data, "nghttp2_session_set_local_window_size() failed: %s(%d)", -+ nghttp2_strerror(rv), rv); -+ return CURLE_HTTP2; -+ } -+ - /* we are going to copy mem to httpc->inbuf. This is required since - mem is part of buffer pointed by stream->mem, and callbacks - called by nghttp2_session_mem_recv() will write stream specific