]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
7 weeks agochecksrc: add missing semicolon, fix `IFDEFSINGLE` capture group
Viktor Szakats [Fri, 24 Apr 2026 08:07:40 +0000 (10:07 +0200)] 
checksrc: add missing semicolon, fix `IFDEFSINGLE` capture group

Pointed out by GitHub Code Quality

Closes #21435

7 weeks agotests: drop support for the hex="yes" option in getpart
Daniel Stenberg [Thu, 23 Apr 2026 20:54:01 +0000 (22:54 +0200)] 
tests: drop support for the hex="yes" option in getpart

The remaining datacheck sections using this for MQTT tests were not
actually used anyway!

Closes #21428

7 weeks agochecksrc: add missing items to warnings hash, alpha-sort
Viktor Szakats [Fri, 24 Apr 2026 07:53:21 +0000 (09:53 +0200)] 
checksrc: add missing items to warnings hash, alpha-sort

Closes #21434

7 weeks agochecksrc: fix code quality findings
Viktor Szakats [Thu, 23 Apr 2026 23:24:32 +0000 (01:24 +0200)] 
checksrc: fix code quality findings

- fix counting errors. Update test1185 results accordingly.
- fix an error message.
- tidy up regexp syntax.

Pointed out by GitHub Code Quality

Closes #21429

7 weeks agodoh: fix #ifdef name
Daniel Stenberg [Fri, 24 Apr 2026 05:57:14 +0000 (07:57 +0200)] 
doh: fix #ifdef name

Spotted by Copilot

Closes #21431

7 weeks agohostip: init the curl_jmpenv_lock appropriately
Daniel Stenberg [Fri, 24 Apr 2026 06:11:10 +0000 (08:11 +0200)] 
hostip: init the curl_jmpenv_lock appropriately

A zero-initialized static value is not guaranteed to be a valid mutex on
all POSIX implementations

Spotted by Codex Security

Closes #21432

7 weeks agourldata.h: fix typo and lingering backtick
Daniel Stenberg [Fri, 24 Apr 2026 05:55:00 +0000 (07:55 +0200)] 
urldata.h: fix typo and lingering backtick

Spotted by Copilot

Closes #21430

7 weeks agorustls: fix memory leak on repeated SSLKEYLOGFILE fails
Daniel Stenberg [Thu, 23 Apr 2026 19:49:50 +0000 (21:49 +0200)] 
rustls: fix memory leak on repeated SSLKEYLOGFILE fails

Before this fix, Curl_tls_keylog_open() assigned the environment
variable result to a global keylog_file_name without freeing any prior
allocation. If the file cannot be opened (e.g., permission error)
keylog_file_fp stays NULL, so subsequent calls to Curl_tls_keylog_open
will overwrite keylog_file_name and leak the previous allocation.

Spotted by Codex Security

Closes #21427

7 weeks agochecksrc.pl: delete stray commas
Viktor Szakats [Thu, 23 Apr 2026 18:57:44 +0000 (20:57 +0200)] 
checksrc.pl: delete stray commas

Closes #21426

7 weeks agoci: update RUSTLS_VERSION 0.15.2 -> 0.15.3
Daniel McCarney [Thu, 23 Apr 2026 15:20:42 +0000 (11:20 -0400)] 
ci: update RUSTLS_VERSION 0.15.2 -> 0.15.3

Closes #21424

7 weeks agodoh: remove conn->bits.doh
Stefan Eissing [Thu, 23 Apr 2026 12:43:11 +0000 (14:43 +0200)] 
doh: remove conn->bits.doh

Since we have a new struct instance for each async operation now and
async operation may happen in parallel, remove the connection bit
indicating doh is in progress.

Closes #21422

7 weeks agomulti: enhance pending handles fairness
Stefan Eissing [Wed, 22 Apr 2026 13:00:14 +0000 (15:00 +0200)] 
multi: enhance pending handles fairness

When trying to connect a pending transfer, remember the `mid` that was
last reactivated and start looking for future pending handles from the
last one forward through the pending bitset.

Background: when many pending handles exist, iterating the bitset always
from the start may become unfair to transfers that were assigned higher
`mid` values.

Fixes #21396
Reported-by: Juan Belón
Closes #21412

7 weeks agovtls: fix comment typos and tidy up a type
Viktor Szakats [Thu, 23 Apr 2026 09:55:59 +0000 (11:55 +0200)] 
vtls: fix comment typos and tidy up a type

Pointed out by GitHub Code Quality

Closes #21421

7 weeks agoCI: set `DO_NOT_TRACK=1`
Viktor Szakats [Thu, 23 Apr 2026 08:17:13 +0000 (10:17 +0200)] 
CI: set `DO_NOT_TRACK=1`

Closes #21420

7 weeks agoGHA/appveyor-status: disable `gh` tool telemetry
Viktor Szakats [Thu, 23 Apr 2026 08:11:16 +0000 (10:11 +0200)] 
GHA/appveyor-status: disable `gh` tool telemetry

Ref: https://cli.github.com/telemetry

Closes #21418

7 weeks agovtls: log when key logging is enabled.
Yedaya Katsman [Tue, 2 Dec 2025 16:15:47 +0000 (18:15 +0200)] 
vtls: log when key logging is enabled.

If built with LibreSSL, also warn that it only works for TLS <= 1.2

Inspired-by: Viktor Szakats
Closes #19814

7 weeks agourlapi: simplify urlget_url
Daniel Stenberg [Wed, 22 Apr 2026 21:37:57 +0000 (23:37 +0200)] 
urlapi: simplify urlget_url

- unify the query and fragment separator logic
- read the bitflags directly instead of via a temp variable
- narrow the scope of a few variables

Closes #21417

7 weeks agoGHA: deprioritize Azure Ubuntu mirror
Viktor Szakats [Wed, 22 Apr 2026 16:43:23 +0000 (18:43 +0200)] 
GHA: deprioritize Azure Ubuntu mirror

Due to year-long unreliability.

The default Ubuntu mirror works as fast as the Azure one when it's
working at its normal speed. And has HTTPS.

Also:
- replac the retry hack that turn out to not solve the problem.
- add timeouts to each download step to catch slowness early.

Follow-up to a5838847c4395cdf043d9a833f38d5ba0a704ca1 #21181
Follow-up to 5172ba5475cffc525c2338dfa63f818e11e80a42 #21107

Closes #21414

7 weeks agoasyn-thrdd: drop redundant `result` check
Viktor Szakats [Wed, 22 Apr 2026 15:34:57 +0000 (17:34 +0200)] 
asyn-thrdd: drop redundant `result` check

Pointed out by GitHub Code Quality

Closes #21415

7 weeks agoGHA: delete all apt sources except `ubuntu.sources`
Viktor Szakats [Wed, 22 Apr 2026 16:03:32 +0000 (18:03 +0200)] 
GHA: delete all apt sources except `ubuntu.sources`

GitHub runners are getting new 3rd-party sources frequntly now, last
week `docker.list`, this week: `google-chrome.sources`. To avoid
playing catch up, allowlist the only one we use: `ubuntu.sources`. If
this is renamed, CI would break. Let's hope this happens much less
often than new sources.

Bug: https://github.com/curl/curl/pull/21414#issuecomment-4297788640

Follow-up to 3e0e2cc1ab6f3f44c7d35e84256858edc2ef73f5 #21344

Closes #21416

7 weeks agoasyn-thrdd: minor without-IPv6 fixes
Daniel Stenberg [Wed, 22 Apr 2026 13:05:57 +0000 (15:05 +0200)] 
asyn-thrdd: minor without-IPv6 fixes

Pointed out by Copilot

Closes #21413

7 weeks agodocs: clarify retry-max-time timing
Dio Putra [Wed, 22 Apr 2026 10:36:36 +0000 (17:36 +0700)] 
docs: clarify retry-max-time timing

Closes #21411

7 weeks agoDockerfile: update debian:bookworm-slim Docker digest to f9c6a2f
renovate[bot] [Wed, 22 Apr 2026 02:54:52 +0000 (02:54 +0000)] 
Dockerfile: update debian:bookworm-slim Docker digest to f9c6a2f

Closes #21406

7 weeks agoappveyor: bump to OpenSSL 3.6
Viktor Szakats [Tue, 21 Apr 2026 22:24:55 +0000 (00:24 +0200)] 
appveyor: bump to OpenSSL 3.6

Closes #21405

7 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 22 Apr 2026 05:53:54 +0000 (07:53 +0200)] 
RELEASE-NOTES: synced

7 weeks agotool_operate: reset the upload glob counter for next URL
Daniel Stenberg [Tue, 21 Apr 2026 15:51:26 +0000 (17:51 +0200)] 
tool_operate: reset the upload glob counter for next URL

Fixes #21402

Adjust test 2012 and 2013 accordingly

Closes #21403

7 weeks agotool_operate: keep the filename for upload globbing
Daniel Stenberg [Tue, 21 Apr 2026 15:14:51 +0000 (17:14 +0200)] 
tool_operate: keep the filename for upload globbing

Follow-up to 19695e815c51f8830fc54255

Verify with test 2012 and 2013

Closes #21401

8 weeks agoruntests: allow %EMPTY in <stdout> to verify no output
Daniel Stenberg [Tue, 21 Apr 2026 15:15:05 +0000 (17:15 +0200)] 
runtests: allow %EMPTY in <stdout> to verify no output

8 weeks agoasync-ares: fix query counter handling
Stefan Eissing [Tue, 21 Apr 2026 13:06:46 +0000 (15:06 +0200)] 
async-ares: fix query counter handling

When starting an c-ares query, the provided callback may be invoked
right away, leading to a decrement of `queries_ongoing`. Increment
the counter *before* call c-ares. Otherwise, the `async->done` bit
is not properly set.

Closes #21399

8 weeks agolib557: add tests with flags AND conversion specifier
Daniel Stenberg [Tue, 21 Apr 2026 12:49:32 +0000 (14:49 +0200)] 
lib557: add tests with flags AND conversion specifier

Remove superfluous and never-built test code for systems with 16-bit and
64-bit ints and 16-bit longs, as we don't know any such.

8 weeks agomprintf: OR the flags
Daniel Stenberg [Tue, 21 Apr 2026 12:33:27 +0000 (14:33 +0200)] 
mprintf: OR the flags

As 'flags' may already have been set to something when
parse_conversion() is called, make sure to only OR the new flags.

Follow-up to 4e0bfd8cf73603697ddad5d25e94

Closes #21398

8 weeks agomisc: fix code quality findings
Viktor Szakats [Tue, 21 Apr 2026 08:14:16 +0000 (10:14 +0200)] 
misc: fix code quality findings

- httpsrr: drop redundant checks.
  Follow-up to 809dda3a37363160d4bf5ea2dafa0bcb8188a3f0 #21354
- httpsrr.h: drop obsolete comment.
  Follow-up to 2b3dfb4ad47ec05efad9af930c47968a49916999 #21175
- ws: drop redundant check in `curl_ws_start_frame()`.
  Follow-up to 37cecfc7b91118f116cf16af8f50a18b15d00d51 #17683
- ws: fix typo in comment.
- tool_operate: fix VMS build. (broken since 2019-07-20, v7.66.0)
  Follow-up to b88940850002a3f1c25bc6488b95ad30eb80d696 #3804

Pointed out by Copilot Code Quality

Closes #21393

8 weeks agoparsedate: refactor
Daniel Stenberg [Tue, 21 Apr 2026 07:19:53 +0000 (09:19 +0200)] 
parsedate: refactor

- introduce 'struct when' to hold the parser result
- initwhen() initializes a 'struct when'
- datestring() parses strings
- datenum() parses numbers
- datecheck() does some final checks
- tzadjust() adds the time zone offset
- convert math to 64 bit, squeeze into time_t only in the last step,
  mktimet() does the time_t storing

Closes #21394

8 weeks agowolfssl: fix `-Wmissing-prototypes`
Viktor Szakats [Tue, 21 Apr 2026 07:46:45 +0000 (09:46 +0200)] 
wolfssl: fix `-Wmissing-prototypes`

Seen with unity, H3, wolfssl with `HAVE_EX_DATA`.

Fixing:
```
lib/vtls/wolfssl.c:412:10: error: no previous prototype for function 'Curl_wssl_cache_session' [-Wmissing-prototypes]
  412 | CURLcode Curl_wssl_cache_session(struct Curl_cfilter *cf,
      |          ^
lib/vtls/wolfssl.c:412:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
  412 | CURLcode Curl_wssl_cache_session(struct Curl_cfilter *cf,
      | ^
      | static
1 error generated.
```

Follow-up to cc5c1553fbdb8c1391d0cf81134583ee32da64d4 #19852

Closes #21392

8 weeks agotool_operate: split create_single into smaller sub functions
Daniel Stenberg [Mon, 20 Apr 2026 14:55:38 +0000 (16:55 +0200)] 
tool_operate: split create_single into smaller sub functions

Reduces complexity from 58 => 32.

Closes #21389

8 weeks agomprintf: simplify parsefmt
Daniel Stenberg [Mon, 20 Apr 2026 22:08:39 +0000 (00:08 +0200)] 
mprintf: simplify parsefmt

- split out parse_flags() and parse_conversion() to reduce complexity
  from 57 to 30.

Closes #21391

8 weeks agolib: minor comment typos
Daniel Stenberg [Mon, 20 Apr 2026 20:30:31 +0000 (22:30 +0200)] 
lib: minor comment typos

Closes #21388

8 weeks agoHappy Eyeballs: add resolution time delay
Stefan Eissing [Fri, 17 Apr 2026 08:26:25 +0000 (10:26 +0200)] 
Happy Eyeballs: add resolution time delay

HEv3 describes conditions on when first connect attempts shall be
started.
https://www.ietf.org/archive/id/draft-ietf-happy-happyeyeballs-v3-01.html
Chapter 4.2

libcurl now waits 50ms for AAAA and HTTPS results (when requested) to
return before continuing with the connect.

Added HTTPS-RR to the "was resolved" information info message. Changed
logging of HTTPS-RR to a one-liner with RFC 9460 like formatting. This
way the user can see if/what was resolved and used in connecting.

Closes #21354

8 weeks agobuild: link `bcrypt.lib` via vcxproj files
Viktor Szakats [Mon, 20 Apr 2026 14:02:14 +0000 (16:02 +0200)] 
build: link `bcrypt.lib` via vcxproj files

And drop pragma from `rand.c`.

Closes #21386

8 weeks agolib: fix typos in comments
Daniel Stenberg [Mon, 20 Apr 2026 12:36:58 +0000 (14:36 +0200)] 
lib: fix typos in comments

Closes #21385

8 weeks agomime: only allow 40 levels of calls
Daniel Stenberg [Mon, 20 Apr 2026 08:28:28 +0000 (10:28 +0200)] 
mime: only allow 40 levels of calls

To avoid problems when doing insane things.

Closes #21384

8 weeks agovtls_scache: check reentrancy
Stefan Eissing [Mon, 20 Apr 2026 08:21:43 +0000 (10:21 +0200)] 
vtls_scache: check reentrancy

Track lock status of session cache, add DEBUGASSERT()s for proper
calling sequences. Add check of lock status.

Use lock status check to prevent reentry of import/export calls.
Deny such calls with CURLE_RECURSIVE_API_CALL.

Closes #21383

8 weeks agoGHA: bump test minimums (more)
Viktor Szakats [Mon, 20 Apr 2026 07:44:24 +0000 (09:44 +0200)] 
GHA: bump test minimums (more)

Follow-up to 701a8319ec96c0b73c39e16c5db68dd758419c2 #21353

Closes #21382

8 weeks agoGHA: use more OpenSSL 4, enable ECH in more jobs
Viktor Szakats [Sun, 19 Apr 2026 22:49:06 +0000 (00:49 +0200)] 
GHA: use more OpenSSL 4, enable ECH in more jobs

for Linux and macOS.

Closes #21379

8 weeks agoopenssl: fix unused variable warnings in !verbose builds
Viktor Szakats [Sun, 19 Apr 2026 23:12:34 +0000 (01:12 +0200)] 
openssl: fix unused variable warnings in !verbose builds

Also fix clang-tidy `readability-redundant-control-flow`.

```
lib/vtls/openssl.c:4055:46: error: unused parameter 'reason' [-Wunused-parameter]
 4055 |                                          int reason)
      |                                              ^
lib/vtls/openssl.c:4279:19: error: variable 'status' set but not used [-Wunused-but-set-variable]
 4279 |       const char *status = NULL;
      |                   ^
```
Ref: https://github.com/curl/curl/actions/runs/24641388439/job/72045859306?pr=21379

```
lib/vtls/openssl.c:4092:7: error: Value stored to 'rv' is never read [clang-analyzer-deadcode.DeadStores]
 4092 |       rv = SSL_ech_get1_status(ssl, &inner, &outer);
      |       ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/vtls/openssl.c:4092:7: note: Value stored to 'rv' is never read
 4092 |       rv = SSL_ech_get1_status(ssl, &inner, &outer);
      |       ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/vtls/openssl.c:4112:3: error: redundant return statement at the end of a function with a void return type [readability-redundant-control-flow]
 4111 | #endif
      | ~~~~~~
 4112 |   return;
      |   ^~~~~~~
 4113 | }
```
Ref: https://github.com/curl/curl/actions/runs/24642154148/job/72047919525?pr=21379#step:42:186

Cherry-picked from #21379

Closes #21380

8 weeks agotests: avoid infinite recursion for `make check`
Dag-Erling Smørgrav [Sun, 19 Apr 2026 16:14:44 +0000 (18:14 +0200)] 
tests: avoid infinite recursion for `make check`

The combination of a misspelled directory name and failing to check the
result of cd leads to infinite recursion as `make check` simply invokes
itself over and over.

Follow-up to 00887aee8ca0efe0b40fa41b2a36e2d853d49b57 #18079
Closes #21378

8 weeks agolib1960: fix test failure
Dag-Erling Smørgrav [Sun, 19 Apr 2026 16:09:29 +0000 (18:09 +0200)] 
lib1960: fix test failure

On platforms where struct sockaddr has a length field, the current code
leaves it uninitialized, resulting in a test failure when valgrind is
used.

Closes #21377

8 weeks agows: fix a blocking curl_ws_send() to report written length correctly
Stefan Eissing [Sun, 19 Apr 2026 08:10:58 +0000 (10:10 +0200)] 
ws: fix a blocking curl_ws_send() to report written length correctly

Fixes #21372
Reported-by: Yiwei Hou
Clkoses #21373

8 weeks agoGHA: keep testing 3 as openssl-prev, bump mainline to 4
Viktor Szakats [Sun, 19 Apr 2026 11:19:34 +0000 (13:19 +0200)] 
GHA: keep testing 3 as openssl-prev, bump mainline to 4

Ref: #21317
Ref: #21316

Closes #21376

8 weeks agoGHA: update dependency libressl/portable to v4.3.1
renovate[bot] [Sun, 19 Apr 2026 09:30:22 +0000 (09:30 +0000)] 
GHA: update dependency libressl/portable to v4.3.1

Closes #21365

8 weeks agoruntests: skip setting ed25519 SSH key format
Viktor Szakats [Sun, 19 Apr 2026 08:48:39 +0000 (10:48 +0200)] 
runtests: skip setting ed25519 SSH key format

`ssh-keygen -t ed25519` does not support PEM key format, and it
defaults to `RFC4716` which is what we want.

It affected GHA/windows tests that explicitly used ed25519 keys.

Also:
- GHA/windows: bump minimums to hopefully catch this early next time.
  1701a8319ec96c0b73c39e16c5db68dd758419c2 #21353
- merge two Perl lines.

Reported-by: herbenderbler on github
Fixes #21360
Follow-up to acda4eae5eeb24a7b0ab9ec7b1783d74eb43687c #21223

Closes #21374

8 weeks agoGHA: update dependency nghttp2/nghttp2 to v1.69.0
renovate[bot] [Sun, 19 Apr 2026 09:30:29 +0000 (09:30 +0000)] 
GHA: update dependency nghttp2/nghttp2 to v1.69.0

Closes #21375

8 weeks agodocs/libcurl: improve easy setopt examples
Daniel Stenberg [Sat, 18 Apr 2026 20:51:16 +0000 (22:51 +0200)] 
docs/libcurl: improve easy setopt examples

- always assign the curl_easy_perform() return code (and declare
  the necessary 'result' variable for it)

- always call curl_easy_cleanup() on the created easy handles

Closes #21364

8 weeks agoCURLOPT_RTSP_SESSION_ID.md: expand the comment
Daniel Stenberg [Sat, 18 Apr 2026 20:03:22 +0000 (22:03 +0200)] 
CURLOPT_RTSP_SESSION_ID.md: expand the comment

Enhance the example code

Closes #21363

8 weeks agoCURLOPT_RTSP_SESSION_ID.md: minor language fix
Daniel Stenberg [Fri, 17 Apr 2026 20:40:49 +0000 (22:40 +0200)] 
CURLOPT_RTSP_SESSION_ID.md: minor language fix

8 weeks agopytest: check 429 handling
Stefan Eissing [Fri, 17 Apr 2026 13:21:12 +0000 (15:21 +0200)] 
pytest: check 429 handling

Add a "limit" handler to httpd that responds 429 after 5 requests and
then 429s all requests for 2 seconds. After which another 4 requests are
served before 429 strikes again.

Closes #21357

8 weeks agohttp: clear digest nonce on cross-orgin redirect
Daniel Stenberg [Fri, 17 Apr 2026 14:25:26 +0000 (16:25 +0200)] 
http: clear digest nonce on cross-orgin redirect

Verify in test 1966

Reported-by: Yalguun Tumenkhuu
Closes #21359

8 weeks agoCURLOPT_RTSP_SESSION_ID.md: clarify reuse "dangers"
Daniel Stenberg [Fri, 17 Apr 2026 15:33:51 +0000 (17:33 +0200)] 
CURLOPT_RTSP_SESSION_ID.md: clarify reuse "dangers"

When re-using easy handles the session id stays, unless you do something
about it.

Closes #21358

8 weeks agounit1658: rename `CURLcode` to `result`
Viktor Szakats [Fri, 17 Apr 2026 11:17:17 +0000 (13:17 +0200)] 
unit1658: rename `CURLcode` to `result`

Closes #21356

8 weeks agoGHA: bump required test minimums
Viktor Szakats [Fri, 17 Apr 2026 10:31:59 +0000 (12:31 +0200)] 
GHA: bump required test minimums

Ref: https://testclutch.curl.se/static/reports/feature-matrix.html

Closes #21353

8 weeks agolib506: rename `CURLcode` variable to `result`
Viktor Szakats [Fri, 17 Apr 2026 09:45:03 +0000 (11:45 +0200)] 
lib506: rename `CURLcode` variable to `result`

Closes #21352

8 weeks agounit1675: fix `-Wformat-signedness`
Viktor Szakats [Fri, 17 Apr 2026 09:42:56 +0000 (11:42 +0200)] 
unit1675: fix `-Wformat-signedness`

Closes #21351

8 weeks agohaproxy: use correct ip version on client supplied address
Stefan Eissing [Thu, 16 Apr 2026 11:44:13 +0000 (13:44 +0200)] 
haproxy: use correct ip version on client supplied address

When a user supplies an IP address to use for the HAPROXY protocol,
the IP version reported must be deduced from the address and has
no relation to the IP version used for the upstream connection.

Add test3220 to verify.

Fixes #21340
Reported-by: Fiona Klute
Closes #21341

