public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jan Macku <jamacku@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/curl] rawhide: new upstream release - 8.22.0~rc2
Date: Fri, 21 Aug 2026 10:07:56 GMT [thread overview]
Message-ID: <178730687678.1.7242511612545488164.rpms-curl-8928f5be2060@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/curl
Branch : rawhide
Commit : 8928f5be206017aa7a82ed4a2a3d894fe76a9057
Author : Jan Macku <jamacku@redhat.com>
Date : 2026-08-21T11:21:49+02:00
Stats : +9/-361 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/curl/c/8928f5be206017aa7a82ed4a2a3d894fe76a9057?branch=rawhide
Log:
new upstream release - 8.22.0~rc2
---
diff --git a/0001-curl-8.21.0-lib-add-multi_wakeup_internal.patch b/0001-curl-8.21.0-lib-add-multi_wakeup_internal.patch
deleted file mode 100644
index a3fa19f..0000000
--- a/0001-curl-8.21.0-lib-add-multi_wakeup_internal.patch
+++ /dev/null
@@ -1,343 +0,0 @@
-From 57811ff4ebbc490dd58c2477f5cc3604eb79368e Mon Sep 17 00:00:00 2001
-From: Stefan Eissing <stefan@eissing.org>
-Date: Wed, 8 Jul 2026 10:34:51 +0200
-Subject: [PATCH] lib: add multi_wakeup_internal
-
-For threaded resolving, added an additional socket/eventfd pair to the
-multi handle for notifications from threads. The original "double use"
-of the standard wakeup pair did lead to regressions for apps.
-
-The API definition of curl_multi_poll/wait/wakeup is pretty tight
-regarding what effects what and adding notifications on top of that
-broke what apps perceived to be the contract.
-
-Fixes #22272
-Reported-by: Sergei Zimmerman
-Closes #22274
-
-(cherry picked from commit 009fd378e8f01c97ebe67a14a41a06d56430f3df)
----
- lib/asyn-thrdd.c | 8 +++---
- lib/multi.c | 36 ++++++++++++++++++++++----
- lib/multihandle.h | 13 +++++++++-
- lib/multiif.h | 4 +++
- tests/data/Makefile.am | 2 +-
- tests/data/test2414 | 30 +++++++++++++++++++++
- tests/libtest/Makefile.inc | 2 +-
- tests/libtest/lib2414.c | 53 ++++++++++++++++++++++++++++++++++++++
- 8 files changed, 136 insertions(+), 12 deletions(-)
- create mode 100644 tests/data/test2414
- create mode 100644 tests/libtest/lib2414.c
-
-diff --git a/lib/asyn-thrdd.c b/lib/asyn-thrdd.c
-index aeadec11a4..90f91ff998 100644
---- a/lib/asyn-thrdd.c
-+++ b/lib/asyn-thrdd.c
-@@ -407,7 +407,7 @@ static void async_thrdd_item_process(void *arg)
-
- #endif /* HAVE_GETADDRINFO */
-
--#ifdef ENABLE_WAKEUP
-+#ifdef ENABLE_INTERNAL_WAKEUP
- static void async_thrdd_event(const struct curl_thrdq *tqueue,
- Curl_thrdq_event ev,
- void *user_data)
-@@ -416,7 +416,7 @@ static void async_thrdd_event(const struct curl_thrdq *tqueue,
- (void)tqueue;
- switch(ev) {
- case CURL_THRDQ_EV_ITEM_DONE:
-- (void)curl_multi_wakeup(multi);
-+ Curl_multi_wakeup_internal(multi);
- break;
- default:
- break;
-@@ -663,7 +663,7 @@ CURLcode Curl_async_pollset(struct Curl_easy *data,
- #endif
-
- if(!async->done) {
--#ifndef ENABLE_WAKEUP
-+#ifndef ENABLE_INTERNAL_WAKEUP
- timediff_t stutter_ms, elapsed_ms;
- elapsed_ms = curlx_ptimediff_ms(Curl_pgrs_now(data), &async->start);
- if(elapsed_ms < 3)
-@@ -706,7 +706,7 @@ CURLcode Curl_async_take_result(struct Curl_easy *data,
- if(thrdd->rr.channel)
- (void)Curl_ares_perform(thrdd->rr.channel, 0);
- #endif
--#ifndef ENABLE_WAKEUP
-+#ifndef ENABLE_INTERNAL_WAKEUP
- Curl_async_thrdd_multi_process(data->multi);
- #endif
-
-diff --git a/lib/multi.c b/lib/multi.c
-index d6ae111d8e..1ae679565e 100644
---- a/lib/multi.c
-+++ b/lib/multi.c
-@@ -268,6 +268,10 @@ struct Curl_multi *Curl_multi_handle(uint32_t xfer_table_size,
- multi->wakeup_pair[0] = CURL_SOCKET_BAD;
- multi->wakeup_pair[1] = CURL_SOCKET_BAD;
- #endif
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+ multi->wakeup_internal[0] = CURL_SOCKET_BAD;
-+ multi->wakeup_internal[1] = CURL_SOCKET_BAD;
-+#endif
-
- if(Curl_mntfy_resize(multi) ||
- Curl_uint32_bset_resize(&multi->process, xfer_table_size) ||
-@@ -315,6 +319,10 @@ struct Curl_multi *Curl_multi_handle(uint32_t xfer_table_size,
- if(Curl_wakeup_init(multi->wakeup_pair, TRUE) < 0)
- goto error;
- #endif
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+ if(Curl_wakeup_init(multi->wakeup_internal, TRUE) < 0)
-+ goto error;
-+#endif
-
- if(Curl_probeipv6(multi))
- goto error;
-@@ -360,6 +368,9 @@ error:
- #ifdef ENABLE_WAKEUP
- Curl_wakeup_destroy(multi->wakeup_pair);
- #endif
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+ Curl_wakeup_destroy(multi->wakeup_internal);
-+#endif
-
- curlx_free(multi);
- return NULL;
-@@ -395,7 +406,7 @@ bool Curl_is_connecting(struct Curl_easy *data)
-
- static CURLMcode multi_assess_wakeup(struct Curl_multi *multi)
- {
--#ifdef ENABLE_WAKEUP
-+#ifdef ENABLE_INTERNAL_WAKEUP
- if(multi->socket_cb)
- return Curl_multi_ev_assess_xfer(multi, multi->admin);
- #else
-@@ -1149,14 +1160,14 @@ CURLMcode Curl_multi_pollset(struct Curl_easy *data,
- CURLcode result = CURLE_OK;
-
- Curl_pollset_reset(ps);
--#ifdef ENABLE_WAKEUP
-+#ifdef ENABLE_INTERNAL_WAKEUP
- /* The admin handle always listens on the wakeup socket when there
- * are transfers alive. */
- if(data->multi && (data == data->multi->admin) &&
- 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]);
-+ result = Curl_pollset_add_in(data, ps, data->multi->wakeup_internal[0]);
- }
- #endif
- /* If the transfer has no connection, this is fine. Happens when
-@@ -1714,6 +1725,18 @@ CURLMcode curl_multi_wakeup(CURLM *m)
- return mresult;
- }
-
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+void Curl_multi_wakeup_internal(struct Curl_multi *multi)
-+{
-+ /* This is expected to be invocable from another thread which
-+ * does NOT outlive the multi handle. Check for sanity. */
-+ if(GOOD_MULTI_HANDLE(multi))
-+ Curl_wakeup_signal(multi->wakeup_internal);
-+ else
-+ DEBUGASSERT(0);
-+}
-+#endif
-+
- /*
- * multi_ischanged() is called
- *
-@@ -2740,10 +2763,10 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
- Curl_uint32_bset_remove(&multi->dirty, data->mid);
-
- if(data == multi->admin) {
--#ifdef ENABLE_WAKEUP
-+#ifdef ENABLE_INTERNAL_WAKEUP
- /* Consume any pending wakeup signals before processing.
- * This is necessary for event based processing. See #21547 */
-- (void)Curl_wakeup_consume(multi->wakeup_pair, TRUE);
-+ (void)Curl_wakeup_consume(multi->wakeup_internal, TRUE);
- #endif
- #ifdef USE_RESOLV_THREADED
- Curl_async_thrdd_multi_process(multi);
-@@ -3051,6 +3074,9 @@ CURLMcode curl_multi_cleanup(CURLM *m)
- #ifdef ENABLE_WAKEUP
- Curl_wakeup_destroy(multi->wakeup_pair);
- #endif
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+ Curl_wakeup_destroy(multi->wakeup_internal);
-+#endif
-
- multi_xfer_bufs_free(multi);
- Curl_mntfy_cleanup(multi);
-diff --git a/lib/multihandle.h b/lib/multihandle.h
-index 19dd2ffcdf..e9bbfaea90 100644
---- a/lib/multihandle.h
-+++ b/lib/multihandle.h
-@@ -73,6 +73,11 @@ typedef enum {
- #if !defined(CURL_DISABLE_SOCKETPAIR) && !defined(USE_WINSOCK)
- #define ENABLE_WAKEUP
- #endif
-+#if !defined(CURL_DISABLE_SOCKETPAIR) && \
-+ defined(USE_RESOLV_THREADED) && \
-+ !defined(USE_WINSOCK)
-+#define ENABLE_INTERNAL_WAKEUP
-+#endif
-
- /* value for MAXIMUM CONCURRENT STREAMS upper limit */
- #define INITIAL_MAX_CONCURRENT_STREAMS ((1U << 31) - 1)
-@@ -168,7 +173,13 @@ struct Curl_multi {
- #ifdef ENABLE_WAKEUP
- curl_socket_t wakeup_pair[2]; /* eventfd()/pipe()/socketpair() used for
- wakeup 0 is used for read, 1 is used
-- for write */
-+ for write. Used by curl_multi_wakeup() */
-+#endif
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+ curl_socket_t wakeup_internal[2]; /* eventfd()/pipe()/socketpair() used for
-+ wakeup 0 is used for read, 1 is used
-+ for write. Used for internal wakeups,
-+ e.g. threaded resolver. */
- #endif
- unsigned int max_concurrent_streams;
- unsigned int maxconnects; /* if >0, a fixed limit of the maximum number of
-diff --git a/lib/multiif.h b/lib/multiif.h
-index 039db269e0..920bf0e917 100644
---- a/lib/multiif.h
-+++ b/lib/multiif.h
-@@ -164,4 +164,8 @@ void Curl_multi_clear_dirty(struct Curl_easy *data);
-
- void Curl_multi_set_now(struct Curl_multi *multi);
-
-+#ifdef ENABLE_INTERNAL_WAKEUP
-+void Curl_multi_wakeup_internal(struct Curl_multi *multi);
-+#endif
-+
- #endif /* HEADER_CURL_MULTIIF_H */
-diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
-index 9fb1720f7c..69bfdc9134 100644
---- a/tests/data/Makefile.am
-+++ b/tests/data/Makefile.am
-@@ -263,7 +263,7 @@ test2300 test2301 test2302 test2303 test2304 test2306 test2307 test2308 \
- test2309 test2310 test2311 \
- \
- test2400 test2401 test2402 test2403 test2404 test2405 test2406 test2407 \
--test2408 test2409 test2410 test2411 test2412 test2413 \
-+test2408 test2409 test2410 test2411 test2412 test2413 test2414 \
- \
- test2500 test2501 test2502 test2503 test2504 test2505 test2506 \
- \
-diff --git a/tests/data/test2414 b/tests/data/test2414
-new file mode 100644
-index 0000000000..197beffe8f
---- /dev/null
-+++ b/tests/data/test2414
-@@ -0,0 +1,30 @@
-+<?xml version="1.0" encoding="US-ASCII"?>
-+<testcase>
-+<info>
-+<keywords>
-+multi
-+wakeup
-+</keywords>
-+</info>
-+
-+# Client-side
-+<client>
-+<features>
-+wakeup
-+</features>
-+<server>
-+</server>
-+<tool>
-+lib%TESTNUMBER
-+</tool>
-+<name>
-+wakeup, perform and poll needs to exit
-+</name>
-+<command>
-+</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 bec648542b..8d97421f4e 100644
---- a/tests/libtest/Makefile.inc
-+++ b/tests/libtest/Makefile.inc
-@@ -115,7 +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 \
-+ lib2412.c lib2414.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/lib2414.c b/tests/libtest/lib2414.c
-new file mode 100644
-index 0000000000..e04dff3de7
---- /dev/null
-+++ b/tests/libtest/lib2414.c
-@@ -0,0 +1,53 @@
-+/***************************************************************************
-+ * _ _ ____ _
-+ * 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_lib2414(const char *URL)
-+{
-+ CURLM *multi = NULL;
-+ CURLcode result = CURLE_OK;
-+ int running;
-+
-+ (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;
-+ }
-+
-+ curl_multi_wakeup(multi);
-+ curl_multi_perform(multi, &running);
-+ curl_multi_poll(multi, NULL, 0, INT_MAX, NULL);
-+
-+test_cleanup:
-+ if(multi)
-+ curl_multi_cleanup(multi);
-+ curl_global_cleanup();
-+ return result;
-+}
---
-2.55.0
-
diff --git a/curl.spec b/curl.spec
index f30c790..d187f83 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
-Release: 5%{?dist}
+Version: 8.22.0~rc2
+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
-# add multi_wakeup_internal for threaded resolving (#2509107)
-Patch001: 0001-curl-8.21.0-lib-add-multi_wakeup_internal.patch
-
# patch making libcurl multilib ready
Patch101: 0101-curl-7.32.0-multilib.patch
@@ -244,13 +241,6 @@ be installed.
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%autosetup -n %{name}-%{version_no_tilde} -p1
-# disable test 1801
-# <https://github.com/bagder/curl/commit/21e82bd6#commitcomment-12226582>
-printf "1801\n" >>tests/data/DISABLED
-
-# temporary disable test 1085 it passes on Fedora but fails on ELN
-printf "1085\n" >>tests/data/DISABLED
-
# test 303: raise timeout from 8s to 20s so it doesn't expire during TLS
# handshake under valgrind
%ifarch x86_64
@@ -275,9 +265,6 @@ sed -e 's|NUM_THREADS 1000$|NUM_THREADS 256|' \
-i tests/libtest/lib3026.c
%endif
-# adapt test 323 for updated OpenSSL
-sed -e 's|^35$|35,52|' -i tests/data/test323
-
# use localhost6 instead of ip6-localhost in the curl test-suite
(
# avoid glob expansion in the trace output of `bash -x`
@@ -461,7 +448,7 @@ rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/wcurl.1*
%{_libdir}/libcurl.so.4.[0-9].[0-9]
%files -n libcurl-devel
-%doc docs/examples/*.c docs/examples/Makefile.example docs/INTERNALS.md
+%doc docs/examples/*.c docs/examples/Makefile.example docs/DEPENDENCIES.md
%doc docs/CONTRIBUTE.md docs/libcurl/ABI.md
%{_bindir}/curl-config*
%{_includedir}/curl
@@ -477,6 +464,10 @@ rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/wcurl.1*
%{_libdir}/libcurl.so.4.[0-9].[0-9].minimal
%changelog
+* Thu Aug 20 2026 Jan Macku <jamacku@redhat.com> - 8.22.0~rc2-1
+- new upstream release candidate
+- re-enable some previously disabled tests
+
* Thu Aug 06 2026 Jan Macku <jamacku@redhat.com> - 8.21.0-5
- add multi_wakeup_internal for threaded resolving (#2509107)
diff --git a/sources b/sources
index 053610e..a329f66 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (curl-8.21.0.tar.xz.asc) = bb860d59a7117b0a484c06be80f305897af2b2f6d6c64b763b20e71073d8c36f74c3de85c1e449e65ead832903369b76ee0afc382932e3d9a1cc7253f00afb69
-SHA512 (curl-8.21.0.tar.xz) = 5f7c646e5a3d4d3d8b8a3675adfa29c266a3148599d510d24f91c82d6ff064bfafce420af01522f8be973019619f3eee5e970398fa79be168b77f697c52bf8e5
+SHA512 (curl-8.22.0-rc2.tar.xz.asc) = 7fb855e86f62ec0092377eb2db76c17f849b98240ef8a5309c554a2cfa8e1d3b533e943af3c1f6c437b2790f2023794564edfe5482b93894b97f12bb2f718ba9
+SHA512 (curl-8.22.0-rc2.tar.xz) = e97ebb3d296b4b90a031cee3970eb2b1fd8906cd1b17e4ef073edbd99d63d0d278d32583d74df83792e70838f7385e8f087827cb2db0c800daed2c1ae3a30674
reply other threads:[~2026-08-21 10:07 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178730687678.1.7242511612545488164.rpms-curl-8928f5be2060@fedoraproject.org \
--to=jamacku@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox