public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/curl] rawhide: new upstream release - 8.21.0
@ 2026-06-24 12:11 Jan Macku
0 siblings, 0 replies; only message in thread
From: Jan Macku @ 2026-06-24 12:11 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/curl
Branch : rawhide
Commit : 236bce29ea867023aa8f6172e70e7346d679ca6a
Author : Jan Macku <jamacku@redhat.com>
Date : 2026-06-24T13:54:34+02:00
Stats : +7/-372 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/curl/c/236bce29ea867023aa8f6172e70e7346d679ca6a?branch=rawhide
Log:
new upstream release - 8.21.0
Resolves: #2492081
---
diff --git a/0001-curl-8.21.0~rc3-multi-xfers_really_alive.patch b/0001-curl-8.21.0~rc3-multi-xfers_really_alive.patch
deleted file mode 100644
index 35682da..0000000
--- a/0001-curl-8.21.0~rc3-multi-xfers_really_alive.patch
+++ /dev/null
@@ -1,365 +0,0 @@
-From 6a92e7cf03e819b84b3d96ae7934cccbb1a6563b Mon Sep 17 00:00:00 2001
-From: Stefan Eissing <stefan@eissing.org>
-Date: Wed, 17 Jun 2026 14:20:02 +0200
-Subject: [PATCH] multi: xfers_really_alive
-
-Yes, we were counting the "live" transfers before, but were they
-*really* alive?
-
-When determining to add the wakeup socket to fdset/waitfds etc, we
-should only do that when the multi handle is actually processing
-transfers. Other wise, the application could wait on the wakeup socket
-forever.
-
-For this, we counted `multi->xfers_alive` (e.g. the "running" number
-returned by `curl_multi_perform()`). This was almost correct.
-
-The problem is that added easy handles are counted as "alive" right away
-on the addition. But the processing has not started yet. They did not
-trigger any DNS resolves or opened any sockets yet.
-
-Add two fields in multi and easy handle:
-
-* `multi->xfers_really_alive`: counts the "alive" transfers that have
- passed `MSTATE_INIT` (at least once)
-* `data->state.really_alive`: to track if the transfer has been counted
-
-Add test 2412 to check that adding transfers without perform will not
-trigger the wakeup socket to be added.
-
-Fixes #22050
-Reported-by: Bryan Henderson
-Closes #22066
-
-(cherry picked from commit f0be41763542f68dce344beee8a5c5e5b858e6d1)
----
- lib/multi.c | 36 ++++++++++++---
- lib/multihandle.h | 2 +
- lib/urldata.h | 6 +--
- tests/data/Makefile.am | 2 +-
- tests/data/test2412 | 50 ++++++++++++++++++++
- tests/libtest/Makefile.inc | 1 +
- tests/libtest/lib2412.c | 95 ++++++++++++++++++++++++++++++++++++++
- tests/libtest/lib530.c | 3 ++
- 8 files changed, 182 insertions(+), 13 deletions(-)
- create mode 100644 tests/data/test2412
- create mode 100644 tests/libtest/lib2412.c
-
-diff --git a/lib/multi.c b/lib/multi.c
-index d0fa68ab4c..d6ae111d8e 100644
---- a/lib/multi.c
-+++ b/lib/multi.c
-@@ -531,6 +531,8 @@ CURLMcode curl_multi_add_handle(CURLM *m, CURL *curl)
-
- /* set the easy handle */
- multistate(data, MSTATE_INIT);
-+ /* not yet passed INIT state */
-+ data->state.really_alive = FALSE;
-
- #ifdef USE_LIBPSL
- /* Do the same for PSL. */
-@@ -570,12 +572,6 @@ CURLMcode curl_multi_add_handle(CURLM *m, CURL *curl)
- data->set.server_response_timeout;
- multi->admin->set.no_signal = data->set.no_signal;
-
-- mresult = multi_assess_wakeup(multi);
-- if(mresult) {
-- failf(data, "error enabling wakeup listening: %d", mresult);
-- return mresult;
-- }
--
- CURL_TRC_M(data, "added to multi, mid=%u, running=%u, total=%u",
- data->mid, Curl_multi_xfers_running(multi),
- Curl_uint32_tbl_count(&multi->xfers));
-@@ -851,6 +847,12 @@ CURLMcode curl_multi_remove_handle(CURLM *m, CURL *curl)
- /* If in `msgsent`, it was deducted from `multi->xfers_alive` already. */
- if(!Curl_uint32_bset_contains(&multi->msgsent, data->mid))
- --multi->xfers_alive;
-+ if(data->state.really_alive) {
-+ data->state.really_alive = FALSE;
-+ --multi->xfers_really_alive;
-+ if(!multi->xfers_really_alive)
-+ (void)multi_assess_wakeup(multi);
-+ }
-
- Curl_wildcard_dtor(&data->wildcard);
-
-@@ -1151,7 +1153,9 @@ CURLMcode Curl_multi_pollset(struct Curl_easy *data,
- /* The admin handle always listens on the wakeup socket when there
- * are transfers alive. */
- if(data->multi && (data == data->multi->admin) &&
-- data->multi->xfers_alive) {
-+ data->multi->xfers_really_alive) {
-+ CURL_TRC_M(data, "adding wakeup, %u xfers really alive",
-+ data->multi->xfers_really_alive);
- result = Curl_pollset_add_in(data, ps, data->multi->wakeup_pair[0]);
- }
- #endif
-@@ -2459,6 +2463,12 @@ static void handle_completed(struct Curl_multi *multi,
- Curl_uint32_bset_remove(&multi->dirty, data->mid);
- Curl_uint32_bset_remove(&multi->pending, data->mid);
- Curl_uint32_bset_add(&multi->msgsent, data->mid);
-+ if(data->state.really_alive) {
-+ data->state.really_alive = FALSE;
-+ --multi->xfers_really_alive;
-+ if(!multi->xfers_really_alive)
-+ (void)multi_assess_wakeup(multi);
-+ }
- --multi->xfers_alive;
- if(!multi->xfers_alive)
- multi_assess_wakeup(multi);
-@@ -2466,6 +2476,18 @@ static void handle_completed(struct Curl_multi *multi,
-
- static CURLMcode multistate_init(struct Curl_easy *data, CURLcode *result)
- {
-+ if(!data->state.really_alive) {
-+ data->state.really_alive = TRUE;
-+ ++data->multi->xfers_really_alive;
-+ if(data->multi->xfers_really_alive == 1) {
-+ CURLMcode mresult = multi_assess_wakeup(data->multi);
-+ if(mresult) {
-+ failf(data, "error enabling wakeup listening: %d", mresult);
-+ return mresult;
-+ }
-+ }
-+ }
-+
- *result = Curl_pretransfer(data);
- if(*result)
- return CURLM_OK;
-diff --git a/lib/multihandle.h b/lib/multihandle.h
-index c5cdfbe82e..19dd2ffcdf 100644
---- a/lib/multihandle.h
-+++ b/lib/multihandle.h
-@@ -85,6 +85,8 @@ struct Curl_multi {
-
- unsigned int xfers_alive; /* amount of added transfers that have
- not yet reached COMPLETE state */
-+ unsigned int xfers_really_alive; /* amount of added transfers that have
-+ passed INIT state but are not COMPLETE yet */
- curl_off_t xfers_total_ever; /* total of added transfers, ever. */
- struct uint32_tbl xfers; /* transfers added to this multi */
- /* Each transfer's mid may be present in at most one of these */
-diff --git a/lib/urldata.h b/lib/urldata.h
-index 232364fcf3..d4d336d8db 100644
---- a/lib/urldata.h
-+++ b/lib/urldata.h
-@@ -704,11 +704,7 @@ struct UrlState {
- uint8_t httpreq; /* Curl_HttpReq; what kind of HTTP request (if any)
- is this */
-
-- /* when curl_easy_perform() is called, the multi handle is "owned" by
-- the easy handle so curl_easy_cleanup() on such an easy handle will
-- also close the multi handle! */
-- BIT(multi_owned_by_easy);
--
-+ BIT(really_alive); /* transfer is really alive in multi, passed INIT */
- BIT(this_is_a_follow); /* this is a followed Location: request */
- BIT(refused_stream); /* this was refused, try again */
- BIT(errorbuf); /* Set to TRUE if the error buffer is already filled in.
-diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
-index 0d5277d55b..676d49f4fd 100644
---- a/tests/data/Makefile.am
-+++ b/tests/data/Makefile.am
-@@ -261,7 +261,7 @@ test2300 test2301 test2302 test2303 test2304 test2306 test2307 test2308 \
- test2309 test2310 \
- \
- test2400 test2401 test2402 test2403 test2404 test2405 test2406 test2407 \
--test2408 test2409 test2410 test2411 \
-+test2408 test2409 test2410 test2411 test2412 \
- \
- test2500 test2501 test2502 test2503 test2504 test2505 test2506 \
- \
-diff --git a/tests/data/test2412 b/tests/data/test2412
-new file mode 100644
-index 0000000000..e0320e2ce4
---- /dev/null
-+++ b/tests/data/test2412
-@@ -0,0 +1,50 @@
-+<?xml version="1.0" encoding="US-ASCII"?>
-+<testcase>
-+<info>
-+<keywords>
-+multi
-+</keywords>
-+</info>
-+
-+# Server-side
-+<reply>
-+<data nocheck="yes">
-+HTTP/1.1 200 OK
-+Date: Tue, 09 Nov 2010 14:49:00 GMT
-+Server: test-server/fake
-+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
-+ETag: "21025-dc7-39462498"
-+Accept-Ranges: bytes
-+Content-Length: 6007
-+Connection: close
-+Content-Type: text/html
-+Funny-head: yesyes
-+
-+-foo-
-+%repeat[1000 x foobar]%
-+</data>
-+</reply>
-+
-+# Client-side
-+<client>
-+<features>
-+wakeup
-+</features>
-+<server>
-+http
-+</server>
-+<tool>
-+lib%TESTNUMBER
-+</tool>
-+<name>
-+checking curl_multi_fdset on nothing to do
-+</name>
-+<command>
-+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
-+</command>
-+</client>
-+
-+# Verify data after the test has been "shot"
-+<verify>
-+</verify>
-+</testcase>
-diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
-index 98c9939994..bec648542b 100644
---- a/tests/libtest/Makefile.inc
-+++ b/tests/libtest/Makefile.inc
-@@ -115,6 +115,7 @@ TESTS_C = \
- lib2023.c lib2032.c lib2082.c \
- lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c \
- lib2402.c lib2404.c lib2405.c \
-+ lib2412.c \
- lib2502.c lib2504.c lib2505.c lib2506.c \
- lib2700.c \
- lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c \
-diff --git a/tests/libtest/lib2412.c b/tests/libtest/lib2412.c
-new file mode 100644
-index 0000000000..79d49a2d76
---- /dev/null
-+++ b/tests/libtest/lib2412.c
-@@ -0,0 +1,95 @@
-+/***************************************************************************
-+ * _ _ ____ _
-+ * Project ___| | | | _ \| |
-+ * / __| | | | |_) | |
-+ * | (__| |_| | _ <| |___
-+ * \___|\___/|_| \_\_____|
-+ *
-+ * Copyright (C) Dmitry Karpov <dkarpov1970@gmail.com>
-+ *
-+ * This software is licensed as described in the file COPYING, which
-+ * you should have received as part of this distribution. The terms
-+ * are also available at https://curl.se/docs/copyright.html.
-+ *
-+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
-+ * copies of the Software, and permit persons to whom the Software is
-+ * furnished to do so, under the terms of the COPYING file.
-+ *
-+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-+ * KIND, either express or implied.
-+ *
-+ * SPDX-License-Identifier: curl
-+ *
-+ ***************************************************************************/
-+
-+#include "first.h"
-+#include "testtrace.h"
-+
-+static CURLcode test_lib2412(const char *URL)
-+{
-+ CURLcode result = CURLE_OK;
-+ CURLM *multi = NULL;
-+ CURL *easy = NULL;
-+ CURLMcode rc;
-+ fd_set readFdSet, writeFdSet, exceptFdSet;
-+ int maxFd;
-+
-+ (void)URL;
-+ global_init(CURL_GLOBAL_ALL);
-+
-+ multi = curl_multi_init();
-+ if(!multi) {
-+ curl_mfprintf(stderr, "curl_multi_init() failed\n");
-+ result = TEST_ERR_MAJOR_BAD;
-+ goto test_cleanup;
-+ }
-+
-+ easy = curl_easy_init();
-+ if(!easy) {
-+ curl_mfprintf(stderr, "curl_easy_init() failed\n");
-+ result = TEST_ERR_MAJOR_BAD;
-+ goto test_cleanup;
-+ }
-+ debug_config.nohex = TRUE;
-+ debug_config.tracetime = TRUE;
-+ easy_setopt(easy, CURLOPT_DEBUGDATA, &debug_config);
-+ easy_setopt(easy, CURLOPT_DEBUGFUNCTION, libtest_debug_cb);
-+ easy_setopt(easy, CURLOPT_VERBOSE, 1L);
-+
-+ rc = curl_multi_add_handle(multi, easy);
-+ if(rc) {
-+ curl_mfprintf(stderr, "curl_multi_add_handle() failed: %d\n", rc);
-+ result = TEST_ERR_MAJOR_BAD;
-+ goto test_cleanup;
-+ }
-+
-+ FD_ZERO(&readFdSet);
-+ FD_ZERO(&writeFdSet);
-+ FD_ZERO(&exceptFdSet);
-+ maxFd = -1;
-+ rc = curl_multi_fdset(multi, &readFdSet, &writeFdSet, &exceptFdSet,
-+ &maxFd);
-+ if(rc) {
-+ curl_mfprintf(stderr, "curl_multi_fdset() failed: %d\n", rc);
-+ result = TEST_ERR_MAJOR_BAD;
-+ goto test_cleanup;
-+ }
-+
-+ if(maxFd == -1)
-+ curl_mfprintf(stderr, "There are no file descriptors to wait for\n");
-+ else {
-+ curl_mfprintf(stderr, "libcurl supplied a file descriptor to "
-+ "wait for (maxFd=%d). Waiting now ...\n", maxFd);
-+ result = TEST_ERR_FAILURE;
-+ }
-+
-+test_cleanup:
-+ if(easy) {
-+ curl_multi_remove_handle(multi, easy);
-+ curl_easy_cleanup(easy);
-+ }
-+ if(multi)
-+ curl_multi_cleanup(multi);
-+ curl_global_cleanup();
-+ return result;
-+}
-diff --git a/tests/libtest/lib530.c b/tests/libtest/lib530.c
-index d4c894d1d0..bddb857be0 100644
---- a/tests/libtest/lib530.c
-+++ b/tests/libtest/lib530.c
-@@ -29,6 +29,7 @@
- */
-
- #include "first.h"
-+#include "testtrace.h"
-
- static struct t530_ctx {
- int socket_calls;
-@@ -300,6 +301,8 @@ static CURLcode testone(const char *URL, int timer_fail_at, int socket_fail_at)
- easy_setopt(curl, CURLOPT_URL, URL);
-
- /* go verbose */
-+ easy_setopt(curl, CURLOPT_DEBUGDATA, &debug_config);
-+ easy_setopt(curl, CURLOPT_DEBUGFUNCTION, libtest_debug_cb);
- easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-
- multi_init(multi);
---
-2.54.0
-
diff --git a/curl.spec b/curl.spec
index db4151e..de8312d 100644
--- a/curl.spec
+++ b/curl.spec
@@ -12,8 +12,8 @@
Summary: A utility for getting files from remote servers (FTP, HTTP, and others)
Name: curl
-Version: 8.21.0~rc3
-Release: 3%{?dist}
+Version: 8.21.0
+Release: 1%{?dist}
License: curl
Source0: https://curl.se/download/%{name}-%{version_no_tilde}.tar.xz
Source1: https://curl.se/download/%{name}-%{version_no_tilde}.tar.xz.asc
@@ -22,9 +22,6 @@ Source1: https://curl.se/download/%{name}-%{version_no_tilde}.tar.xz.asc
# which points to the GPG key as of April 7th 2016 of https://daniel.haxx.se/mykey.asc
Source2: mykey.asc
-# fix multi_fdset must not report only the wakeup socket (#2460719)
-Patch001: 0001-curl-8.21.0~rc3-multi-xfers_really_alive.patch
-
# patch making libcurl multilib ready
Patch101: 0101-curl-7.32.0-multilib.patch
@@ -468,6 +465,9 @@ rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/wcurl.1*
%{_libdir}/libcurl.so.4.[0-9].[0-9].minimal
%changelog
+* Wed Jun 24 2026 Jan Macku <jamacku@redhat.com> - 8.21.0-1
+- new upstream release
+
* Thu Jun 18 2026 Yaakov Selkowitz <yselkowi@redhat.com> - 8.21.0~rc3-3
- Rebuilt for openssl 4.0
diff --git a/sources b/sources
index d6ff2f4..053610e 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (curl-8.21.0-rc3.tar.xz.asc) = 254301bfcc737cfc32c94afbb4b6e43ae85fb393b6c5c4e9cb699f9f761475ec1f278e3f210d56bf83ad443e2e025b32c7f3b974151d85bef905e0a1a9244baf
-SHA512 (curl-8.21.0-rc3.tar.xz) = 722615361ee60bed9f10ec80e7af5e150dbe478f79b5d5008d98061eb60f7a269bc6ea6a9567cd5e612ce16e1f00c812ecff3ac848446e617a6206160efeac79
+SHA512 (curl-8.21.0.tar.xz.asc) = bb860d59a7117b0a484c06be80f305897af2b2f6d6c64b763b20e71073d8c36f74c3de85c1e449e65ead832903369b76ee0afc382932e3d9a1cc7253f00afb69
+SHA512 (curl-8.21.0.tar.xz) = 5f7c646e5a3d4d3d8b8a3675adfa29c266a3148599d510d24f91c82d6ff064bfafce420af01522f8be973019619f3eee5e970398fa79be168b77f697c52bf8e5
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-06-24 12:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-24 12:11 [rpms/curl] rawhide: new upstream release - 8.21.0 Jan Macku
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox