From e2155b2695dcacb62dcf51fa2b69fb7a54b15986 Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Sep 16 2021 10:26:16 +0000 Subject: fix regression in http2 implementation ... introduced in the last release --- diff --git a/0002-curl-7.79.0-http2-fixup.patch b/0002-curl-7.79.0-http2-fixup.patch new file mode 100644 index 0000000..66b6bc6 --- /dev/null +++ b/0002-curl-7.79.0-http2-fixup.patch @@ -0,0 +1,53 @@ +From 130f84913b372f27e8db065a614cd34beda3ba14 Mon Sep 17 00:00:00 2001 +From: Daniel Stenberg +Date: Thu, 16 Sep 2021 08:50:54 +0200 +Subject: [PATCH] Curl_http2_setup: don't change connection data on repeat + invokes + +Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved +transfer oriented inits to before the check but also erroneously moved a +few connection oriented ones, which causes problems. + +Reported-by: Evangelos Foutras +Fixes #7730 +Closes #7731 + +Upstream-commit: 901804ef95777b8e735a55b77f8dd630a58c575b +Signed-off-by: Kamil Dudka +--- + lib/http2.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/lib/http2.c b/lib/http2.c +index a3de607c7..6d63f4363 100644 +--- a/lib/http2.c ++++ b/lib/http2.c +@@ -2221,12 +2221,6 @@ CURLcode Curl_http2_setup(struct Curl_easy *data, + stream->mem = data->state.buffer; + stream->len = data->set.buffer_size; + +- httpc->inbuflen = 0; +- httpc->nread_inbuf = 0; +- +- httpc->pause_stream_id = 0; +- httpc->drain_total = 0; +- + multi_connchanged(data->multi); + /* below this point only connection related inits are done, which only needs + to be done once per connection */ +@@ -2252,6 +2246,12 @@ CURLcode Curl_http2_setup(struct Curl_easy *data, + conn->httpversion = 20; + conn->bundle->multiuse = BUNDLE_MULTIPLEX; + ++ httpc->inbuflen = 0; ++ httpc->nread_inbuf = 0; ++ ++ httpc->pause_stream_id = 0; ++ httpc->drain_total = 0; ++ + infof(data, "Connection state changed (HTTP/2 confirmed)"); + + return CURLE_OK; +-- +2.31.1 + diff --git a/curl.spec b/curl.spec index 5118350..51d1517 100644 --- a/curl.spec +++ b/curl.spec @@ -1,7 +1,7 @@ Summary: A utility for getting files from remote servers (FTP, HTTP, and others) Name: curl Version: 7.79.0 -Release: 3%{?dist} +Release: 4%{?dist} License: MIT Source0: https://curl.se/download/%{name}-%{version}.tar.xz Source1: https://curl.se/download/%{name}-%{version}.tar.xz.asc @@ -13,6 +13,9 @@ Source2: mykey.asc # make SCP/SFTP tests work with openssh-8.7p1 Patch1: 0001-curl-7.79.0-ssh-tests.patch +# fix regression in http2 implementation introduced in the last release +Patch2: 0002-curl-7.79.0-http2-fixup.patch + # patch making libcurl multilib ready Patch101: 0101-curl-7.32.0-multilib.patch @@ -187,6 +190,7 @@ be installed. # upstream patches %patch1 -p1 +%patch2 -p1 # Fedora patches %patch101 -p1 @@ -372,6 +376,9 @@ rm -f ${RPM_BUILD_ROOT}%{_libdir}/libcurl.la %{_libdir}/libcurl.so.4.[0-9].[0-9].minimal %changelog +* Thu Sep 16 2021 Kamil Dudka - 7.79.0-4 +- fix regression in http2 implementation introduced in the last release + * Thu Sep 16 2021 Sahana Prasad - 7.79.0-3 - Rebuilt with OpenSSL 3.0.0