2 months agovtls_scache: rename `CURLcode` variable to `result`
Viktor Szakats [Thu, 16 Apr 2026 16:08:27 +0000 (18:08 +0200)] 
vtls_scache: rename `CURLcode` variable to `result`

Closes #21346

2 months agoRELEASE-NOTES: synced
Daniel Stenberg [Thu, 16 Apr 2026 20:56:46 +0000 (22:56 +0200)] 
RELEASE-NOTES: synced

2 months agodnsd: implement HTTPS-RR with alpn pref and no-default-alpn
Stefan Eissing [Thu, 16 Apr 2026 11:18:38 +0000 (13:18 +0200)] 
dnsd: implement HTTPS-RR with alpn pref and no-default-alpn

Support HTTPS records in dnsd that have ALPN preferences.

Add pytest test_22_* to verify that HTTPS record ALPN
preferencces take effect if the HTTPS resolve arrives in time.

Fix HTTPS eyeballing use of timeouts for second attempt. Also,
make an initial HTTP/1.1 attempt switch off HTTP/2.

Closes #21329

2 months agopytest_05_09: increase reliability
Stefan Eissing [Thu, 16 Apr 2026 07:14:58 +0000 (09:14 +0200)] 
pytest_05_09: increase reliability

Test has been flaky due to not waiting for the test server to be
listening. On slow CI systems, the started thread is late and the curl
command gets a refused connection.

Closes #21337

2 months agolib: rename more CURLcode variables to 'result'
Daniel Stenberg [Thu, 16 Apr 2026 20:10:50 +0000 (22:10 +0200)] 
lib: rename more CURLcode variables to 'result'

Closes #21348

2 months agohttp: clear credentials better on redirect
Daniel Stenberg [Thu, 16 Apr 2026 12:26:20 +0000 (14:26 +0200)] 
http: clear credentials better on redirect

Verify with test 2506: netrc with redirect using proxy

Updated test 998 which was wrong.

Reported-by: Muhamad Arga Reksapati
Closes #21345

2 months agoGHA: drop 3rd-party apt source `docker.list`
Viktor Szakats [Thu, 16 Apr 2026 13:13:25 +0000 (15:13 +0200)] 
GHA: drop 3rd-party apt source `docker.list`

Seen on `ubuntu-slim` runners.

Also:
- extend to two jobs to `ls -l` package sources on both ubuntu-latest,
  ubuntu-24.04-arm, and ubuntu-slim.
- drop former stray apt source `ondrej-ubuntu-php-noble.sources`.
  It's no longer present on the image.

Closes #21344

2 months agoGHA/http3-linux: update dependency ngtcp2/ngtcp2 to v1.22.1
renovate[bot] [Thu, 16 Apr 2026 11:57:50 +0000 (11:57 +0000)] 
GHA/http3-linux: update dependency ngtcp2/ngtcp2 to v1.22.1

Closes #21343

2 months agourlapi: same origin tests
Stefan Eissing [Wed, 15 Apr 2026 08:43:12 +0000 (10:43 +0200)] 
urlapi: same origin tests

Add new internal `curl_url_same_origin()` to check if a href has the
same origin as a base URL. Add test cases in test1675 and use this in
http2 push handling.

Closes #21328

2 months agobuild: adjust/add casts to fix `-Wformat-signedness`
Viktor Szakats [Sat, 7 Mar 2026 12:58:22 +0000 (13:58 +0100)] 
build: adjust/add casts to fix `-Wformat-signedness`

Also adjust a mask in `mqttd.c`.

Follow-up to 548c16a824017c49ee14dfb039ddc367fc37838d #21335
Cherry-picked from #20848

Closes #21339

2 months agolibssh2: allocate libssh2-friendly memory in kbd_callback
Daniel Stenberg [Thu, 16 Apr 2026 08:09:59 +0000 (10:09 +0200)] 
libssh2: allocate libssh2-friendly memory in kbd_callback

The function libssh2_userauth_keyboard_interactive_ex() calls the
callback and is documented to call free() on the memory returned to
libssh2 from the callback. libcurl can therefore not use the regular
curlx_strdup() for this, as that is not compatible in debug builds or
when curl_global_init_mem() is used.

Fixes #21336
Closes #21338

2 months agobuild: fix `-Wformat-signedness` by adjusting printf masks
Viktor Szakats [Thu, 16 Apr 2026 01:16:20 +0000 (03:16 +0200)] 
build: fix `-Wformat-signedness` by adjusting printf masks

- sync printf masks with the passed value.
- fix a couple of casts.

Cherry-picked from #20848

Closes #21335

2 months agoci: update RUSTLS_VERSION 0.15.1 -> 0.15.2
Daniel McCarney [Wed, 15 Apr 2026 13:46:07 +0000 (09:46 -0400)] 
ci: update RUSTLS_VERSION 0.15.1 -> 0.15.2

Closes #21333

