]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
9 days agolib: reader/writer fixes
Stefan Eissing [Tue, 21 Jul 2026 08:30:42 +0000 (10:30 +0200)] 
lib: reader/writer fixes

- clear writer paused bit when destroying writer stack
- remove the reader paused bit that turned out not to be a good idea

follow-up to b41c28e70af47e1

Closes #22361

9 days agocf-dns: resolve on filter demand
Stefan Eissing [Wed, 15 Jul 2026 15:21:04 +0000 (17:21 +0200)] 
cf-dns: resolve on filter demand

Use separate dns cache entries for addresses (A+AAAA) and HTTPS-RR
results. That makes also "negative" results independent of each other.
Dns cache entries, once in use, can no longer be modified safely, as
concurrent use would require each access then to be done under lock. By
using separate entries, we can update a HTTPS entry without needing to
duplicate an existing address entry for the same host+port.

Connection filters can now ask for DNS resolves. This works at any time
during connection setup and while connect is going on.
`Curl_conn_dns_add_addr_resolve()` and
`Curl_conn_dns_add_https_resolve()` are used for that. They check if the
resolve is already ongoing, can be added to a resolve not started yet
or, as last resort, create a new filter instance and add it to the
connection (it's easier to add more filters than making the same filter
handle multiple resolves. Since DNS filters are removed once the
connection is established, there is no later penalty).

HTTPS-RR queries are added by the `HTTPS-CONNECT`, `SSL` and `QUIC`
filters. The latter will only do that when ECH is configured and
supported. That means we trigger HTTPS-RR queries only when the results
matter.

Add test_22_06 for ALPN influenced via HTTPS-RR when tunneling through a
proxy. This did not work before.

Adjust test2100 to use https: as the previous http: URL no longer
triggers HTTPS-RR resolves.

Closes #22216

10 days agouint-spbset: reused empty chunks
Stefan Eissing [Fri, 17 Jul 2026 12:10:03 +0000 (14:10 +0200)] 
uint-spbset: reused empty chunks

Fix chunk allocations by reusing existing empty chunks when a new offset
is needed. Before this fix, spbsets would only ever grow with added
numbers outside the range of existing chunks.

Closes #22340

10 days agohttp: stop dropping large custom headers
Graham Campbell [Thu, 16 Jul 2026 12:29:44 +0000 (13:29 +0100)] 
http: stop dropping large custom headers

Closes #22336

10 days agohttp: avoid length underflow in Curl_compareheader
Graham Campbell [Thu, 16 Jul 2026 15:30:19 +0000 (16:30 +0100)] 
http: avoid length underflow in Curl_compareheader

Closes #22338

10 days agolib: client writer tweaks
Stefan Eissing [Thu, 16 Jul 2026 09:26:33 +0000 (11:26 +0200)] 
lib: client writer tweaks

- keep pause state at request
- keep presense of content decoding writers at request
- only add cw-pause writer when content decoding happens
- define macro for passing data down the writer chain

scorecard: add option to test with h2o server

Closes #22335

10 days agocf-quiche.c: minor tidy-ups
Daniel Stenberg [Mon, 20 Jul 2026 21:44:38 +0000 (23:44 +0200)] 
cf-quiche.c: minor tidy-ups

Pointed out by the GitHub AI thing

Closes #22360

10 days agolib: add multi_wakeup_internal
Stefan Eissing [Wed, 8 Jul 2026 08:34:51 +0000 (10:34 +0200)] 
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

11 days agovtls_scache: allocate absolute filename on heap (Windows)
Viktor Szakats [Mon, 20 Jul 2026 15:34:20 +0000 (17:34 +0200)] 
vtls_scache: allocate absolute filename on heap (Windows)

To allow any full path lengths, beyond the 260 characters allowed by
`_MAX_PATH`.

Follow-up to fa0ccd9f1fbbbd77bf50b26e3ba231ea6c729474 #15774

Closes #22357

11 days agotests: fix type promotion on 32-bit arches in http test code
Keng-Yu Lin [Sun, 28 Jun 2026 20:43:01 +0000 (17:43 -0300)] 
tests: fix type promotion on 32-bit arches in http test code

As reported in the bug:

> On a 32-bit architecture (i386):
> 1. `chunks * chunk_size` evaluates to `unsigned int` (32-bit
>    unsigned).
> 2. Due to Usual Arithmetic Conversions in C, the signed `-1` (int)
>    operand of the ternary operator is promoted to `unsigned int`,
>    yielding `4294967295` (0xFFFFFFFF).
> 3. The ternary operator returns `4294967295` as an `unsigned int`.
> 4. This unsigned value is then assigned to `r->clength` (apr_off_t,
>    64-bit signed). Since the source is unsigned, it is zero-extended,
>    resulting in `r->clength` becoming `+4294967295`.
> 5. The subsequently executed check `if(r->clength >= 0)` evaluates to
>    true.
> 6. Inside the block, `apr_ltoa(r->pool, (long)r->clength)` casts it to
>    a 32-bit signed `long` (on 32-bit platforms), which truncates it
>    back to `-1`, formatting it as "-1" and sending the
>    "Content-Length: -1" header.
>
> On a 64-bit architecture (amd64), `size_t` is 64-bit, and `-1` (32-bit
> int) is promoted to `unsigned long` (64-bit), yielding
> `18446744073709551615`. When assigned to `r->clength` (64-bit signed),
> it wraps back to `-1`, which correctly skips the Content-Length
> generation.
>
> This type promotion mismatch can be safely fixed by avoiding the
> signed/unsigned mixture in the ternary operator.

Origin: debian, https://bugs.debian.org/1140793
Bug-Debian: https://bugs.debian.org/1140793

These are standard Debian patches' trailers, I can get rid of then if you prefer.

I've tested the fix using [debusine on i386 runner](https://debusine.debian.net/debian/developers/artifact/4083252/raw/log):

> 782s tests/http/test_05_errors.py::TestErrors::test_05_04_unclean_tls_shutdown[http/1.0] PASSED [ 17%]
> 782s tests/http/test_05_errors.py::TestErrors::test_05_04_unclean_tls_shutdown[http/1.1] PASSED [ 18%]
> 782s tests/http/test_05_errors.py::TestErrors::test_05_04_unclean_tls_shutdown[h2] PASSED [ 18%]

Versus the [i386 run in Debian's infrastructure](https://debusine.debian.net/debian/developers/artifact/4084220/raw/log):

> 2690s tests/http/test_05_errors.py::TestErrors::test_05_04_unclean_tls_shutdown[http/1.0] FAILED [ 17%]
> 2690s tests/http/test_05_errors.py::TestErrors::test_05_04_unclean_tls_shutdown[http/1.1] PASSED [ 18%]
> 2690s tests/http/test_05_errors.py::TestErrors::test_05_04_unclean_tls_shutdown[h2] PASSED [ 18%]

Closes #22210

13 days agotimeval: rename timer frequency variable
Viktor Szakats [Sat, 18 Jul 2026 01:18:11 +0000 (03:18 +0200)] 
timeval: rename timer frequency variable

It's no longer a global variable.

Follow-up to 1027d07704836c8d642abbed34ab98535de47433 #22346

Closes #22347

13 days agotimeval: make `Curl_freq` variable static (Windows)
Viktor Szakats [Sat, 18 Jul 2026 00:42:39 +0000 (02:42 +0200)] 
timeval: make `Curl_freq` variable static (Windows)

Follow-up to 64d4f5c4b660be112a02be104e7314e8bf264caa #20852

Closes #22346

2 weeks agocfilters: fix event-based connection shutdown
Graham Campbell [Sun, 12 Jul 2026 16:52:16 +0000 (17:52 +0100)] 
cfilters: fix event-based connection shutdown

- Adjust pollset during connection shutdown.

- Separate the FIRSTSOCKET and SECONDSOCKET check so that one being in
  connect or shutdown no longer adds poll events for the other.

- Fix shutdown state evaluation (as detailed below).

- Add a unit test for Curl_conn_adjust_pollset.

- Add a client for event testing.

- Test that shutdown sockets stay with the socket callback until done.

The pollset predicate now reads the connection's own shutdown state
rather than going through data->conn, and the EXPIRE_SHUTDOWN arming in
cshutdn_perform() works again: next_expire_ms started at 0 and could
never be set, so a peer that never sends a close_notify would still park
its connection forever, timeout or not.

Reported-by: pszemus@users.noreply.github.com
Fixes https://github.com/curl/curl/issues/22282
Closes https://github.com/curl/curl/pull/22304

2 weeks agourlapi: allow URLs to not have userauth (hostname)
Daniel Stenberg [Mon, 13 Jul 2026 17:13:45 +0000 (19:13 +0200)] 
urlapi: allow URLs to not have userauth (hostname)

Verified in test 1560

Fixes #22279
Reported-by: Bill Mill
Closes #22313

2 weeks agotool_cb_prg: avoid integer overflows
Daniel Stenberg [Tue, 14 Jul 2026 20:49:38 +0000 (22:49 +0200)] 
tool_cb_prg: avoid integer overflows

Verify in test 2093

Fixes #22316
Reported-by: xmoezzz on github
Closes #22328

2 weeks agolib1560: test CURLU_DEFAULT_PORT more
Daniel Stenberg [Mon, 13 Jul 2026 19:52:53 +0000 (21:52 +0200)] 
lib1560: test CURLU_DEFAULT_PORT more

Closes #22314

2 weeks agoruntests: flush cached test parts when (re)loading a file
Graham Campbell [Tue, 14 Jul 2026 00:38:01 +0000 (01:38 +0100)] 
runtests: flush cached test parts when (re)loading a file

Force test file reload on client connect in ftpserver.

Closes #22319

2 weeks agossls: fix potential memory leak on import
Stefan Eissing [Tue, 14 Jul 2026 07:35:58 +0000 (09:35 +0200)] 
ssls: fix potential memory leak on import

Memory can be leaked when importing corrupted SSL session data that
carry the same data fields repeatedly.

Fixes #22323

Closes #22324

2 weeks agotest798: force IPv4 to avoid cross-runner port aliasing
Graham Campbell [Tue, 14 Jul 2026 00:37:51 +0000 (01:37 +0100)] 
test798: force IPv4 to avoid cross-runner port aliasing

`test798` is the only test fetching `http://localhost:%HTTPPORT` without
`-4`, since it needs the hostname for its folded `domain=localhost`
cookie. curl tries `::1` first, but the test HTTP server is IPv4-only.
On the BSDs, IPv4 and IPv6 have separate ephemeral port namespaces, so
with every test server binding port 0, another parallel runner's
IPv6-bound server can hold the same numeric port. curl then connects to
the wrong runner's server, which cannot open its own `log/N/test798` and
closes without a response, giving exit 52 and an empty `server.input`.

This PR fixes this flake by adding `-4` matches what tests 389 and 392
already do. Linux is immune because wildcard IPv6 binds occupy the IPv4
port too. Seen in
https://github.com/curl/curl/actions/runs/29229170329/job/86749470571.

Closes #22318

2 weeks agongtcp2: let verify failures win over expiry processing errors
Graham Campbell [Tue, 14 Jul 2026 00:37:41 +0000 (01:37 +0100)] 
ngtcp2: let verify failures win over expiry processing errors

A flaky CI failure of `test_17_05_bad_ip_addr[h3]` (GnuTLS, event-based)
had curl detect the certificate name mismatch yet exit with
`CURLE_RECV_ERROR` (56) instead of `CURLE_PEER_FAILED_VERIFICATION`
(60). `Curl_cf_ngtcp2_cmn_connect` calls `Curl_cf_ngtcp2_cmn_set_expiry`
after its `ctx->tls_vrfy_result` override and returns the error
unfiltered, so when the server's final handshake flight happens to be
processed by the ingress inside set_expiry, the verify failure surfaces
as a generic receive error.

This PR makes set_expiry prefer `ctx->tls_vrfy_result` over generic
progress errors, as the recv and send paths already do after calling it,
and also covers the `cf-ngtcp2-proxy.c` call sites that lack the
override. Completes #21712. Seen in
https://github.com/curl/curl/actions/runs/29243256619/job/86794119412.

Closes #22317

2 weeks agoGHA: update dependency cloudflare/quiche to v0.29.3
renovate[bot] [Tue, 14 Jul 2026 17:00:38 +0000 (17:00 +0000)] 
GHA: update dependency cloudflare/quiche to v0.29.3

Follow-up to f369c7ba437962591c8aa9d0519c7b256e7ea5bf #22331
Follow-up to 899e2edec95b3df01db63ad219d3c5547a3e3ae5 #22333

Closes #22325

2 weeks agoquiche: set the max field section size
Graham Campbell [Wed, 15 Jul 2026 11:52:21 +0000 (12:52 +0100)] 
quiche: set the max field section size

quiche 0.29.3 started enforcing a default
`SETTINGS_MAX_FIELD_SECTION_SIZE` of 32 KiB, so larger response headers
now shut down the whole connection with `CURLE_HTTP3`. curl accepts up
to 300 KiB of response headers with every other backend and HTTP
version. Tell quiche to allow what curl itself allows. This keeps
test_01_11 passing with quiche 0.29.3 and it also advertises our real
limit to servers, which the RFC encourages.

Ref: 899e2edec95b3df01db63ad219d3c5547a3e3ae5 #22333
Ref: #22329
Ref: #22325
Ref: https://github.com/cloudflare/quiche/commit/9be0e4fa18594a5cca00120f6ae392e217e837e5
Ref: https://github.com/cloudflare/quiche/releases/tag/0.29.3

Closes #22331

2 weeks agoINTERNALS.md: require quiche 0.20.0+
Viktor Szakats [Wed, 15 Jul 2026 15:02:21 +0000 (17:02 +0200)] 
INTERNALS.md: require quiche 0.20.0+

For function `quiche_h3_config_set_max_field_section_size()`.

Ref: #22331
Ref: https://github.com/curl/curl/pull/22331#issuecomment-4981647189
Ref: https://github.com/cloudflare/quiche/releases/tag/0.20.0

Closes #22333

2 weeks agotidy-up: `TEXT()` vs `_TEXT()` vs `_T()` use (Windows)
Viktor Szakats [Wed, 15 Jul 2026 12:08:18 +0000 (14:08 +0200)] 
tidy-up: `TEXT()` vs `_TEXT()` vs `_T()` use (Windows)

Use `_TEXT()` when interacting with CRT functions (also prefer over
synonym `_T()`), `TEXT()` for Win32 functions.

Within curl, they mean the same because CRT/Win32 Unicode mode are
always enabled in sync.

Ref: https://devblogs.microsoft.com/oldnewthing/20040212-00/?p=40643/

Closes #22334

2 weeks agoidn: restore `MultiByteToWideChar()` `MB_ERR_INVALID_CHARS` flag
Viktor Szakats [Tue, 14 Jul 2026 17:06:37 +0000 (19:06 +0200)] 
idn: restore `MultiByteToWideChar()` `MB_ERR_INVALID_CHARS` flag

Also:
- curlx: pass this flag to the actual conversion calls, for consistency
  and robustness. (It's not stricly necessary because the initial call
  to determine size, with this flag passed, fails already on bad input.)
- schannel: unfold `MultiByteToWideChar()` line (formatting).

Ref: https://learn.microsoft.com/windows/win32/api/stringapiset/nf-stringapiset-multibytetowidechar

Follow-up to 6694a42aa0e820a6fe1e59d85ff8597b6d768d8d #19798

Closes #22326

2 weeks agoGHA: update dependency codespell to v2.4.3
renovate[bot] [Wed, 15 Jul 2026 14:58:06 +0000 (14:58 +0000)] 
GHA: update dependency codespell to v2.4.3

Closes #22332

2 weeks agomime.c: avoid integer overflow in base64 size calculation
Daniel Stenberg [Tue, 14 Jul 2026 06:52:21 +0000 (08:52 +0200)] 
mime.c: avoid integer overflow in base64 size calculation

Reported-by: xmoezzz on github
Fixes #22320
Closes #22322

2 weeks agoGHA: update debian:bookworm-slim Docker digest to 7b140f3
renovate[bot] [Tue, 14 Jul 2026 05:24:37 +0000 (05:24 +0000)] 
GHA: update debian:bookworm-slim Docker digest to 7b140f3

Closes #22321

2 weeks agounit3214: fix to pass on systems with >=128-bit pointers
Collin Funk [Sat, 11 Jul 2026 07:47:16 +0000 (00:47 -0700)] 
unit3214: fix to pass on systems with >=128-bit pointers

E.g. on CHERI pointers are 128 bits [1]. This causes the unit3214 test
to fail, which was written with more traditional platforms in mind. Here
is the output of log/stderr3214:

```
URL: -
BAD: struct Curl_easy is 7984 bytes, allowed to be 5370: 2614 bytes too big
BAD: struct connectdata is 1408 bytes, allowed to be 1300: 108 bytes too big
BAD: struct Curl_multi is 1248 bytes, allowed to be 850: 398 bytes too big
BAD: struct curl_httppost is 224 bytes, allowed to be 112: 112 bytes too big
BAD: struct curl_slist is 32 bytes, allowed to be 16: 16 bytes too big
BAD: struct curl_khkey is 32 bytes, allowed to be 24: 8 bytes too big
BAD: struct curl_hstsentry is 48 bytes, allowed to be 40: 8 bytes too big
BAD: struct curl_mime is 144 bytes, allowed to be 96: 48 bytes too big
BAD: struct curl_mimepart is 592 bytes, allowed to be 440: 152 bytes too big
BAD: struct curl_certinfo is 32 bytes, allowed to be 16: 16 bytes too big
BAD: struct curl_tlssessioninfo is 32 bytes, allowed to be 16: 16 bytes too big
BAD: struct curl_blob is 32 bytes, allowed to be 24: 8 bytes too big
BAD: struct CURLMsg is 48 bytes, allowed to be 24: 24 bytes too big
BAD: struct curl_header is 80 bytes, allowed to be 48: 32 bytes too big
Test ended with result 14
```

Multiply the allowed size on systems with larger than 64-bit pointers.

[1] https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/20171017a-cheri-poster.pdf

Closes #22299

2 weeks agoGHA: update dependency google/boringssl to v0.20260713.0
renovate[bot] [Mon, 13 Jul 2026 18:56:23 +0000 (18:56 +0000)] 
GHA: update dependency google/boringssl to v0.20260713.0

Closes #22311

2 weeks agotest1560: allow to build and run without LDAP support
Daniel Stenberg [Mon, 13 Jul 2026 16:54:20 +0000 (18:54 +0200)] 
test1560: allow to build and run without LDAP support

Closes #22312

2 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Mon, 13 Jul 2026 10:34:23 +0000 (12:34 +0200)] 
RELEASE-NOTES: synced

And bump to 8.22.0 for the pending release

2 weeks agoscripts/contri*: find 'Thanks-to' references
Viktor Szakats [Fri, 10 Jul 2026 10:17:52 +0000 (12:17 +0200)] 
scripts/contri*: find 'Thanks-to' references

Also any other `<word>-to:` alternatives.

Co-authored-by: Daniel Stenberg
Closes #22293

2 weeks agolib: ratelimit timestamps
Stefan Eissing [Fri, 10 Jul 2026 09:47:48 +0000 (11:47 +0200)] 
lib: ratelimit timestamps

Remove the timestamp passed for ratelimit checks. Let the limit
calculation obtain a timestamp when it needs it. Most transfers run
without active ratelimits and getting a fresh timestamp is unnecessary.

Closes #22292

2 weeks agohostip: only cache negative resolves for authoritative answers
Graham Campbell [Sun, 12 Jul 2026 02:58:18 +0000 (03:58 +0100)] 
hostip: only cache negative resolves for authoritative answers

Closes #22302

2 weeks agoconfigure: set ldap lib to no by default for non-finds
Daniel Stenberg [Mon, 13 Jul 2026 07:02:43 +0000 (09:02 +0200)] 
configure: set ldap lib to no by default for non-finds

`ldap_lib_ok` is never actually set at the start, so a prior cached
autoconf result could lead to an incorrect value.

Pointed out by the GitHub AI

Closes #22308

2 weeks agoconfigure: remove double check for GnuTLS
Daniel Stenberg [Mon, 13 Jul 2026 06:57:52 +0000 (08:57 +0200)] 
configure: remove double check for GnuTLS

`GNUTLS_ENABLED` was checked twice in the HTTPS-proxy support block,
making the second check redundant.

- also fix the "or upper" phrasing which is hard to understand

Pointed out by the GitHub AI thing

Closes #22307

2 weeks agoftp: reject control bytes in ACCT and alternative-to-user
Alhuda Khan [Sun, 12 Jul 2026 12:01:44 +0000 (17:31 +0530)] 
ftp: reject control bytes in ACCT and alternative-to-user

A CR or LF in the CURLOPT_FTP_ACCOUNT or CURLOPT_FTP_ALTERNATIVE_TO_USER
string split the control-channel command line and smuggled a second FTP
command. Reject a byte below 0x20 in both values before the command is
built.

Closes #22301

2 weeks agomime: reject CR and LF in mail part name and filename
Alhuda Khan [Thu, 2 Jul 2026 10:53:36 +0000 (16:23 +0530)] 
mime: reject CR and LF in mail part name and filename

Closes #22247

2 weeks agoconncache: apply multi limits to transfers using a shared pool
Graham Campbell [Sat, 4 Jul 2026 19:45:31 +0000 (20:45 +0100)] 
conncache: apply multi limits to transfers using a shared pool

- Determine max host and total connection limits from the transfer's own
  multi handle and test that it works for shared connections.

Prior to this change, since df67269 (precedes 8.13.0),
Curl_cpool_check_limits() took the limits from the multi handle that
owns the pool. A share-owned pool is not owned by any multi, so the
limit check always passed.

Prior to df67269 the limits came from the transfer's own multi handle.

Fixes https://github.com/curl/curl/issues/22265
Closes https://github.com/curl/curl/pull/22266

2 weeks agoconfigure: fix misleading error messages
Emmanuel Ugwu [Sat, 11 Jul 2026 19:02:33 +0000 (20:02 +0100)] 
configure: fix misleading error messages

Reported-by: Bryan Henderson
URL: https://curl.se/mail/lib-2026-07/0010.html
Closes #22300
Signed-off-by: Emmanuel Ugwu <emmanuelugwu121@gmail.com>
2 weeks agoCURLOPT_HEADERFUNCTION.md: document folded header unfolding
itzTanos29 [Fri, 10 Jul 2026 16:57:41 +0000 (12:57 -0400)] 
CURLOPT_HEADERFUNCTION.md: document folded header unfolding

Fixes #22296
Closes #22297

2 weeks agows: pause/unpause write handling
Stefan Eissing [Thu, 9 Jul 2026 10:45:51 +0000 (12:45 +0200)] 
ws: pause/unpause write handling

Websocket frames need to be written individualy, so that applications
can access the frame meta data correctly. This worked until the write
function triggered a pause. Remaining frames accumulated in the "out"
writer's buffer and on unpaused were written in one chunk.

ws decode writer will now stop writing frames when the client writer
is paused. To handle the writing of buffered raw data after an unpause,
client writers have gotten a new "flush" method.

Add pytest test_20_12 with a new client to check handling of pauses
and websocket frames.

Reported-by: Hendrik Hübner
Fixes #22273
Closes #22283

2 weeks agotests: remove test1701
Stefan Eissing [Fri, 10 Jul 2026 07:58:08 +0000 (09:58 +0200)] 
tests: remove test1701

Test 1701 did a HTTP/2 Upgrade in a HTTP/1.1 POST request. This will no
longer be supported in the upcoming nghttp2 release for security reasons
(Upgrade requests with body a re messy, error prone and can easily lead
to connection confusion).

As no other server we have supports this, remove the test.

Reported-by: firexinghe on github
Fixes #22280
Closes #22291

2 weeks agotool: fix memory use in parallel mode
Stefan Eissing [Wed, 8 Jul 2026 12:15:10 +0000 (14:15 +0200)] 
tool: fix memory use in parallel mode

The curl tool was creating a new transfer every time it checked if
it needed to add one to reach max parallelism. This led to eventually
all configured transfers to have easy handles created.

Limit the creation again to the ones needed for max parallelism.

scorecard.py: set --out-null only for curl versions that support it

Closes #22277

2 weeks agotidy-up: typos, comment nits
Viktor Szakats [Fri, 26 Jun 2026 20:57:40 +0000 (22:57 +0200)] 
tidy-up: typos, comment nits

Closes #22294

3 weeks agoGHA: update dependency awslabs/aws-lc to v5.1.0
renovate[bot] [Fri, 10 Jul 2026 01:41:13 +0000 (01:41 +0000)] 
GHA: update dependency awslabs/aws-lc to v5.1.0

Closes #22288

3 weeks agoGHA/windows: enable wolfSSL in two MSYS2 mingw-w64 jobs
Viktor Szakats [Fri, 3 Jul 2026 20:37:58 +0000 (22:37 +0200)] 
GHA/windows: enable wolfSSL in two MSYS2 mingw-w64 jobs

Number of tests went to 1919 (from 1912). Runs 30s faster.

Thanks-to: Christoph Reiter
Ref: https://github.com/msys2/MINGW-packages/commit/5c995ac09830ac84bcfff58e6fcf032c42f4b20f
Ref: #22252

Closes #22259

3 weeks agotests: skip test 311 for wolfSSL 5.9.2
Viktor Szakats [Thu, 9 Jul 2026 18:09:24 +0000 (20:09 +0200)] 
tests: skip test 311 for wolfSSL 5.9.2

To fix this for everyone running curl tests.

Also: drop workarounds for CI.

Refs:
https://github.com/wolfSSL/wolfssl/pull/10793
https://github.com/wolfSSL/wolfssl/commit/7dd269fc52228cbc854b9f0ed8c3938b95d8a2c8

Ref: https://github.com/curl/curl/pull/22269#issuecomment-4892203666
Follow-up to 7183bec8fe7b4efcae3b0354dc5bf6de54384190 #22269
Follow-up to 03f9751585112cdc3c5f0a370217f08c05782de9 #22204

Closes #22286

3 weeks agoGHA/linux: bump 3.x mbedTLS to 3.6.7
Viktor Szakats [Thu, 9 Jul 2026 16:04:18 +0000 (18:04 +0200)] 
GHA/linux: bump 3.x mbedTLS to 3.6.7

Follow-up to 6e5f94cd5dad9764641d1718b36e79907c68caf4 #22271

Closes #22285

3 weeks agoGHA/macos: ignore test 311 results for Homebrew wolfSSL
Stefan Eissing [Mon, 6 Jul 2026 09:24:31 +0000 (11:24 +0200)] 
GHA/macos: ignore test 311 results for Homebrew wolfSSL

Homebrew is distributing v5.9.2 at the time of this commit, which
contains known regression failing to parse the server certificate.
The fix has been merged upstream. Till it makes it into a release
and Homebrew, ignore test results for 311.

Refs:
https://github.com/wolfSSL/wolfssl/pull/10793
https://github.com/wolfSSL/wolfssl/commit/7dd269fc52228cbc854b9f0ed8c3938b95d8a2c8

Follow-up to 03f9751585112cdc3c5f0a370217f08c05782de9 #22204 #22175 #22160
Closes #22269

3 weeks agoGHA: update dependency Mbed-TLS/mbedtls to v4.2.0
renovate[bot] [Tue, 7 Jul 2026 16:43:40 +0000 (16:43 +0000)] 
GHA: update dependency Mbed-TLS/mbedtls to v4.2.0

Ref: #21178
Closes #22271

3 weeks agoGHA: update dependency pizlonator/fil-c to v0.681
renovate[bot] [Mon, 6 Jul 2026 02:40:48 +0000 (02:40 +0000)] 
GHA: update dependency pizlonator/fil-c to v0.681

Note: Renovate strips pre-existing quotes from the YAML version value.
This breaks the bump next time its version is ending with zero(s).
Ref: 78267398e5a2ce347a6729926c68272b2b6fbed5 #22143 #22142

Closes #22267

3 weeks agosetopt: error for CURLOPT_SHARE when easy handle is used
Daniel Stenberg [Fri, 3 Jul 2026 06:55:44 +0000 (08:55 +0200)] 
setopt: error for CURLOPT_SHARE when easy handle is used

Changing the share while driving would be complicated and error-prone.

URL: https://curl.se/mail/lib-2026-07/0000.html

Closes #22253

3 weeks agotest2114: fix reading from stdin
Stefan Eissing [Sat, 4 Jul 2026 15:20:13 +0000 (17:20 +0200)] 
test2114: fix reading from stdin

The test provides an invalid username, but no ':' with password, so that
the curl tool tries to read the password from stdin. That makes the test
hang, also in CI.

The check for invalid characters is happening when the CURLOPT_USERPWD
is applied to the URL, so when the transfer is started. Maybe the check
should happen also in setopt already.

The test hangs because tool_paramhlp.c:548 `checkpasswd()` does not see
a ':' and tries to read the password from stdin.

Fix: add a ':' in the tests invalid user setting, so that the read does
not happen.

Follow-up to ecaa344a7a17874ff0c6e5

Closes #22264

3 weeks agourl: reject control codes in credentials set via CURLOPT
Alhuda Khan [Wed, 1 Jul 2026 09:41:15 +0000 (15:11 +0530)] 
url: reject control codes in credentials set via CURLOPT

Closes #22236

3 weeks agoTLS: drop support for TLS-SRP
Daniel Stenberg [Sat, 4 Jul 2026 10:19:47 +0000 (12:19 +0200)] 
TLS: drop support for TLS-SRP

The options will simply do nothing.

Closes #21965

3 weeks agogssapi: add support for Apple GSS Framework
Viktor Szakats [Fri, 24 Oct 2025 23:40:44 +0000 (01:40 +0200)] 
gssapi: add support for Apple GSS Framework

Add support for the native GSS Framework on Apple targets, which is
Apple's fork of Heimdal. This option allows to drop Apple's deprecated
MIT Kerberos compatibility shim "mit-krb5/1.7-prerelease".

Source code uses different headers, other than that no source changes
are necessary.

You can enable by configuring with:
autotools: `--enable-gssapi-apple`
CMake: `-DCURL_USE_GSSAPI=ON -DCURL_GSS_FLAVOR=Apple`

These options are experimental, and may receive breaking updates till
the GSS backend selection logic settles, for Apple and also for the GNU
and MIT implementation.

Version string:
```
curl 8.21.0-DEV (aarch64-apple-darwin25.4.0) libcurl/8.21.0-DEV
  OpenSSL/3.6.2 zlib/1.2.12 AppleIDN AppleGSS OpenLDAP/2.4.28/Apple
```

Also:
- drop in-source deprecation warning suppressions when using AppleGSS.
- GHA/macos: enable Apple GSS in CI jobs.

Supported by:
iOS 5.0+, iPadOS 5.0+, Mac Catalyst 13.0+, macOS 10.14+, visionOS 1.0+

Ref: https://developer.apple.com/documentation/gss
Ref: #19109

Closes #22052

3 weeks agocd2nroff: stricter checks for asterisks for italics
Daniel Stenberg [Fri, 3 Jul 2026 21:32:08 +0000 (23:32 +0200)] 
cd2nroff: stricter checks for asterisks for italics

The nroff (man page) version of the markdown docs could get asterisks
mistreated as emphasis - seen in the CURLOPT_WRITEDATA manpage. The
regex now more stricter requires a word character to follow an italics
starting asterisk and there needs to be a word character or a closing
parenthesis before the italics ending asterisk.

Also: fix CURLINFO_CERTINFO.md which used wrong italics - it was not
rendered correctly on GitHub and with other generic markdown parsers.

Reported-by: Christian Ullrich
Fixes #22257
Closes #22260

3 weeks agoCURLOPT_UNRESTRICTED_AUTH.md: 'Authorization' instead of 'Authentication'
Joel Depooter [Fri, 3 Jul 2026 19:39:13 +0000 (12:39 -0700)] 
CURLOPT_UNRESTRICTED_AUTH.md: 'Authorization' instead of 'Authentication'

Closes #22256

4 weeks agoTHANKS: remove duplicate, fix typo
Daniel Stenberg [Fri, 3 Jul 2026 15:49:03 +0000 (17:49 +0200)] 
THANKS: remove duplicate, fix typo

4 weeks agowolfssl: fix build for wolfssl without bio chain support
Jay Satiro [Fri, 3 Jul 2026 14:39:08 +0000 (10:39 -0400)] 
wolfssl: fix build for wolfssl without bio chain support

- Do not mix declarations and code. (ISO C90 build error)

Ref: https://github.com/curl/curl/pull/22252#issuecomment-4871171567

Closes https://github.com/curl/curl/pull/22255

4 weeks agoTHANKS: add Gary from the curl 4.6 release notes
Daniel Stenberg [Fri, 3 Jul 2026 11:10:50 +0000 (13:10 +0200)] 
THANKS: add Gary from the curl 4.6 release notes

4 weeks agovquic: add Curl_ prefix to some global functions
Daniel Stenberg [Fri, 3 Jul 2026 07:31:00 +0000 (09:31 +0200)] 
vquic: add Curl_ prefix to some global functions

Closes #22254

4 weeks agosetopt: return OK earlier for the deprecated h2 dep options
Daniel Stenberg [Thu, 2 Jul 2026 20:38:11 +0000 (22:38 +0200)] 
setopt: return OK earlier for the deprecated h2 dep options

No need to have them checked twice.

Follow-up to bfbff7852f050232edd3e5

Closes #22250

4 weeks agoGHA/windows: fix MSYS2 UWP job name
Viktor Szakats [Thu, 2 Jul 2026 22:51:12 +0000 (00:51 +0200)] 
GHA/windows: fix MSYS2 UWP job name

Also:
- whitespace tidy-up.
- tried building with MSYS2 wolfSSL, but still not compatible with curl.
  Ref: https://packages.msys2.org/base/mingw-w64-wolfssl
  Ref: #22251

Follow-up to 923db3515d3f3a707fd4cad6f05f9538899536d7 #18116

Closes #22252

4 weeks agoconfigure: link `-lcrypt32` instead of `-lm` for wolfSSL on Windows
Viktor Szakats [Thu, 2 Jul 2026 22:18:35 +0000 (00:18 +0200)] 
configure: link `-lcrypt32` instead of `-lm` for wolfSSL on Windows

Syncing it with CMake/FindWolfSSL.

`-lm` is not needed on Windows. As of mingw-w64 14.0.0 it's offered as
a dummy library; in such case it wasn't causing an actual issue.
`-lcryp32` is necessary when linking wolfSSL statically.

Ref: #22249

Closes #22251

4 weeks agoFTP: fix TLS session reuse on the data connection
Stefan Eissing [Thu, 2 Jul 2026 10:04:18 +0000 (12:04 +0200)] 
FTP: fix TLS session reuse on the data connection

FTP servers using SSL can be configured to check TLS session reuse on
the DATA connection. They hand out a new session on every CONTROL
connect and require to see the client using exactly that one when
up-/downloading on DATA.

This means:

1. We have to configure the SSL filter on the DATA connection with
   exactly the same peers.

2. We have to remember the SSL session on the CONTROL connection -
   separately from the session cache. The SSL filter on the DATA
   connection then looks for a session at the CONTROL filter and, if
   present, uses that.

Tests:

Enable `require_ssl_reuse` in our pytest setup for vsftpd. This
reproduces the problem reported in #22225 and verifies the fix.

Skip ftp+SSL pytests for rustls, as we have no possibility to reuse
sessions in that backend.

Schannel: we do not run these tests with the backend. I expect it has
similar problems but am not able to verify.

Reported-by: Laurent Sabourin
Fixes #22225
Closes #22246

4 weeks agoci: retain curl-for-win artifacts for a longer time
Jay Satiro [Wed, 1 Jul 2026 14:52:29 +0000 (10:52 -0400)] 
ci: retain curl-for-win artifacts for a longer time

- Retain for 5 days because 3 days seems too short.

Follow-up to adf843fb.

Closes https://github.com/curl/curl/pull/22238

4 weeks agoopenssl+sectrust: move session verified set into result check
Stefan Eissing [Thu, 2 Jul 2026 11:11:35 +0000 (13:11 +0200)] 
openssl+sectrust: move session verified set into result check

Pointed out by Codex Security
Closes #22248

4 weeks agovssh: keyfile use cleanups
Daniel Stenberg [Thu, 2 Jul 2026 07:07:05 +0000 (09:07 +0200)] 
vssh: keyfile use cleanups

- make the libssh backend do the same fallback for private and public key
  filename as libssh2 already did and is documented behavior. This now uses a
  common function.

- set the file names already in setup_connection if public key auth is
  requested, so that the connection reuse functions can use the
  information when checking for existing connections to reuse

- rename the oddly named struct fields 'rsa' to 'priv_key' and 'rsa_pub'
  to 'pub_key' to better reflect their purposes

Fixes #22243
Closes #22244

4 weeks agolib: add "Curl_" prefix to two global functions
Daniel Stenberg [Thu, 2 Jul 2026 07:43:58 +0000 (09:43 +0200)] 
lib: add "Curl_" prefix to two global functions

To make it clear what they are and according to our styleguide.

- Curl_cf_ip_happy_insert_after
- Curl_ftp_conns_match

Found with:

$ nm lib/.libs/libcurl.a | grep ' T ' | grep -vi ' curl'

Closes #22245

4 weeks agoGHA: update dependency wolfSSL/wolfssl to v5.9.2, apply upstream patch
Viktor Szakats [Thu, 2 Jul 2026 01:06:45 +0000 (03:06 +0200)] 
GHA: update dependency wolfSSL/wolfssl to v5.9.2, apply upstream patch

Apply upstream patch to fix a regression in 5.9.2.

Refs:
https://github.com/wolfSSL/wolfssl/issues/10790
https://github.com/wolfSSL/wolfssl/pull/10793
https://github.com/wolfSSL/wolfssl/commit/7dd269fc52228cbc854b9f0ed8c3938b95d8a2c8

Ref: #22175 (local mitigation attempt)
Fixes #22160

Closes #22204

4 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 1 Jul 2026 21:15:02 +0000 (23:15 +0200)] 
RELEASE-NOTES: synced

4 weeks agoopenssl+sectrust: fix session reuse
Stefan Eissing [Wed, 1 Jul 2026 08:54:21 +0000 (10:54 +0200)] 
openssl+sectrust: fix session reuse

When TLS is verified via Apple SecTrust, openssl internal state is a
verification faiure (that is how it works, we use sectrust when openssl
fails to verify and natice ca store is enabled).

OpenSSL stores this verification status inside its TLS session objects.
On reuse, we see an unverified session and do not reuse it for a
verified connect attempt. While this is a performance penalty for most
connections, it *fails* on ftps:// transfers where servers expect
session reuse on DATA connections.

Fix this by remembering that TLS and a session was verified by sectrust
and allow reuse of such sessions for new connect attempts that also use
sectrust.

Closes #22235

4 weeks agoTODO: drop all SMB ideas
Daniel Stenberg [Wed, 1 Jul 2026 15:06:46 +0000 (17:06 +0200)] 
TODO: drop all SMB ideas

SMB is about to be removed, no point in adding new SMB things now.

Closes #22241

4 weeks agoTODO: Support WebSocket text frames with command line tool
Daniel Stenberg [Wed, 1 Jul 2026 15:02:36 +0000 (17:02 +0200)] 
TODO: Support WebSocket text frames with command line tool

Closes #21997
Closes #22240

4 weeks agoINFRASTRUCTURE.md: fix typo
Dan Fandrich [Wed, 1 Jul 2026 16:03:29 +0000 (09:03 -0700)] 
INFRASTRUCTURE.md: fix typo

4 weeks agoGHA: bump GitHub Actions
dependabot[bot] [Wed, 1 Jul 2026 14:56:42 +0000 (14:56 +0000)] 
GHA: bump GitHub Actions

- updates `actions/cache` from 5.0.5 to 6.1.0
- updates `actions/checkout` from 6.0.2 to 7.0.0
- updates `github/codeql-action/analyze` from 4.36.0 to 4.36.2
- updates `github/codeql-action/init` from 4.36.0 to 4.36.2
- updates `msys2/setup-msys2` from 2.31.1 to 2.32.0

Closes #22239

4 weeks agoGHA/windows: exclude `diffutils` for 32-bit builds
Viktor Szakats [Wed, 1 Jul 2026 15:14:12 +0000 (17:14 +0200)] 
GHA/windows: exclude `diffutils` for 32-bit builds

It's not longer offered by MSYS2.

Bug: https://github.com/curl/curl/pull/22239#issuecomment-4856772868
Ref: https://github.com/msys2/MINGW-packages/commit/b13c6d3af1dde801a7d2e16e6daa7e4b5a21cc36
Ref: c4e776cafa22533fe8a6113a39f6a9f624e8c467 #17103

Closes #22242

4 weeks agocurl_ws_meta.md: polish and better vocabulary
Daniel Stenberg [Wed, 1 Jul 2026 07:50:34 +0000 (09:50 +0200)] 
curl_ws_meta.md: polish and better vocabulary

Assisted-by: Hendrik Hübner
Closes #22233

4 weeks agoGHA/curl-for-win: upload snapshot Windows curl tool binary
Viktor Szakats [Wed, 1 Jul 2026 08:38:29 +0000 (10:38 +0200)] 
GHA/curl-for-win: upload snapshot Windows curl tool binary

These are generated for every PR and master pushes. Retain for 3 days.
Size is 1.8MB zipped per artifact. (Takes 1 second extra job time.)

Ref: #22162
Ref: https://github.com/curl/curl-for-win/commit/1b0e3569b393c31572a5895ed65ae6f60a8cba55?w=1

Closes #22234

4 weeks agotool_cb_hdr: de-duplicate filename setter
Viktor Szakats [Tue, 30 Jun 2026 21:58:38 +0000 (23:58 +0200)] 
tool_cb_hdr: de-duplicate filename setter

Closes #22232

4 weeks agoschannel: shut off experimental TLS 1.3 support for Win 10
Emmanuel Ugwu [Tue, 30 Jun 2026 20:07:17 +0000 (21:07 +0100)] 
schannel: shut off experimental TLS 1.3 support for Win 10

- Change minimum Windows version for TLS 1.3 support to
  Windows Server 2022.

Prior to this change Windows Server 2022 was already used as the minimum
version in some but not all of the checks for TLS 1.3 support.

Ref: https://github.com/curl/curl/pull/21719#issuecomment-4520234306
Ref: https://github.com/curl/curl/issues/21702

Signed-off-by: Emmanuel Ugwu <emmanuelugwu121@gmail.com>
Closes https://github.com/curl/curl/pull/22231

4 weeks agoformdata: replace stray camelcase local function names
Viktor Szakats [Mon, 29 Jun 2026 22:22:02 +0000 (00:22 +0200)] 
formdata: replace stray camelcase local function names

Replace with names using the style in the rest of codebase. Also move
the object to left-hand side and action to the right-hand side.

Closes #22223

4 weeks agoopenssl: replace stray legacy API variant with `EVP_DigestInit_ex()`
Viktor Szakats [Mon, 29 Jun 2026 22:06:41 +0000 (00:06 +0200)] 
openssl: replace stray legacy API variant with `EVP_DigestInit_ex()`

To match rest of code, use the modern variant and avoid an unnecessary
internal reset/cleanup.

Closes #22222

4 weeks agombedtls: replace `memset()` with `psa_hash_operation_init()`
Viktor Szakats [Mon, 29 Jun 2026 14:12:10 +0000 (16:12 +0200)] 
mbedtls: replace `memset()` with `psa_hash_operation_init()`

To initialize hash contexts.

Ref: https://arm-software.github.io/psa-api/crypto/1.1/api/ops/hashes.html#c.psa_hash_operation_init
Follow-up to 3a305831d1a9d10b2bfd4fa3939ed41275fee7f7 #19077

Closes #22220

4 weeks agotests: pin connection reuse rules for partial, host, and credentials
Memduh Çelik [Tue, 30 Jun 2026 04:12:11 +0000 (07:12 +0300)] 
tests: pin connection reuse rules for partial, host, and credentials

Add classic tests 3223-3226 and extend tests/http/test_12_reuse.py so that
connection reuse decisions are explicit:

- partial/aborted HTTP/1.1 responses must not reuse the connection
  (premature multi_done closes non-multiplexed conns)
- different target hostnames must not share a connection even when they
  resolve to the same address (url_match_destination)
- HTTP Basic credentials are per-request (PROTOPT_CREDSPERREQUEST), so
  different -u values still reuse; assert that with num_connects
- same host positive control reuses (num_connects 1 then 0)

Closes #22224

4 weeks agosasl: fix zero-length response encoding
Patrick Monnerat [Mon, 29 Jun 2026 16:17:14 +0000 (18:17 +0200)] 
sasl: fix zero-length response encoding

A sasl zero-length normal response is an empty string, unlike an initial
response. Since the encoding of a zero-length initial response is
protocol dependent, move its handling to the protocol-specific sendauth
procedure. Similarly, do not check for an '=' server message, as this
should normally never occur.

Update the erroneous tests accordingly.

Closes #22218

4 weeks agosmtp: reject CR and LF in the envelope address
alhudz [Sun, 21 Jun 2026 12:29:09 +0000 (17:59 +0530)] 
smtp: reject CR and LF in the envelope address

Verified in test 2110

Closes #22119

4 weeks agoconfig2setopt.c: refactor config2setopts
Daniel Stenberg [Mon, 29 Jun 2026 10:02:14 +0000 (12:02 +0200)] 
config2setopt.c: refactor config2setopts

Introduce sub functions

Closes #22215

4 weeks agoCURLSHOPT_(UN)SHARE.md: do not modify shares while in use
Daniel Stenberg [Mon, 29 Jun 2026 15:41:34 +0000 (17:41 +0200)] 
CURLSHOPT_(UN)SHARE.md: do not modify shares while in use

Reported-by: smaeljaish on hackerone
Closes #22217

4 weeks agoopenldap: handle Curl_sasl_continue() returns better
Daniel Stenberg [Mon, 29 Jun 2026 08:44:47 +0000 (10:44 +0200)] 
openldap: handle Curl_sasl_continue() returns better

Similar to how it gets treated already in other protocol handlers.

Follow-up to eeca818b1e8d1e61c2d4

Reported-by: Eunsoo Kim
Closes #22213

4 weeks agocontent_encoding: give a clear error on multi-member gzip
HwangRock [Thu, 25 Jun 2026 13:00:04 +0000 (22:00 +0900)] 
content_encoding: give a clear error on multi-member gzip

A gzip Content-Encoding response holding more than one gzip member made
curl decode the first member and then fail the transfer with a bare
CURLE_WRITE_ERROR and no hint about the cause. Detect the trailing
member and fail with a message that explains what happened.

Fixes #22156
Closes #22172

4 weeks agoopenssl: prefer modern API flavors for `EVP_MD_CTX` new/free
Viktor Szakats [Mon, 29 Jun 2026 16:36:33 +0000 (18:36 +0200)] 
openssl: prefer modern API flavors for `EVP_MD_CTX` new/free

Available in all supported OpenSSL flavors and versions. They are
functionally identical to the legacy API calls.

Closes #22219

4 weeks agoCURLOPT_SSH_*_KEYFILE: used for setting up, then no more
Daniel Stenberg [Mon, 29 Jun 2026 06:05:16 +0000 (08:05 +0200)] 
CURLOPT_SSH_*_KEYFILE: used for setting up, then no more

So changing them after the connection is made still allows libcurl to
reuse the existing connections.

Reported-by: Bigtang on hackerone
Closes #22211

4 weeks agomod_curltest: fix compiler warnings
Viktor Szakats [Mon, 29 Jun 2026 09:17:04 +0000 (11:17 +0200)] 
mod_curltest: fix compiler warnings

```
mod_curltest.c:331:25: warning: result of comparison of unsigned expression >= 0 is always true [-Wtautological-unsigned-zero-compare]
  331 |           if(chunk_size >= 0) {
      |              ~~~~~~~~~~ ^  ~
mod_curltest.c:421:9: warning: declaration shadows a local variable [-Wshadow]
  421 |     int i, hd_len = (16 * 1024);
      |         ^
mod_curltest.c:288:7: note: previous declaration is here
  288 |   int i, chunks = 3, error_bucket = 1;
      |       ^
mod_curltest.c:501:40: warning: format specifies type 'int' but the argument has type 'unsigned int' [-Wformat]
  500 |                 "error_handler: request cleanup, r->status=%d, aborted=%d, "
      |                                                                        ~~
      |                                                                        %u
  501 |                 "close=%d", r->status, c->aborted, close_conn);
      |                                        ^~~~~~~~~~
mod_curltest.c:837:1: warning: missing field 'lock' initializer [-Wmissing-field-initializers]
  837 | };
      | ^
mod_curltest.c:914:43: warning: format specifies type 'int' but the argument has type 'apr_time_t' (aka 'long') [-Wformat]
  914 |     char *v = apr_psprintf(r->pool, "%d", limitrec.duration_sec);
      |                                      ~~   ^~~~~~~~~~~~~~~~~~~~~
      |                                      %ld
mod_curltest.c:956:16: warning: unused variable 'rv' [-Wunused-variable]
  956 |   apr_status_t rv;
      |                ^~
```

Closes #22214

4 weeks agoCREDENTIALS.md: remove comment about emtpy user/pass
Stefan Eissing [Mon, 29 Jun 2026 06:45:18 +0000 (08:45 +0200)] 
CREDENTIALS.md: remove comment about emtpy user/pass

Closes #22212

4 weeks agobuild: drop superfluous `STDC_HEADERS` macro
Viktor Szakats [Sun, 28 Jun 2026 10:19:11 +0000 (12:19 +0200)] 
build: drop superfluous `STDC_HEADERS` macro

It is traditionally defined by autotools to detect the presence of set
of standard C89 headers. autoconf 2.70 (2020-12-08) reduced the headers
covered to `stdlib.h`, `string.h`. After 2.59d (2006-06-05) obsoleting
it earlier. CMake replicated this detection, and curl included
`curl/stdcheaders.h` if standard headers were missing. However, such
condition could never happen because curl sources already assume all
checked standard headers (`stdarg.h`, `stdlib.h`, `string.h`) and
include them unconditionally.

Since this is an unused feature detection and an impossible fallback
path, drop them from CMake and curl's source. autotools continues to do
the detection by default, but its result is unused after this patch.

This leaves public `curl/stdcheaders.h` unused from within the codebase.

Refs:
https://github.com/autotools-mirror/autoconf/commit/f0c7c425539964047b0cb986d2ea5f5687a07069
https://github.com/autotools-mirror/autoconf/commit/86c213d0e355296f026a36e3203c0813041aae89

Follow-up to 65dae4ad80b02f25a25e17af62ea4f2940970330 #22191
Follow-up to 4c5307b45655ba75ab066564afdc0c111a8b9291
Ref: ae1912cb0d494b48d514d937826c9fe83ec96c4d

Closes #22206

4 weeks agocf-ngtcp2-cmn: initialize new callback ptr for ngtcp2 1.24.0+, bump in CI
Viktor Szakats [Sun, 28 Jun 2026 11:20:50 +0000 (13:20 +0200)] 
cf-ngtcp2-cmn: initialize new callback ptr for ngtcp2 1.24.0+, bump in CI

Fixes #22205

Closes #22207