summaryrefslogtreecommitdiff
path: root/net-misc/curl
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-02-17 08:06:58 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-02-17 08:06:58 +0000
commit29394d0921808a94a409f01eff49f681651de5d5 (patch)
tree93d18027cb4ea68a3c967602c5793af032180bab /net-misc/curl
parent5987fa693ef880163ebde423615a177cb5bda20e (diff)
gentoo auto-resync : 17:02:2023 - 08:06:58
Diffstat (limited to 'net-misc/curl')
-rw-r--r--net-misc/curl/Manifest9
-rw-r--r--net-misc/curl/curl-7.88.0-r1.ebuild (renamed from net-misc/curl/curl-7.88.0.ebuild)6
-rw-r--r--net-misc/curl/files/curl-7.86.0-noproxy-tailmatch-like-in-7.85.0-and-earlier.patch84
-rw-r--r--net-misc/curl/files/curl-7.86.0-proxy-noproxy-match-comma.patch86
-rw-r--r--net-misc/curl/files/curl-7.86.0-proxy-noproxy-tailmatching.patch66
-rw-r--r--net-misc/curl/files/curl-7.88.0-http2.patch93
-rw-r--r--net-misc/curl/files/curl-7.88.0-test-gnuserv-tls-srp.patch39
-rw-r--r--net-misc/curl/files/curl-7.88.0-test-uninitialised-value.patch30
-rw-r--r--net-misc/curl/files/curl-7.88.0-tests.patch120
9 files changed, 219 insertions, 314 deletions
diff --git a/net-misc/curl/Manifest b/net-misc/curl/Manifest
index 30b34141aa35..12e3e2e27bfe 100644
--- a/net-misc/curl/Manifest
+++ b/net-misc/curl/Manifest
@@ -1,16 +1,13 @@
AUX curl-7.30.0-prefix.patch 880 BLAKE2B 5b7552a8339014221864a585d174b02a96ec7dd7fe8762d331d1981834044f8ec4db64d527a4ded3f5f4cccc86f281576668de092439eb19f5477d5fcf8369cf SHA512 c7cd13b9ccbd12ed01ea121ffece9c23b898a5b34698bae59ae1dd23b1cf2445180b84d80c4a640981f16dba5018df944f405dd5c660addab54ca21e0e673b7f
-AUX curl-7.86.0-noproxy-tailmatch-like-in-7.85.0-and-earlier.patch 3609 BLAKE2B 6f7e80c915d8592b93349d8aade7670f37bf37803ee02130245905636de30a70be51272b2d06392397ffcf76bfda78cfc2fbb671971ab3d18b20677239944544 SHA512 20999f12d5316be5854c9ab09a0f9e887edb7878f157069759c8404d31bfd23db352894c0dca6ce871618d0088f0320ebaa1b6166b54facce0e5faf74600232b
-AUX curl-7.86.0-proxy-noproxy-match-comma.patch 3143 BLAKE2B 1aa8d62e6082601eae9e3ae7690a1e7ddce7f12be4cf9f20010f32aa51cd5b1c4206be0b731935a9ddd45bb5654ceed3cba3eabb6a1b9dc60112052d7e79ffa7 SHA512 1a0c67bdabeb1ea8cba7a0f93c12ea626bdc329bbe8c3978f03cb25a78c74fa3257a36f2ed53c177b3a256bca2c0dd8081bab1536b0670e1ec9c0541ac23fc11
-AUX curl-7.86.0-proxy-noproxy-tailmatching.patch 2302 BLAKE2B c4199bc1eb04c8c69f8c72397ce526df6c2186151f77d5e13551e589712e9032e1a52720bd1b946a1b5b984f49a01b297410f4cf74814a58bf4bf43701435c76 SHA512 aa211a5428cc746d07cfd37571169d59ccc97560a69e7c6d21cc8b4a133182366264470de540e1813eee51b376d9056ec8dd01f8e95957e58a83f33d37db0442
AUX curl-7.87.0-gnutls-openssl-build.patch 1010 BLAKE2B 716760a38a7a61420e3e508f976c14776d5f3313c4305e8c2fcff9af1744bcaab61bae643546d625448cc613933f8a7137a783e6313a53799485f432d8b9791f SHA512 2a94cf409f33683ca53a347a99faec3c51ba05c4f531be4e784401e4ed977d1142b5d5bc153dd2444311cdeafd3c406ae4a27e515b875f978f5402487d177e9a
AUX curl-7.87.0-typecheck-deprecated.patch 2437 BLAKE2B e04b6cf9b9b4073e2d2762f9c0336d35ef58cbc7b754144ea37a8fba73705e035e1b2f5a05987666f2f0f8a34ef0420a7d5977a9202ea5fe026ee536a44a1b0f SHA512 a7abeb4ab1e0381f78da3732c1ab8ab399e7eed1340efe12c6c9038f811b30095c08794b40ec346db27892fea1f6a240d190b6b655981d5262095569bf9ab815
-AUX curl-7.88.0-test-gnuserv-tls-srp.patch 1226 BLAKE2B 73d6738f647b171a4b332b51938a261f9f334a17e3d0f6b4b8669712ae0836b36bfa833513b312b793f65fdcf6e4e88b9bc27f445e8f1fae5193ac6625b07fe5 SHA512 df0217bc657e355c0237f016ba64d1423a959743892fbf5f16871ae400d7cc2dfd857b8cc15260d6cf13bc3689a0e91985ce7c3042917081882bb250e4c8bcfd
-AUX curl-7.88.0-test-uninitialised-value.patch 840 BLAKE2B 9bd2a2dcdeff6fb430e34d93e714f5b8e8c18f9c31298953b07a224fdb2d6e1c494c89bc4d553a31382b3f0a8167d9f40f90a2c3cb4ea8e9692bc41a1dd28a27 SHA512 619dcae5ffa90ea21f1700f4990722a6c508706c4bba295f616691944e2021113247501c9f79ecdf9e7fc3895828cd281847a0ce00f689c417af827d532936f1
+AUX curl-7.88.0-http2.patch 3328 BLAKE2B 86b58fa6ee9c620e7e474c9e5a661b885adbe90172e4f769e503e1911db3664f75e96aead241638a3dabbaf6d393149c5b6b374bf333cb6951c35cae8a4039eb SHA512 7cb11fcbae30c99e0736aa5edf21f042446fc4e6d128c7b9bb3c53cf467e66a03461c1bb9f6e20e1fb64d1223cd9e1b01dfa99a5a3652f1c1748a3e96b795ce0
+AUX curl-7.88.0-tests.patch 3640 BLAKE2B be0f105a0a16df15660404598ff5d227bdaf8b5d3b6f072e16aa489ee3ca4a30775e9b024a6595accabb50657966515e78043dd47bb43c58140d4d2676e48198 SHA512 13e4502929f8bb1366e1587369439ac4560239e1e2a741df6add56bba80bd3d80b3c8f12b9eb1723d7e27693d96aa6e914bced98325a77e96b2a108624d1f835
AUX curl-respect-cflags-3.patch 406 BLAKE2B 1b533144858aff5566150c4a2648ad2e48e8ff29849ae285592edfee4b3332d06e750395dea7190ee6a01d2b5ee2c2c42c10400c2e5defa09963a90a1a10417d SHA512 3219e4e67d534e35012909243fc8d69d58989462db44dd507c502e7aaa299f1d9a01392e2c83797cc2bdb53d503470c5d6e7bf94572a6ccc6e5eafcc0466bc54
DIST curl-7.87.0.tar.xz 2547932 BLAKE2B b272ec928c5ef1728434630d8910f58834327a30570913df9d47921a2810d002bd88b81371005197db857d3a53386420c1e28b1e463e6241d46c1e50fbce0c13 SHA512 aa125991592667280dce3788aabe81487cf8c55b0afc59d675cc30b76055bb7114f5380b4a0e3b6461a8f81bf9812fa26d493a85f7e01d84263d484a0d699ee7
DIST curl-7.87.0.tar.xz.asc 488 BLAKE2B 031d8236b357bd3c519548b181254dc0aea1efc1375738bce04f4f331d35bafe99d1ca394ecf5943ede7cae040854b6d2b478fd305147eb7330f8d50e5d95c96 SHA512 0bcc12bafc4ae50d80128af2cf4bf1a1ec6018ebb8d5b9c49f52b51c0c25acc77e820858965656549ef43c1f923f4e5fe75b0a3523623154b4cfb9dc8a1d76e4
DIST curl-7.88.0.tar.xz 2571564 BLAKE2B 8fae8136a8a52c58b2860b6c3b342d59bb0c9a743f94c3ea3620cbb180f1ebd1310ace17e23d9c4bd2ec4b1dd72777779b2e1fbe66bb47b54a60b02247e3a07d SHA512 2008cbc67694f746b7449f087a19b2a9a4950333d6bac1cdc7d80351aa38d8d9b442087dedbc7b0909a419d3b10f510521c942aac012d04a53c32bdb15dce5f0
DIST curl-7.88.0.tar.xz.asc 488 BLAKE2B 9714e26c1308b036f7b19c909447e20d0c3611b0995845a8fb1a356d74e68027399acaafb69244411787cf2abbcbca446f237ce1277228c33caf0adc97364dbf SHA512 6f3d9a5f8fcec64652f872adf994ff3d0162fba1b483a0e359522173bf29ef3d26eeda7c328207fa1fa974a45e62674a3a8ebec21830ab3981b56851d5804ade
EBUILD curl-7.87.0-r2.ebuild 8660 BLAKE2B ce66897406af36dfd872020b5db67428a65954392393529da1678d0b9dec061d05bf52c7debe03d7dab8c051936ab7634f73dea443e094048cd052c76a0f89cb SHA512 b3a9805fab31995d9162f1bdb6159af9f69532c48c6a966be1b08c8a3c21ac3e7ff7f0513a8c33d2973173e1e5400d6e34abca1aa79581fad178e6a98c375adf
-EBUILD curl-7.88.0.ebuild 8449 BLAKE2B d3aad8194990c02f6a5ac22dc380ef707148e0621cf320038c20caa8cd95b6f5703dddbbcb5161652cd3118a0de5b72dd2cd73baef86a418d59629906f2b1936 SHA512 3cda7f9a7bae19a2d222afb9e8fb0871417d292bf80bfa74f1e6ece1539b343dbbd713c86eb2eaa214bc6c1a5ea066d3cbd778cb804b71511f9f31f55fef1000
+EBUILD curl-7.88.0-r1.ebuild 8414 BLAKE2B 8ad26a35d3485c82e9a6f8e80ffffa036a77d8bb7a6a590553db5bf397470271ee00a26bae321edaab5bf48f9fb4e7c1fba7457dacb0db012a87833ee7170878 SHA512 1ef1fe83d74f1c449e78ade7d3fae538b494f522a64da11657d543b7401c0995d7b647b4107e75d0d41984a33ec3543ebe21f2b593e9619212f115a465db5476
MISC metadata.xml 2289 BLAKE2B a351f315d1913abff2fec9c559b2b74ddc0a60bfb293d20a62e20a2072e820f88295dc88ab32a622855cd962b90b739b0270ba88e097ca6b41c21f7f4f72987b SHA512 45cafa3eac6aaf777de55e025ef64ac039e6d300a760fc86b2eb1b77153f5242181a09082e443e525923e30e804a9ae90e902fb7f252a24214ac88929c3b89fe
diff --git a/net-misc/curl/curl-7.88.0.ebuild b/net-misc/curl/curl-7.88.0-r1.ebuild
index b36a1acba8ac..a95ae998050a 100644
--- a/net-misc/curl/curl-7.88.0.ebuild
+++ b/net-misc/curl/curl-7.88.0-r1.ebuild
@@ -92,8 +92,8 @@ PATCHES=(
"${FILESDIR}"/${PN}-7.30.0-prefix.patch
"${FILESDIR}"/${PN}-respect-cflags-3.patch
- "${FILESDIR}"/${P}-test-gnuserv-tls-srp.patch
- "${FILESDIR}"/${P}-test-uninitialised-value.patch
+ "${FILESDIR}"/${P}-http2.patch
+ "${FILESDIR}"/${P}-tests.patch
)
src_prepare() {
@@ -234,7 +234,7 @@ multilib_src_configure() {
--with-zlib
$(use_with zstd)
)
-
+
# Do not supply a test httpd/caddy/etc
if use test; then
myconf+=(
diff --git a/net-misc/curl/files/curl-7.86.0-noproxy-tailmatch-like-in-7.85.0-and-earlier.patch b/net-misc/curl/files/curl-7.86.0-noproxy-tailmatch-like-in-7.85.0-and-earlier.patch
deleted file mode 100644
index 1f04f22f9b1b..000000000000
--- a/net-misc/curl/files/curl-7.86.0-noproxy-tailmatch-like-in-7.85.0-and-earlier.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-https://github.com/curl/curl/issues/9842
-https://github.com/curl/curl/commit/b1953c1933b369b1217ef0f16053e26da63488c3
-
-From b1953c1933b369b1217ef0f16053e26da63488c3 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Sun, 6 Nov 2022 23:19:51 +0100
-Subject: [PATCH] noproxy: tailmatch like in 7.85.0 and earlier
-
-A regfression in 7.86.0 (via 1e9a538e05c010) made the tailmatch work
-differently than before. This restores the logic to how it used to work:
-
-All names listed in NO_PROXY are tailmatched against the used domain
-name, if the lengths are identical it needs a full match.
-
-Update the docs, update test 1614.
-
-Reported-by: Stuart Henderson
-Fixes #9842
-Closes #9858
----
- docs/libcurl/opts/CURLOPT_NOPROXY.3 | 4 ----
- lib/noproxy.c | 32 +++++++++++++++--------------
- tests/unit/unit1614.c | 3 ++-
- 3 files changed, 19 insertions(+), 20 deletions(-)
-
-diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
-index 5e4c32130431..dc3cf7c10833 100644
---- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
-+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.3
-@@ -40,10 +40,6 @@ list is matched as either a domain which contains the hostname, or the
- hostname itself. For example, "ample.com" would match ample.com, ample.com:80,
- and www.ample.com, but not www.example.com or ample.com.org.
-
--If the name in the \fInoproxy\fP list has a leading period, it is a domain
--match against the provided host name. This way ".example.com" will switch off
--proxy use for both "www.example.com" as well as for "foo.example.com".
--
- Setting the \fInoproxy\fP string to "" (an empty string) will explicitly
- enable the proxy for all host names, even if there is an environment variable
- set for it.
-diff --git a/lib/noproxy.c b/lib/noproxy.c
-index 2832ae166a5b..fb856e4faa72 100644
---- a/lib/noproxy.c
-+++ b/lib/noproxy.c
-@@ -187,22 +187,24 @@ bool Curl_check_noproxy(const char *name, const char *no_proxy)
- tokenlen--;
-
- if(tokenlen && (*token == '.')) {
-- /* A: example.com matches '.example.com'
-- B: www.example.com matches '.example.com'
-- C: nonexample.com DOES NOT match '.example.com'
-- */
-- if((tokenlen - 1) == namelen)
-- /* case A, exact match without leading dot */
-- match = strncasecompare(token + 1, name, namelen);
-- else if(tokenlen < namelen)
-- /* case B, tailmatch with leading dot */
-- match = strncasecompare(token, name + (namelen - tokenlen),
-- tokenlen);
-- /* case C passes through, not a match */
-+ /* ignore leading token dot as well */
-+ token++;
-+ tokenlen--;
- }
-- else
-- match = (tokenlen == namelen) &&
-- strncasecompare(token, name, namelen);
-+ /* A: example.com matches 'example.com'
-+ B: www.example.com matches 'example.com'
-+ C: nonexample.com DOES NOT match 'example.com'
-+ */
-+ if(tokenlen == namelen)
-+ /* case A, exact match */
-+ match = strncasecompare(token, name, namelen);
-+ else if(tokenlen < namelen) {
-+ /* case B, tailmatch domain */
-+ match = (name[namelen - tokenlen - 1] == '.') &&
-+ strncasecompare(token, name + (namelen - tokenlen),
-+ tokenlen);
-+ }
-+ /* case C passes through, not a match */
- break;
- case TYPE_IPV4:
- /* FALLTHROUGH */
diff --git a/net-misc/curl/files/curl-7.86.0-proxy-noproxy-match-comma.patch b/net-misc/curl/files/curl-7.86.0-proxy-noproxy-match-comma.patch
deleted file mode 100644
index 6c8f4067e8d5..000000000000
--- a/net-misc/curl/files/curl-7.86.0-proxy-noproxy-match-comma.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-https://bugs.gentoo.org/878365#c2
-https://github.com/curl/curl/issues/9813
-https://github.com/curl/curl/commit/efc286b7a62af0568fdcbf3c68791c9955182128
-
-From efc286b7a62af0568fdcbf3c68791c9955182128 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Thu, 27 Oct 2022 13:54:27 +0200
-Subject: [PATCH] noproxy: also match with adjacent comma
-
-If the host name is an IP address and the noproxy string contained that
-IP address with a following comma, it would erroneously not match.
-
-Extended test 1614 to verify this combo as well.
-
-Reported-by: Henning Schild
-
-Fixes #9813
-Closes #9814
---- a/lib/noproxy.c
-+++ b/lib/noproxy.c
-@@ -192,18 +192,22 @@ bool Curl_check_noproxy(const char *name, const char *no_proxy)
- /* FALLTHROUGH */
- case TYPE_IPV6: {
- const char *check = token;
-- char *slash = strchr(check, '/');
-+ char *slash;
- unsigned int bits = 0;
- char checkip[128];
-+ if(tokenlen >= sizeof(checkip))
-+ /* this cannot match */
-+ break;
-+ /* copy the check name to a temp buffer */
-+ memcpy(checkip, check, tokenlen);
-+ checkip[tokenlen] = 0;
-+ check = checkip;
-+
-+ slash = strchr(check, '/');
- /* if the slash is part of this token, use it */
-- if(slash && (slash < &check[tokenlen])) {
-+ if(slash) {
- bits = atoi(slash + 1);
-- /* copy the check name to a temp buffer */
-- if(tokenlen >= sizeof(checkip))
-- break;
-- memcpy(checkip, check, tokenlen);
-- checkip[ slash - check ] = 0;
-- check = checkip;
-+ *slash = 0; /* null terminate there */
- }
- if(type == TYPE_IPV6)
- match = Curl_cidr6_match(name, check, bits);
---- a/tests/data/test1614
-+++ b/tests/data/test1614
-@@ -16,7 +16,7 @@ unittest
- proxy
- </features>
- <name>
--cidr comparisons
-+noproxy and cidr comparisons
- </name>
- </client>
- <errorcode>
---- a/tests/unit/unit1614.c
-+++ b/tests/unit/unit1614.c
-@@ -77,6 +77,20 @@ UNITTEST_START
- { NULL, NULL, 0, FALSE} /* end marker */
- };
- struct noproxy list[]= {
-+ { "127.0.0.1", "127.0.0.1,localhost", TRUE},
-+ { "127.0.0.1", "127.0.0.1,localhost,", TRUE},
-+ { "127.0.0.1", "127.0.0.1/8,localhost,", TRUE},
-+ { "127.0.0.1", "127.0.0.1/28,localhost,", TRUE},
-+ { "127.0.0.1", "127.0.0.1/31,localhost,", TRUE},
-+ { "127.0.0.1", "localhost,127.0.0.1", TRUE},
-+ { "127.0.0.1", "localhost,127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1."
-+ "127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1.127."
-+ "0.0.1.127.0.0.1.127.0.0." /* 128 bytes "address" */, FALSE},
-+ { "127.0.0.1", "localhost,127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1."
-+ "127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1.127.0.0.1.127."
-+ "0.0.1.127.0.0.1.127.0.0" /* 127 bytes "address" */, FALSE},
-+ { "localhost", "localhost,127.0.0.1", TRUE},
-+ { "localhost", "127.0.0.1,localhost", TRUE},
- { "foobar", "barfoo", FALSE},
- { "foobar", "foobar", TRUE},
- { "192.168.0.1", "foobar", FALSE},
-
diff --git a/net-misc/curl/files/curl-7.86.0-proxy-noproxy-tailmatching.patch b/net-misc/curl/files/curl-7.86.0-proxy-noproxy-tailmatching.patch
deleted file mode 100644
index 15f5e64c91f3..000000000000
--- a/net-misc/curl/files/curl-7.86.0-proxy-noproxy-tailmatching.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-https://bugs.gentoo.org/878365#c2
-https://github.com/curl/curl/issues/9821
-https://github.com/curl/curl/commit/b830f9ba9e94acf672cd191993ff679fa888838b
-
-From b830f9ba9e94acf672cd191993ff679fa888838b Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Fri, 28 Oct 2022 10:51:49 +0200
-Subject: [PATCH] noproxy: fix tail-matching
-
-Also ignore trailing dots in both host name and comparison pattern.
-
-Regression in 7.86.0 (from 1e9a538e05c0)
-
-Extended test 1614 to verify better.
-
-Reported-by: Henning Schild
-Fixes #9821
-Closes #9822
---- a/lib/noproxy.c
-+++ b/lib/noproxy.c
-@@ -153,9 +153,14 @@ bool Curl_check_noproxy(const char *name, const char *no_proxy)
- }
- else {
- unsigned int address;
-+ namelen = strlen(name);
- if(1 == Curl_inet_pton(AF_INET, name, &address))
- type = TYPE_IPV4;
-- namelen = strlen(name);
-+ else {
-+ /* ignore trailing dots in the host name */
-+ if(name[namelen - 1] == '.')
-+ namelen--;
-+ }
- }
-
- while(*p) {
-@@ -177,12 +182,23 @@ bool Curl_check_noproxy(const char *name, const char *no_proxy)
- if(tokenlen) {
- switch(type) {
- case TYPE_HOST:
-- if(*token == '.') {
-- ++token;
-- --tokenlen;
-- /* tailmatch */
-- match = (tokenlen <= namelen) &&
-- strncasecompare(token, name + (namelen - tokenlen), namelen);
-+ /* ignore trailing dots in the token to check */
-+ if(token[tokenlen - 1] == '.')
-+ tokenlen--;
-+
-+ if(tokenlen && (*token == '.')) {
-+ /* A: example.com matches '.example.com'
-+ B: www.example.com matches '.example.com'
-+ C: nonexample.com DOES NOT match '.example.com'
-+ */
-+ if((tokenlen - 1) == namelen)
-+ /* case A, exact match without leading dot */
-+ match = strncasecompare(token + 1, name, namelen);
-+ else if(tokenlen < namelen)
-+ /* case B, tailmatch with leading dot */
-+ match = strncasecompare(token, name + (namelen - tokenlen),
-+ tokenlen);
-+ /* case C passes through, not a match */
- }
- else
- match = (tokenlen == namelen) &&
diff --git a/net-misc/curl/files/curl-7.88.0-http2.patch b/net-misc/curl/files/curl-7.88.0-http2.patch
new file mode 100644
index 000000000000..49d90e901823
--- /dev/null
+++ b/net-misc/curl/files/curl-7.88.0-http2.patch
@@ -0,0 +1,93 @@
+https://github.com/curl/curl/commit/87ed650d04dc1a6f7944a5d952f7d5b0934a19ac
+Author: Harry Sintonen <sintonen@iki.fi>
+Date: Thu Feb 16 06:26:26 2023 +0200
+
+ http2: set drain on stream end
+
+ Ensure that on_frame_recv() stream end will trigger a read if there is
+ pending data. Without this it could happen that the pending data is
+ never consumed.
+
+ This combined with https://github.com/curl/curl/pull/10529 should fix
+ https://github.com/curl/curl/issues/10525
+
+ Ref: https://github.com/curl/curl/issues/10525
+ Closes #10530
+
+--- a/lib/http2.c
++++ b/lib/http2.c
+@@ -868,6 +868,14 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
+ return NGHTTP2_ERR_CALLBACK_FAILURE;
+ }
+ }
++ if(frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
++ /* Stream has ended. If there is pending data, ensure that read
++ will occur to consume it. */
++ if(!data->state.drain && stream->memlen) {
++ drain_this(cf, data_s);
++ Curl_expire(data, 0, EXPIRE_RUN_NOW);
++ }
++ }
+ break;
+ case NGHTTP2_HEADERS:
+ DEBUGF(LOG_CF(data_s, cf, "[h2sid=%u] recv frame HEADERS", stream_id));
+
+https://github.com/curl/curl/commit/3103de2053ca8cacf9cdbe78764ba6814481709f
+Author: Stefan Eissing <stefan@eissing.org>
+Date: Wed Feb 15 22:11:13 2023 +0100
+
+ http2: buffer/pausedata and output flush fix.
+
+ * do not process pending input data when copying pausedata to the
+ caller
+ * return CURLE_AGAIN if the output buffer could not be completely
+ written out.
+
+ Ref: #10525
+ Closes #10529
+
+--- a/lib/http2.c
++++ b/lib/http2.c
+@@ -467,6 +467,7 @@ static CURLcode flush_output(struct Curl_cfilter *cf,
+ }
+ if((size_t)written < buflen) {
+ Curl_dyn_tail(&ctx->outbuf, buflen - (size_t)written);
++ return CURLE_AGAIN;
+ }
+ else {
+ Curl_dyn_reset(&ctx->outbuf);
+@@ -1790,6 +1791,7 @@ static ssize_t cf_h2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
+
+ stream->pausedata += nread;
+ stream->pauselen -= nread;
++ drain_this(cf, data);
+
+ if(stream->pauselen == 0) {
+ DEBUGF(LOG_CF(data, cf, "[h2sid=%u] Unpaused", stream->stream_id));
+@@ -1798,18 +1800,6 @@ static ssize_t cf_h2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
+
+ stream->pausedata = NULL;
+ stream->pauselen = 0;
+-
+- /* When NGHTTP2_ERR_PAUSE is returned from
+- data_source_read_callback, we might not process DATA frame
+- fully. Calling nghttp2_session_mem_recv() again will
+- continue to process DATA frame, but if there is no incoming
+- frames, then we have to call it again with 0-length data.
+- Without this, on_stream_close callback will not be called,
+- and stream could be hanged. */
+- if(h2_process_pending_input(cf, data, err) != 0) {
+- nread = -1;
+- goto out;
+- }
+ }
+ DEBUGF(LOG_CF(data, cf, "[h2sid=%u] recv: returns unpaused %zd bytes",
+ stream->stream_id, nread));
+@@ -1933,6 +1923,7 @@ static ssize_t cf_h2_recv(struct Curl_cfilter *cf, struct Curl_easy *data,
+ drained_transfer(cf, data);
+ }
+
++ *err = CURLE_OK;
+ nread = retlen;
+ DEBUGF(LOG_CF(data, cf, "[h2sid=%u] cf_h2_recv -> %zd",
+ stream->stream_id, nread));
diff --git a/net-misc/curl/files/curl-7.88.0-test-gnuserv-tls-srp.patch b/net-misc/curl/files/curl-7.88.0-test-gnuserv-tls-srp.patch
deleted file mode 100644
index fb9e89fd48cb..000000000000
--- a/net-misc/curl/files/curl-7.88.0-test-gnuserv-tls-srp.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-https://github.com/curl/curl/commit/2fdc1d816ebf3c77f43068103bec1b3a3767881a.patch
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Wed, 15 Feb 2023 15:04:07 +0100
-Subject: [PATCH] tests: make sure gnuserv-tls has SRP support before using it
-
-Reported-by: fundawang on github
-Fixes #10522
-Closes #10524
---- a/tests/runtests.pl
-+++ b/tests/runtests.pl
-@@ -5382,7 +5382,7 @@ sub startservers {
- elsif($what eq "httptls") {
- if(!$httptlssrv) {
- # for now, we can't run http TLS-EXT tests without gnutls-serv
-- return "no gnutls-serv";
-+ return "no gnutls-serv (with SRP support)";
- }
- if($torture && $run{'httptls'} &&
- !responsive_httptls_server($verbose, "IPv4")) {
---- a/tests/sshhelp.pm
-+++ b/tests/sshhelp.pm
-@@ -408,7 +408,16 @@ sub find_sshkeygen {
- # Find httptlssrv (gnutls-serv) and return canonical filename
- #
- sub find_httptlssrv {
-- return find_exe_file_hpath($httptlssrvexe);
-+ my $p = find_exe_file_hpath($httptlssrvexe);
-+ my @o = `$p -l`;
-+ my $found;
-+ for(@o) {
-+ if(/Key exchange: SRP/) {
-+ $found = 1;
-+ last;
-+ }
-+ }
-+ return $p if($found);
- }
-
-
diff --git a/net-misc/curl/files/curl-7.88.0-test-uninitialised-value.patch b/net-misc/curl/files/curl-7.88.0-test-uninitialised-value.patch
deleted file mode 100644
index c5ce31d4e427..000000000000
--- a/net-misc/curl/files/curl-7.88.0-test-uninitialised-value.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-https://github.com/curl/curl/commit/f1d09231adfc695d15995b9ef2c8c6e568c28091
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Wed, 15 Feb 2023 13:03:21 +0100
-Subject: [PATCH] runtests: fix "uninitialized value $port"
-
-by using a more appropriate variable
-
-Reported-by: fundawang on github
-Fixes #10518
-Closes #10520
---- a/tests/runtests.pl
-+++ b/tests/runtests.pl
-@@ -1740,7 +1740,7 @@ sub runhttpserver {
- }
-
- # where is it?
-- my $port;
-+ my $port = 0;
- if(!$port_or_path) {
- $port = $port_or_path = pidfromfile($portfile);
- }
-@@ -1758,7 +1758,7 @@ sub runhttpserver {
- $pid2 = $pid3;
-
- if($verbose) {
-- logmsg "RUN: $srvrname server is on PID $httppid port $port\n";
-+ logmsg "RUN: $srvrname server is on PID $httppid port $port_or_path\n";
- }
-
- return ($httppid, $pid2, $port);
diff --git a/net-misc/curl/files/curl-7.88.0-tests.patch b/net-misc/curl/files/curl-7.88.0-tests.patch
new file mode 100644
index 000000000000..81131dc6bc64
--- /dev/null
+++ b/net-misc/curl/files/curl-7.88.0-tests.patch
@@ -0,0 +1,120 @@
+https://github.com/curl/curl/commit/f1d09231adfc695d15995b9ef2c8c6e568c28091
+Author: Stefan Eissing <stefan@eissing.org>
+Date: Tue Feb 14 14:29:13 2023 +0100
+
+ tests: make the telnet server shut down a socket gracefully
+
+ - test 1452 failed occasionally with ECONNRESET errnos in curl when the
+ server closed the connection in an unclean state.
+
+ Closes #10509
+
+--- a/tests/negtelnetserver.py
++++ b/tests/negtelnetserver.py
+@@ -29,7 +29,9 @@ from __future__ import (absolute_import, division, print_function,
+ import argparse
+ import logging
+ import os
++import socket
+ import sys
++import time
+
+ from util import ClosingFileHandler
+
+@@ -90,7 +92,7 @@ class NegotiatingTelnetHandler(socketserver.BaseRequestHandler):
+ neg.send_wont("NAWS")
+
+ # Get the data passed through the negotiator
+- data = neg.recv(1024)
++ data = neg.recv(4*1024)
+ log.debug("Incoming data: %r", data)
+
+ if VERIFIED_REQ.encode('utf-8') in data:
+@@ -109,6 +111,12 @@ class NegotiatingTelnetHandler(socketserver.BaseRequestHandler):
+ log.debug("Sending %r", response_data)
+ self.request.sendall(response_data)
+
++ # put some effort into making a clean socket shutdown
++ # that does not give the client ECONNRESET
++ self.request.settimeout(0.1)
++ self.request.recv(4*1024)
++ self.request.shutdown(socket.SHUT_RDWR)
++
+ except IOError:
+ log.exception("IOError hit during request")
+
+
+https://github.com/curl/curl/commit/2fdc1d816ebf3c77f43068103bec1b3a3767881a
+Author: Daniel Stenberg <daniel@haxx.se>
+Date: Wed Feb 15 15:04:07 2023 +0100
+
+ tests: make sure gnuserv-tls has SRP support before using it
+
+ Reported-by: fundawang on github
+ Fixes #10522
+ Closes #10524
+
+--- a/tests/runtests.pl
++++ b/tests/runtests.pl
+@@ -5382,7 +5382,7 @@ sub startservers {
+ elsif($what eq "httptls") {
+ if(!$httptlssrv) {
+ # for now, we can't run http TLS-EXT tests without gnutls-serv
+- return "no gnutls-serv";
++ return "no gnutls-serv (with SRP support)";
+ }
+ if($torture && $run{'httptls'} &&
+ !responsive_httptls_server($verbose, "IPv4")) {
+--- a/tests/sshhelp.pm
++++ b/tests/sshhelp.pm
+@@ -408,7 +408,16 @@ sub find_sshkeygen {
+ # Find httptlssrv (gnutls-serv) and return canonical filename
+ #
+ sub find_httptlssrv {
+- return find_exe_file_hpath($httptlssrvexe);
++ my $p = find_exe_file_hpath($httptlssrvexe);
++ my @o = `$p -l`;
++ my $found;
++ for(@o) {
++ if(/Key exchange: SRP/) {
++ $found = 1;
++ last;
++ }
++ }
++ return $p if($found);
+ }
+
+
+
+https://github.com/curl/curl/commit/79d0b3c0c0bb00829f10ec139dbf3823c249ae72
+Author: Daniel Stenberg <daniel@haxx.se>
+Date: Wed Feb 15 13:03:21 2023 +0100
+
+ runtests: fix "uninitialized value $port"
+
+ by using a more appropriate variable
+
+ Reported-by: fundawang on github
+ Fixes #10518
+ Closes #10520
+
+--- a/tests/runtests.pl
++++ b/tests/runtests.pl
+@@ -1740,7 +1740,7 @@ sub runhttpserver {
+ }
+
+ # where is it?
+- my $port;
++ my $port = 0;
+ if(!$port_or_path) {
+ $port = $port_or_path = pidfromfile($portfile);
+ }
+@@ -1758,7 +1758,7 @@ sub runhttpserver {
+ $pid2 = $pid3;
+
+ if($verbose) {
+- logmsg "RUN: $srvrname server is on PID $httppid port $port\n";
++ logmsg "RUN: $srvrname server is on PID $httppid port $port_or_path\n";
+ }
+
+ return ($httppid, $pid2, $port);