2 months agounittests: cleanups
Daniel Stenberg [Wed, 15 Apr 2026 10:11:54 +0000 (12:11 +0200)] 
unittests: cleanups

- make sure all UNITTEST prototypes mark in which unit test they are used,
  with "@unittest" markup

- make sure all UNITTEST functions do not use Curl_ prefix, as that is a
  prefix we use for global private functions and these functions are static
  and therefore not global and the prefix is wrong

- drop UNITTEST for functions not used in unit tests

- make the extract-unit-protos script highlight the above issues if found

- extract-unit-protos now also outputs the unit test number for all the
  generated protos in lib/unitprotos.h to aid readers. It also adds the source
  file and line number where the proto originates from.

- extract-unit-protos now exits with a non-zero value if any of the above
  warnings are triggered

- cf-dns: Curl_cf_dns_result => static cf_dns_result
- hostip: Curl_ipv6works => static ipv6works
- url: remove Curl_setup_conn() - not used anymore
- connect: Curl_timeleft_now_ms => UNITTEST timeleft_now_ms

Closes #21330

2 months agorenovate: use standard bump formula for OpenSSL
Viktor Szakats [Wed, 15 Apr 2026 06:50:00 +0000 (08:50 +0200)] 
renovate: use standard bump formula for OpenSSL

Cherry-picked from #21317

Closes #21323

2 months agopytest: fix dnsd pid filename
Viktor Szakats [Tue, 14 Apr 2026 22:28:03 +0000 (00:28 +0200)] 
pytest: fix dnsd pid filename

Spotted by GitHub Code Quality

Follow-up to a5542c23e7427b8ea8f6183f503f2935d88d5d65 #21289

Closes #21321

2 months agotransfer: clear the old autoreferer
Daniel Stenberg [Wed, 15 Apr 2026 06:11:33 +0000 (08:11 +0200)] 
transfer: clear the old autoreferer

Verify in test 2505

Closes #21322

2 months agourlapi: make parse_file() return zero data on error
Daniel Stenberg [Wed, 15 Apr 2026 07:47:00 +0000 (09:47 +0200)] 
urlapi: make parse_file() return zero data on error

This fixes the torture failures in 1675

Also, make it allocate the scheme *after* the path has been verified, so
that it is avoided in the common error cases.

Fixes #21326
Closes #21324

2 months agoGHA/linux: tidy up and extend address-sanitizer job options
Viktor Szakats [Mon, 2 Mar 2026 00:46:13 +0000 (01:46 +0100)] 
GHA/linux: tidy up and extend address-sanitizer job options

Also tried `integer` which has hits, but too slow to be practical to run on
every commit.

Closes #20785

2 months agoGHA/non-native: bump cross-platform-actions to 1.0.0
Viktor Szakats [Tue, 14 Apr 2026 21:23:11 +0000 (23:23 +0200)] 
GHA/non-native: bump cross-platform-actions to 1.0.0

Closes #21320

2 months agoGHA/linux: rename mbedtls-prev env to align with Renovate
Viktor Szakats [Tue, 14 Apr 2026 15:48:18 +0000 (17:48 +0200)] 
GHA/linux: rename mbedtls-prev env to align with Renovate

- rename version env to stay compatible with Renovate `matchStrings`.
- also switch to manual bumps.
  Bump rule was wrong, and deemed not worthy the complexity to fix.

Closes #21319

2 months agoGHA/http3-linux: bump OpenSSL 4 beta to final
Viktor Szakats [Tue, 14 Apr 2026 15:29:31 +0000 (17:29 +0200)] 
GHA/http3-linux: bump OpenSSL 4 beta to final

Closes #21318

2 months agourldata: move cookiehost to struct SingleRequest
Daniel Stenberg [Tue, 14 Apr 2026 06:51:44 +0000 (08:51 +0200)] 
urldata: move cookiehost to struct SingleRequest

To make it scoped for the single request appropriately.

Reported-by: Muhamad Arga Reksapati
Verify with libtest 2504: a custom Host *disabled* on reused handle

Closes #21312

2 months agotest dnsd: implement delayed responses
Stefan Eissing [Mon, 13 Apr 2026 14:11:37 +0000 (16:11 +0200)] 
test dnsd: implement delayed responses

Add "Delay-A: ms", "Delay-AAAA: ms" and "Delay-HTTPS: ms" to the test
dnsd config and implement delayed response handling.

Add test_21_09 and test_21_10 to check that delayed responses connect
using the undelayed address family.

Closes #21299

2 months agosocks: use dns filter for resolving
Stefan Eissing [Mon, 13 Apr 2026 10:57:11 +0000 (12:57 +0200)] 
socks: use dns filter for resolving

Use a dns connection filter to resolve hostnames where their addresses
are locally resolved and forwarded to the SOCKS proxy.

This makes all improvements, like in #21295 for example, also apply
to socks connections. Curl_resolv() is now only called from a DNS
filter.

(ftp still calls Curl_resolv_blocking() in two places, one of which
 may be replaceable with a DNS filter as well to remove the block, tbd)

Closes #21297

2 months agotests: use %b64[] instead of "raw" base64
Daniel Stenberg [Tue, 14 Apr 2026 07:24:14 +0000 (09:24 +0200)] 
tests: use %b64[] instead of "raw" base64

Closes #21313

2 months agohttp: clear the proxy credentials as well on port or scheme change
Daniel Stenberg [Mon, 13 Apr 2026 15:17:23 +0000 (17:17 +0200)] 
http: clear the proxy credentials as well on port or scheme change

Add tests 2009-2011 to verify switching between proxies with credentials
when the switch is driven by a redirect

Reported-by: Dwij Mehta
Closes #21304

2 months agourlapi: stop extracting hostname from file:// URLs on Windows
Daniel Stenberg [Mon, 13 Apr 2026 12:55:16 +0000 (14:55 +0200)] 
urlapi: stop extracting hostname from file:// URLs on Windows

There is no reason we should treat this part different on Windows. Noe
anything except blank, localhost or 127.0.0.1 cause error there as well.

Also: fix query handling in urlencode_str

Closes #21296

2 months agotest1675: unit tests for URL API helper functions
Daniel Stenberg [Mon, 13 Apr 2026 10:46:45 +0000 (12:46 +0200)] 
test1675: unit tests for URL API helper functions

- ipv4_normalize
- urlencode_str
- ipv6_parse
- parse_file

urlapi: make the string URL encoder normalize to uppercase
percent-encoding

Closes #21296

2 months agolib1560: fix comment typo
Daniel Stenberg [Mon, 13 Apr 2026 20:43:53 +0000 (22:43 +0200)] 
lib1560: fix comment typo

2 months agorequest: cleanup the auth headers on soft rest as well
Daniel Stenberg [Tue, 14 Apr 2026 08:56:39 +0000 (10:56 +0200)] 
request: cleanup the auth headers on soft rest as well

To avoid the risk them lingering around.

Follow-up to 3512b673ddc54074676d

Closes #21311

2 months agoGHA: update dependency google/boringssl to v0.20260413.0
renovate[bot] [Tue, 14 Apr 2026 07:01:38 +0000 (07:01 +0000)] 
GHA: update dependency google/boringssl to v0.20260413.0

Closes #21310

2 months agohttp: use header_has_value() instead of duplicate code
Daniel Stenberg [Mon, 13 Apr 2026 20:30:13 +0000 (22:30 +0200)] 
http: use header_has_value() instead of duplicate code

Closes #21302

2 months agoGHA: bump pytest from 9.0.2 to 9.0.3
dependabot[bot] [Tue, 14 Apr 2026 00:24:46 +0000 (00:24 +0000)] 
GHA: bump pytest from 9.0.2 to 9.0.3

CVE-2025-71176

Closes #21306

2 months agoKNOWN_BUGS: Native CA roots incomplete on Windows with OpenSSL/fork
Viktor Szakats [Mon, 13 Apr 2026 23:37:50 +0000 (01:37 +0200)] 
KNOWN_BUGS: Native CA roots incomplete on Windows with OpenSSL/fork

Reported-by: finkjsc on github
Reported-by: nitrogene on github
Ref: #12303
Closes #20897

Closes #21305

2 months agoclang-tidy: enable more checks, fix fallouts
Viktor Szakats [Tue, 3 Mar 2026 00:58:29 +0000 (01:58 +0100)] 
clang-tidy: enable more checks, fix fallouts

- enable three checks:
  - bugprone-invalid-enum-default-initialization
  - bugprone-sizeof-expression
  - readability-inconsistent-declaration-parameter-name (strict)
- fix remaining discrepancies with arg names in prototypes
  and implementation, in strict mode.
- document reason for some checks tested but not enabled.

Closes #20794

2 months agotidy-up: miscellaneous
Viktor Szakats [Mon, 9 Mar 2026 11:27:12 +0000 (12:27 +0100)] 
tidy-up: miscellaneous

- examples: sync debug output printf masks.
- INSTALL-CMAKE.md: tidy up section for some options.
- curl_sha512_256: delete comment suggesting an optimization.
- vtls/keylog: scope a variable.
- vtls/openssl: make a source code URL a permalink.
- vtls/schannel: drop redundant parentheses.
- test1119.pl: robustify `$1` -> `$s`.
- sync arg names in comments to match the code.
- tidy up and minor fixes to comments.
- fix formatting/indenting/comment/newline/include nits.
- move `UNITTEST` protos next to definitions, sync their argument names.
- make variables static.
- add parentheses to Perl `open()` calls.
- drop unnecessary double quotes in Perl.
- clang-format.

Closes #21000