]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
4 days agourl.c: code/comment cleanup around conn creation
Stefan Eissing [Wed, 28 Jan 2026 16:20:57 +0000 (17:20 +0100)] 
url.c: code/comment cleanup around conn creation

Several comments were outdated and parameters to create_conn() and
ConnectionExists() were not needed. Give functions better names and
consistently use terms `needle` and `conn`.

No functional change.

Closes #20464

4 days agocurl: add -I and -i to -h important
jhauga [Fri, 30 Jan 2026 21:15:06 +0000 (16:15 -0500)] 
curl: add -I and -i to -h important

Closes #20483

4 days agoGHA: update google/boringssl to v0.20260204.0
renovate[bot] [Wed, 4 Feb 2026 18:10:39 +0000 (18:10 +0000)] 
GHA: update google/boringssl to v0.20260204.0

Closes #20519

4 days agomk-ca-bundle.pl: drop support for obsolete/insecure fingerprint algos
Viktor Szakats [Thu, 5 Feb 2026 13:32:35 +0000 (14:32 +0100)] 
mk-ca-bundle.pl: drop support for obsolete/insecure fingerprint algos

MD5 and SHA1 fingerprints can no longer be included in the output when
using the `-t` option.

Closes #20527

4 days agolib: disable websockets early if no http
Viktor Szakats [Thu, 5 Feb 2026 11:42:59 +0000 (12:42 +0100)] 
lib: disable websockets early if no http

To prevent inconsistent `CURL_DISABLE_WEBSOCKETS` states between source
files.

Follow-up to 8edc0338f30f458f812f9ea355de1240771fa343 #20351

Closes #20526

4 days agobuild: make `HTTP_ONLY` build options also disable websockets
Viktor Szakats [Thu, 5 Feb 2026 11:31:42 +0000 (12:31 +0100)] 
build: make `HTTP_ONLY` build options also disable websockets

Closes #20525

4 days agocmake: use `list(APPEND ...)` where missing
Viktor Szakats [Thu, 5 Feb 2026 11:15:07 +0000 (12:15 +0100)] 
cmake: use `list(APPEND ...)` where missing

Cherry-picked from #20407

Closes #20522

4 days agoGHA/linux-old: use tilde where possible and consistent
Viktor Szakats [Thu, 5 Feb 2026 11:18:42 +0000 (12:18 +0100)] 
GHA/linux-old: use tilde where possible and consistent

Cherry-picked from #20407

Closes #20524

4 days agoGHA/non-native: pin DJGPP toolchain to hash
Viktor Szakats [Thu, 5 Feb 2026 02:42:05 +0000 (03:42 +0100)] 
GHA/non-native: pin DJGPP toolchain to hash

This package is automatically bumped, but needs manual intervention
anyway, to update gcc version number in the filename.

Follow-up to 4ad0a022e1d47119c9f0b11068f3d0b0a932e989 #20517

Closes #20523

4 days agoCI: log downloaded file hashes, pin manually bumped ones
Viktor Szakats [Wed, 4 Feb 2026 13:54:26 +0000 (14:54 +0100)] 
CI: log downloaded file hashes, pin manually bumped ones

To ensure downloaded binaries are the expected ones. Also to document
SHA-256 hashes of all binary packages and source tarballs.

Closes #20517

5 days agobuild: use native file open flags in Windows-specific code
Viktor Szakats [Wed, 4 Feb 2026 13:32:11 +0000 (14:32 +0100)] 
build: use native file open flags in Windows-specific code

To comply with official documentation. Also to make code compile with
`NO_OLDNAMES` (mingw-w64) or `_CRT_DECLARE_NONSTDC_NAMES=0` (MSVC) set.

Ref: #15652

Closes #20516

5 days agomqtt: verify Remaining Length for CONNACK and PUBACK
Daniel Stenberg [Wed, 4 Feb 2026 10:00:56 +0000 (11:00 +0100)] 
mqtt: verify Remaining Length for CONNACK and PUBACK

Verified in test 1132

Closes #20513

5 days agoVULN-DISCLOSURE-POLICY.md: push reports to the web form
Daniel Stenberg [Wed, 4 Feb 2026 10:50:06 +0000 (11:50 +0100)] 
VULN-DISCLOSURE-POLICY.md: push reports to the web form

Closes #20515

5 days agoGHA/windows: set `lookup-only` in build-cache jobs
Viktor Szakats [Wed, 4 Feb 2026 01:40:27 +0000 (02:40 +0100)] 
GHA/windows: set `lookup-only` in build-cache jobs

To save a few seconds by not actually restoring the cache, just checking
if there is cache hit.

Follow-up to fb44e44d929f4e8eb140e5e1c7bd3a7f4d0e7d58 #20456

Closes #20512

5 days agobuild: move curl stat struct type to the curlx namespace
Viktor Szakats [Tue, 3 Feb 2026 14:06:07 +0000 (15:06 +0100)] 
build: move curl stat struct type to the curlx namespace

To match surrounding curlx symbols and functions.

Follow-up to a84b041281463315d3f8723febc97be1147964f4 #20496

Closes #20508

5 days agoimap: add a check for Curl_meta_get()
Daniel Stenberg [Tue, 3 Feb 2026 16:11:04 +0000 (17:11 +0100)] 
imap: add a check for Curl_meta_get()

It should not return NULL, but if it does we need to bail out. Like we
do elsewhere.a

Found by CodeSonar.
Closes #20510

5 days agomulti: update timer unconditionally in multi_remove_handle
Stefan Eissing [Tue, 3 Feb 2026 09:18:13 +0000 (10:18 +0100)] 
multi: update timer unconditionally in multi_remove_handle

When removing an easy handle from a multi, there was an optimization
to update the timer only when the removed handle had any timers.

With the introduction of the "dirty" bitset, easy handles can now cause
a timeout of 0 to be set without having anything in their timer list.
Removing such a handle needs to update the timer now always, so that
it may get cleared when there is nothing more to wait for.

The previous "not clearing a 0 timer" should not have any effect on
application's logic. Without clearing, the timer will fire and then
adjust itself to the proper value. But it would cause one more timer
fire than necessary.

Reported-by: Jan Macku
Fixes https://github.com/curl/curl/issues/20498
Closes https://github.com/curl/curl/pull/20502

6 days agobuild: require POSIX `strdup()`
Viktor Szakats [Mon, 2 Feb 2026 18:02:34 +0000 (19:02 +0100)] 
build: require POSIX `strdup()`

Stop detecting this function and drop the local fallback.

Let us know if this update is causing an issue.

Notes:
- on Windows `_strdup()` is required instead.
- `strdup()/_strdup()` were required before this patch to build one of
  the examples: `block_ip`.
- `strdup()/_strdup()` were required in 8.18.0 and earlier to build
  tests.

Closes #20505

6 days agofopen.h: simplify curl memory macro mappings
Viktor Szakats [Tue, 3 Feb 2026 10:34:07 +0000 (11:34 +0100)] 
fopen.h: simplify curl memory macro mappings

Closes #20506

6 days agocurlx: drop unused `curlx_saferealloc()`
Viktor Szakats [Tue, 3 Feb 2026 13:10:02 +0000 (14:10 +0100)] 
curlx: drop unused `curlx_saferealloc()`

Unused since 67ae101666f1023263c475b88b266bc9b5e658c0 #19949

Closes #20504

6 days agobuild: tidy up and dedupe `strdup` functions
Viktor Szakats [Mon, 2 Feb 2026 13:08:14 +0000 (14:08 +0100)] 
build: tidy up and dedupe `strdup` functions

- de-dupe lib/src strdup/memdup functions into curlx.
- introduce `CURLX_STRDUP_LOW()` for mapping `strdup()`, and to do it at
  one place within the code, in `curl_setup.h`.
- tests/server: use `curlx_strdup()`. (Also to fix building without
  a system `strdup()`.)
- curlx/curlx.h: shorten and tidy up.
- adjust Windows build path to not need `HAVE_STRDUP`.
- build: stop detecting `HAVE_STRDUP` on Windows.

Closes #20497

6 days agocurl_setup.h: simplify curl memory macro mappings
Viktor Szakats [Sun, 1 Feb 2026 01:02:59 +0000 (02:02 +0100)] 
curl_setup.h: simplify curl memory macro mappings

Full argument listing is redundant for `curl`-prefixed internal macros.

Closes #20499

6 days agotypos: silence false positives found in C code
Viktor Szakats [Mon, 2 Feb 2026 23:50:42 +0000 (00:50 +0100)] 
typos: silence false positives found in C code

Closes #20500

6 days agoRELEASE-NOTES: synced
Daniel Stenberg [Mon, 2 Feb 2026 22:44:30 +0000 (23:44 +0100)] 
RELEASE-NOTES: synced

6 days agohostip.c: fix leak of addrinfo
Stefan Eissing [Thu, 29 Jan 2026 10:59:05 +0000 (11:59 +0100)] 
hostip.c: fix leak of addrinfo

When creating a dns entry, the addrinfo is passed into the entry on
success and needed deallocation by the caller on failure.

Change the signature to have Curl_dnscache_mk_entry() *always* take
ownership of the addrinfo, even on failure. Change parameter to address
of pointer so that call always clears it.

This makes the handling of failures to Curl_dnscache_mk_entry() simpler.

Fixes #20465
Closes #20468

7 days agobuild: tidy up curl-specific fstat calls and stat struct type
Viktor Szakats [Mon, 2 Feb 2026 12:14:30 +0000 (13:14 +0100)] 
build: tidy up curl-specific fstat calls and stat struct type

To avoid redefining the `fstat` system symbol, and to clarify
`struct_stat` is a curl symbol.

- introduce `curlx_fstat()` macro and use it.
- rename `struct_stat` to `curl_struct_stat`.

Also:
- tests: replace direct `curlx_win32_stat()` call with `curlx_stat()`.
- checksrc: disallow direct `_fstati64` and `fstat()` calls, except in
  examples.

Closes #20496

7 days agobuild: use more `const`
Viktor Szakats [Sun, 1 Feb 2026 02:57:45 +0000 (03:57 +0100)] 
build: use more `const`

Mostly with `char *` types.

Also:
- mime, x509asn1, tool_operate, lib3207: drop redundant casts.
- examples/smooth-gtk-thread: add missing variable declaration.
- reduce variable scopes.
- tests/server: move `data_to_hex()` to its only user: `sws`.

Closes #20489

7 days agoftp: drop single-caller local verbose function
Viktor Szakats [Mon, 2 Feb 2026 03:12:43 +0000 (04:12 +0100)] 
ftp: drop single-caller local verbose function

Closes #20495

7 days agoftp: replace a `curlx_free()` with `curlx_dyn_free()`
Viktor Szakats [Mon, 2 Feb 2026 01:24:05 +0000 (02:24 +0100)] 
ftp: replace a `curlx_free()` with `curlx_dyn_free()`

On an error path.

Follow-up to f4beef524a53e1951c102fdb2ab96dd7a5e01077 #12638

Closes #20494

7 days agotest1604: avoid dynamic allocations
Viktor Szakats [Sun, 1 Feb 2026 21:17:44 +0000 (22:17 +0100)] 
test1604: avoid dynamic allocations

Closes #20493

7 days agotest1304: drop `CURL_UNCONST()`
Viktor Szakats [Sun, 1 Feb 2026 20:26:09 +0000 (21:26 +0100)] 
test1304: drop `CURL_UNCONST()`

Closes #20492

7 days agocmake: skip binutils ld hack if zlib/openssl target is not `IMPORTED`
Viktor Szakats [Sat, 31 Jan 2026 20:15:51 +0000 (21:15 +0100)] 
cmake: skip binutils ld hack if zlib/openssl target is not `IMPORTED`

The binutils ld hack requires reading the targets' `LOCATION` property.
This property exists in `IMPORTED` targets. `ZLIB::ZLIB` and
`OpenSSL::Crypto` are normally `IMPORTED` targets defined by CMake's
built-in Find modules. However, in some cases (e.g. in "superbuilds"),
they may be regular targets, defined manually, without a `LOCATION`
property. To avoid a CMake warning in such case, verify if the target is
`IMPORTED` before reading this property.

This also mean that in such case the binutils/ld/gcc hack is not
enabled, and libcurl may fail linking in static mode.

https://cmake.org/cmake/help/v4.2/prop_tgt/IMPORTED.html
https://cmake.org/cmake/help/v4.2/prop_tgt/LOCATION.html

Reported-by: Tomáš Malý
Fixes #20419
Follow-up to 3e841630ece59c04e26058a761302f38370fd0cc #20427
Follow-up to 16f073ef49f94412000218c9f6ad04e3fd7e4d01 #16973

Closes #20486

8 days agobuild: tidy up local `lseek()` mappings
Viktor Szakats [Sun, 1 Feb 2026 00:04:58 +0000 (01:04 +0100)] 
build: tidy up local `lseek()` mappings

- stop redefining system symbol `lseek`, by introducing `curl_lseek()`.
- handle AmigaOS quirk within the macro mapping.
- add missing parenthesis to `LSEEK_ERROR` values.
- tool_util: use curl `lseek` macros in `tool_ftruncate64()`.
- move `LSEEK_ERROR` to right-hand side of if expressions.
- checksrc: disallow direct uses of `_lseeki64`, `llseek`, `lseek`.

Closes #20488

8 days agoGHA: bump GHA and pip dependencies
dependabot[bot] [Sun, 1 Feb 2026 14:55:09 +0000 (14:55 +0000)] 
GHA: bump GHA and pip dependencies

- update `actions/checkout` from 6.0.1 to 6.0.2
- update `ruff` from 0.14.11 to 0.14.14
- update `cryptography` from 46.0.3 to 46.0.4
- update `psutil` from 7.2.1 to 7.2.2
- update `websockets` from 15.0.1 to 16.0

Closes #20490
Closes #20491

8 days agotidy-up: miscellaneous
Viktor Szakats [Fri, 23 Jan 2026 11:59:42 +0000 (12:59 +0100)] 
tidy-up: miscellaneous

- INSTALL-CMAKE.md: add missing periods, text fixes.
- md4, md5: sync variables names.
- curl_trc: sync an argument type.
- docs/examples: sync debug/trace function copies, constify, tidy-ups.
- replace commented code with `#if 0`.
- drop redundant parenthesis (macro values, `return`, around single
  variables, function calls).
- fix indentation, apply clang-format in places.

Closes #20481

9 days agoCURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md: fix available protocols
Jay Satiro [Sat, 31 Jan 2026 19:36:25 +0000 (14:36 -0500)] 
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md: fix available protocols

Bug: https://curl.se/mail/lib-2026-01/0033.html
Reported-by: Tenant HellTower (Negar)
10 days agovtls: dedupe common on-session-reuse logic
Viktor Szakats [Thu, 29 Jan 2026 16:01:21 +0000 (17:01 +0100)] 
vtls: dedupe common on-session-reuse logic

Closes #20475

10 days agossh: dedupe state change function
Viktor Szakats [Thu, 29 Jan 2026 15:07:26 +0000 (16:07 +0100)] 
ssh: dedupe state change function

Closes #20473

10 days agocmake: improve setting up runtests in Windows cross-builds
Viktor Szakats [Thu, 29 Jan 2026 19:55:27 +0000 (20:55 +0100)] 
cmake: improve setting up runtests in Windows cross-builds

Closes #20479

10 days agoGHA/windows: fix typo in test number [ci skip]
Viktor Szakats [Thu, 29 Jan 2026 23:23:57 +0000 (00:23 +0100)] 
GHA/windows: fix typo in test number [ci skip]

Follow-up to 3ae234b2a3aca14908c292ac09755f6c08daac1a #20462

10 days agotests/server/sockfilt: avoid possible endless loop on Windows
Viktor Szakats [Thu, 29 Jan 2026 21:57:19 +0000 (22:57 +0100)] 
tests/server/sockfilt: avoid possible endless loop on Windows

Seen to happen when run under WINE v10.0 on macOS.
```
$ CURL_TEST_EXE_EXT_SRV=.exe CURL_TEST_EXE_EXT_TOOL=.exe \
CURL_TEST_EXE_RUNNER=wine TFLAGS='951 -t' ninja tests
[...]
16:02:18.607002 [select_ws_wait_thread] PeekNamedPipe error: (0x00000032) - Request not supported.
[...endless repeat...]
```

Closes #20478

10 days agotests/server: tidy-up error messages (Windows)
Viktor Szakats [Thu, 29 Jan 2026 19:54:17 +0000 (20:54 +0100)] 
tests/server: tidy-up error messages (Windows)

- show error description on `PeekNamedPipe()` error.
- show `GetLastError()` instead of socket error on non-socket failures
  in the window handler.
- include full hex `GetLastError()` numbers in error messages, syncing
  with Schannel code.
- drop internal `win32_perror()` function, in favor of direct
  `curlx_*strerror()` calls.

Closes #20477

10 days agotool_help.h: drop redundant `U` suffix from literals
Viktor Szakats [Thu, 29 Jan 2026 18:37:24 +0000 (19:37 +0100)] 
tool_help.h: drop redundant `U` suffix from literals

Also:
- update the generator script accordingly.
- convert lowercase `u` suffix to uppercase to match rest of code.

Closes #20476

11 days agohttp2: dedupe nghttp2 verbose frame print function
Viktor Szakats [Thu, 29 Jan 2026 14:59:15 +0000 (15:59 +0100)] 
http2: dedupe nghttp2 verbose frame print function

Closes #20472

11 days agomd4, md5: replace custom types with `uint32_t`
Viktor Szakats [Thu, 29 Jan 2026 12:46:24 +0000 (13:46 +0100)] 
md4, md5: replace custom types with `uint32_t`

Closes #20469

11 days agosetup-os400.h: drop no longer used custom type `u_int32_t`
Viktor Szakats [Thu, 29 Jan 2026 12:49:08 +0000 (13:49 +0100)] 
setup-os400.h: drop no longer used custom type `u_int32_t`

Unused since bb5529331334e1e1c79ff3320220bba12fc8457d.

Closes #20470

11 days agosend: drop `CURL_UNCONST()` from buffer argument on most platforms
Viktor Szakats [Wed, 28 Jan 2026 14:24:09 +0000 (15:24 +0100)] 
send: drop `CURL_UNCONST()` from buffer argument on most platforms

Keep it on platforms requiring a non-const buffer. These are AmigaOS and
OS400.

Also:
- replace `SEND_QUAL_ARG2` with boolean macro `SEND_NONCONST_ARG2`.

Closes #20463

11 days agoGHA/macos: merge an autotools job into a cmake one, drop an iOS job
Viktor Szakats [Thu, 29 Jan 2026 01:28:21 +0000 (02:28 +0100)] 
GHA/macos: merge an autotools job into a cmake one, drop an iOS job

Merging the two macOS jobs saves 4-5 minutes. The dropped iOS Ninja job
saves 0.5-1 minute. (Keep the two slow iOS jobs to maintain variation.)

Number of Apple jobs is 32 after this patch.

Also:
- skip building tests and example in iOS autotools to save 30-40s.

Closes #20467

12 days agodocs: document the need for a 64-bit type and stdint.h
Dan Fandrich [Thu, 9 Jan 2025 18:57:39 +0000 (10:57 -0800)] 
docs: document the need for a 64-bit type and stdint.h

These are requirements above and above C89.

Ref: #20406

Closes #20384

12 days agoGHA/windows: mark test 3001 flaky in native Windows jobs
Viktor Szakats [Wed, 28 Jan 2026 14:12:46 +0000 (15:12 +0100)] 
GHA/windows: mark test 3001 flaky in native Windows jobs

It has been happening for a long time.

Example:
```
test 3001...[HTTPS localhost, last subject alt name matches, CN does not match]

 3001: protocol FAILED!
 There was no content at all in the file log/7/server.input.
 Server glitch? Total curl failure? Returned: 56
== Contents of files in the log/7/ directory after test 3001
=== Start of file commands.log
 ../src/curl.exe -q --output log/7/curl3001.out  --include --trace-ascii log/7/trace3001 --trace-time -4 --cacert ./certs/test-ca.crt https://localhost:64259/3001 > log/7/stdout3001 2> log/7/stderr3001
=== End of file commands.log
=== Start of file http_server.log
 13:57:47.951283 Running HTTP IPv4 version on port 64256
=== End of file http_server.log
=== Start of file https_stunnel.log
 2026.01.28 13:57:48 LOG5[ui]: stunnel 5.76 on x64-pc-mingw32-gnu platform
 2026.01.28 13:57:48 LOG5[ui]: Compiled/running with OpenSSL 3.5.4 30 Sep 2025
 [...]
 2026.01.28 13:57:49 LOG5[0]: Service [curltest] accepted connection from 127.0.0.1:64281
 2026.01.28 13:57:51 LOG3[0]: s_connect: connect 127.0.0.1:64256: Connection refused (WSAECONNREFUSED) (10061)
 2026.01.28 13:57:51 LOG3[0]: No more addresses to connect
 2026.01.28 13:57:51 LOG5[0]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket
=== End of file https_stunnel.log
=== Start of file server.cmd
 Testnum 3001
=== End of file server.cmd
=== Start of file stderr3001
 curl: (56) Recv failure: Connection was reset
=== End of file stderr3001
[...]
RUN: Unknown server on our https port: 64259 (56)
```

Ref: https://github.com/curl/curl/actions/runs/21440845836/job/61743268798?pr=20461

Closes #20462

12 days agotests/server: drop stray casts from `swrite`/`sread` arguments
Viktor Szakats [Wed, 28 Jan 2026 13:50:19 +0000 (14:50 +0100)] 
tests/server: drop stray casts from `swrite`/`sread` arguments

Closes #20461

12 days agotests/server: replace 4 remaining `send()` calls with `swrite()`
Viktor Szakats [Wed, 28 Jan 2026 13:35:18 +0000 (14:35 +0100)] 
tests/server: replace 4 remaining `send()` calls with `swrite()`

They were masked by `()`, which was also not necessary anymore.

Follow-up to 483f4291fb8134a31c437e82212d541782121ad7 #20459
Follow-up to a585cc35e57fc06806443207e31a244c9df029bb #20097
Follow-up to bf7375ecc50e857760b0d0a668c436e208a400bd #18503

Closes #20460

12 days agobuild: replace `send`/`recv` with `swrite`/`sread` where missing
Viktor Szakats [Wed, 28 Jan 2026 11:57:23 +0000 (12:57 +0100)] 
build: replace `send`/`recv` with `swrite`/`sread` where missing

Also:
- checksrc: ban `send` and `recv`, as documented in `CODE_STYLE.md`.

Follow-up to 9a2663322c330ff11275abafd612e9c99407a94a #17572
Ref: a585cc35e57fc06806443207e31a244c9df029bb #20097
Ref: #20441

Closes #20459

12 days agobuild: assume `stdint.h`
Viktor Szakats [Wed, 21 Jan 2026 15:20:51 +0000 (16:20 +0100)] 
build: assume `stdint.h`

curl requires `stdint.h` from C99, and no longer builds without it since
v8.18.0 (after dropping VS2008 support). Assume it's available, drop
feature checks.

Also:
- drop duplicate `stdint.h` includes.
- introduce internal `HAVE_UINTPTR_T`, enabled by default.
- OS400: disable `HAVE_UINTPTR_T`.
- build: keep cmake pre-fill and `cmp-config.pl` exception because cmake
  and autotools both detect `stdint.h` implicitly.

Co-authored-by: Dan Fandrich
Ref: #20405
Ref: #20384
Follow-up to 2e1a045d8985e5daa4d9a4f908ed870a16d8e41e #17931

Closes #20406

12 days agopytest: remove 03_02
Stefan Eissing [Wed, 28 Jan 2026 08:46:18 +0000 (09:46 +0100)] 
pytest: remove 03_02

The test for restarting the server during ongoing transfers does not
work reliably for HTTP/3. This seems due to the nature of UDP/QUIC where
the client may learn about a closed connection at any time, not only
when starting a new request.

Remove the test.

Closes #20458

12 days agoimap: fix custom listing
Christian Schmitz [Mon, 19 Jan 2026 16:01:16 +0000 (17:01 +0100)] 
imap: fix custom listing

Add test 1847 and 1848.

Fixes #20356
Closes #20360

12 days agovquic: handle SOCKEMSGSIZE correctly
Stefan Eissing [Tue, 27 Jan 2026 13:27:24 +0000 (14:27 +0100)] 
vquic: handle SOCKEMSGSIZE correctly

Report UDP packets with SOCKEMSGSIZE as being "sent" to progress
the send buffer properly on PMTUD probes.

Reported-by: Daniil Gentili
Fixes #20440
Closes #20448

12 days agocf-socket: use SOCK_CLOEXEC in socket_open when available
Itay Bookstein [Mon, 26 Jan 2026 18:23:18 +0000 (20:23 +0200)] 
cf-socket: use SOCK_CLOEXEC in socket_open when available

To close the possible race between socket() and fcntl(), we use
SOCK_CLOEXEC instead of fcntl() when it is available.

Closes #20442

12 days agoh2+h3: align stream close handling
Stefan Eissing [Wed, 7 Jan 2026 14:07:13 +0000 (15:07 +0100)] 
h2+h3: align stream close handling

For HTTP/2, add error code description to close failures.

For HTTP/3, add special handling like in HTTP/2 when streams
have been rejected or an error comes during the response body
and we are not interested in the body.

Closes #20207

12 days agoGHA: update openssl/openssl to v3.6.1
renovate[bot] [Tue, 27 Jan 2026 13:57:19 +0000 (13:57 +0000)] 
GHA: update openssl/openssl to v3.6.1

Closes #20449

12 days agowindows: `USE_WINSOCK` to guard winsock2 code (where missing)
Viktor Szakats [Tue, 27 Jan 2026 22:53:05 +0000 (23:53 +0100)] 
windows: `USE_WINSOCK` to guard winsock2 code (where missing)

Replacing `_WIN32`.

Also:
- tool_doswin: guard possibly non-portable socket code with
  `USE_WINSOCK`. The socket is cast to `HANDLE` and passed to
  win32 API `SetStdHandle(STD_INPUT_HANDLE, ...)`.
- lib/setup-win32.h: move `#undef`s before their `#define` pair.

Closes #20455

12 days agotool_doswin: avoid Windowsisms in socket code (cont.)
Viktor Szakats [Tue, 27 Jan 2026 23:46:37 +0000 (00:46 +0100)] 
tool_doswin: avoid Windowsisms in socket code (cont.)

For general readability. Also to match the rest of the source code.

- bump `send()` result type from `int` to `ssize_t`.
- fix an `int` to be `curl_socklen_t`.
- `.S_un.S_addr` -> `.s_addr`.
- `SD_RECEIVE` -> `SHUT_RD`.
- `SD_SEND` -> `SHUT_WR`.

Follow-up to a81ab3e6db370f31fca2fc67ca8bfda263f15caa #20452
Follow-up to 9a2663322c330ff11275abafd612e9c99407a94a #17572

Closes #20457

12 days agoGHA/windows: fix shell, fix GHA fail to share cache between arm and intel Windows
Viktor Szakats [Tue, 27 Jan 2026 23:15:45 +0000 (00:15 +0100)] 
GHA/windows: fix shell, fix GHA fail to share cache between arm and intel Windows

A cache entry created by windows-2022 is not picked up by
windows-11-arm. Also a cache created by windows-11-arm is not picked up
by windows-2022. Possibly related to this filed in 2025 June:
https://github.com/actions/cache/issues/1622. Also tried
`enableCrossOsArchive` to no avail. Unclear if these two runners count
as distinct operating systems, I'd guess not. Cache entries are
identical on the web UI. Via GH API they show up with the same cache key
bot different "version" (hash) and different sizes, possibly due to the
zstd vs. gzip bug above.

Fixing (identical error text on either runner):
```
Error: Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: Windows-stunnel-5.76-amd64
```

Also fix a silly typo in the shell value.

Follow-up to 0f54ca6150f5bff5e8eb8b165de86262e98f5e69 #20454
Closes #20456

12 days agotls: remove checks for DEFAULT
Daniel Stenberg [Tue, 27 Jan 2026 15:59:32 +0000 (16:59 +0100)] 
tls: remove checks for DEFAULT

Since 9d8998c99408e1adf, the setopt code changes input DEFAULT to an
actual more specific TLS version (1.2) for the backends to use and check
for.

This means that the default value (0L) cannot and should not actually be
used when the TLS backends run. This change adds asserts to verify that
and removes code that accepts the DEFAULT value as a valid version with
the TLS version functions' logic.

Applications can still set a specific lower version if they want (1, 1.0
or 1.1).

Closes #20453

12 days agoTODO: remove item about signals
Stefan Eissing [Tue, 27 Jan 2026 13:00:30 +0000 (14:00 +0100)] 
TODO: remove item about signals

With SIGPIPE handling now automatic on most platforms, remove the
TODO item again.

Closes #20447

13 days agoGHA/windows: cache stunnel
Viktor Szakats [Tue, 27 Jan 2026 16:27:53 +0000 (17:27 +0100)] 
GHA/windows: cache stunnel

To avoid hammering `stunnel.org`.

Follow-up to 7c3a4a4b4cffa7a335ce383da84e8b758ee5cafa #20410

Closes #20454

13 days agotool_doswin: avoid Windowsisms in socket code
Viktor Szakats [Tue, 27 Jan 2026 05:09:40 +0000 (06:09 +0100)] 
tool_doswin: avoid Windowsisms in socket code

For general readability. Also to match the rest of the source code.

- `SOCKADDR` -> `struct sockaddr`
- `SOCKADDR_IN` -> `struct sockaddr_in`
- `== SOCKET_ERROR` -> `== -1` or silent `!= 0`

Follow-up to 9a2663322c330ff11275abafd612e9c99407a94a #17572

Closes #20452

13 days agocmake: initialize internal `CURL_INCLUDES` variable
Viktor Szakats [Tue, 27 Jan 2026 14:04:05 +0000 (15:04 +0100)] 
cmake: initialize internal `CURL_INCLUDES` variable

Closes #20451

13 days agoINSTALL-CMAKE.md: document new static options as experimental
Viktor Szakats [Tue, 27 Jan 2026 14:00:24 +0000 (15:00 +0100)] 
INSTALL-CMAKE.md: document new static options as experimental

Follow-up to 26c39d8df182a63d28d81ed2b044e6a343519d1a #20015

Closes #20450

13 days agocmake/FindGSS: add backtick missing from comment
Viktor Szakats [Tue, 27 Jan 2026 14:08:20 +0000 (15:08 +0100)] 
cmake/FindGSS: add backtick missing from comment

Follow-up to 16f073ef49f94412000218c9f6ad04e3fd7e4d01 #16973

13 days agoOpenSSL: check reuse of sessions for verify status
Stefan Eissing [Tue, 27 Jan 2026 12:28:09 +0000 (13:28 +0100)] 
OpenSSL: check reuse of sessions for verify status

OpenSSL records its peer verification status inside its SSL_SESSION
objects. When a session is later reused, the SSL connection inherits
this verify status.

Session keys prevent reuse of sessions between connections that verify
the peer and those who do not. However, when Apple SecTrust is used
to verify a connection, this does not update the Sessions verify
status (and there is no setter). On session reuse, OpenSSL fails
the verification and Apple SecTrust cannot verify either since the
certificate peer chain is not available.

Fix this by checking the verification status on session reuse and
remove the session again if the peer needs to be verified, but the
session is not.

Reported-by: Christian Schmitza
Fixes #20435
Closes #20446

13 days agocurl_multi_perform.md: resolve inconsistency
Billy O'Neal [Tue, 27 Jan 2026 00:03:33 +0000 (16:03 -0800)] 
curl_multi_perform.md: resolve inconsistency

... between curl_multi_perform and curl_multi_wait/poll documentation

The `curl_multi_perform` documentation uses integer contextual
conversion to `bool` to test the resulting `CURLMcode`, while other
functions like `curl_multi_wait` and `curl_multi_poll` test against
`CURLM_OK`. (I was initially confused by this as it looked like some
docs call curl_multi_wait/poll on error, while some called only on
success. But that was my misread, not a docs problem.)

Also fixed the example to print which function call failed; previously
an error reported by `curl_multi_perform` was printed as a failure of
`curl_multi_wait`.

Closes #20444

2 weeks agodocs: add LibreELEC to DISTROS.md
Dan Fandrich [Mon, 26 Jan 2026 20:12:05 +0000 (12:12 -0800)] 
docs: add LibreELEC to DISTROS.md

2 weeks agochecksrc-all.pl: skip non-repository files
Viktor Szakats [Mon, 26 Jan 2026 12:44:55 +0000 (13:44 +0100)] 
checksrc-all.pl: skip non-repository files

To avoid noise due to local C files when using automatic local checksrc
checks (e.g. via CMake `-DCURL_LINT=ON` option, or `curl-lint` target).

Also replace single-quote with double-quote in external git command, for
portability.

Follow-up to 88ff396549e12f070c65e69a0411d2e3e00be5b0 #17882
Follow-up to e785e898a6a32fc63b35615b55a147d309082f3d #17376

Closes #20439

2 weeks agoinclude: mask computed auth/proto bitmasks to 32 bits
Arnav-Purushotam-CUBoulder [Sat, 24 Jan 2026 17:11:14 +0000 (10:11 -0700)] 
include: mask computed auth/proto bitmasks to 32 bits

GCC 15.2 warns when assigning computed "all" bitmask macros to 32-bit
flag types because negated masks expand to the full width of unsigned
long/long on 64-bit platforms.

Mask these macros to a 32-bit domain so they do not set high bits and
avoid -Woverflow/-Wconversion warnings in callers.

Reported-by: Patrick Monnerat
Fixes #20242
Closes #20416

2 weeks agotool: rename curl handle and result variable in `--libcurl`-generated code
Viktor Szakats [Sun, 25 Jan 2026 17:14:23 +0000 (18:14 +0100)] 
tool: rename curl handle and result variable in `--libcurl`-generated code

To match documentation, examples and curl source code:
- `hnd` -> `curl`
- `ret` -> `result`

Closes #20437

2 weeks agotool_cb_hdr: with -J, use the redirect name as a backup
Daniel Stenberg [Sun, 25 Jan 2026 15:35:53 +0000 (16:35 +0100)] 
tool_cb_hdr: with -J, use the redirect name as a backup

The -J / --remote-header-name logic now records the file name part used
in the redirects so that it can use the last one as a name if no
Content-Disposition header arrives.

Add tests to verify:

1641: -J with a redirect and extract the CD contents in the second
response

1642: -J with a redirect but no Content-Disposition, use the name from
the Location: header

1643: -J with two redirects, using the last file name and also use
queries and fragments to verify them stripped off

Closes #20430

2 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Mon, 26 Jan 2026 11:47:02 +0000 (12:47 +0100)] 
RELEASE-NOTES: synced

2 weeks agoRELEASE-PROCEDURE.md: update future release dates
Daniel Stenberg [Mon, 26 Jan 2026 11:28:06 +0000 (12:28 +0100)] 
RELEASE-PROCEDURE.md: update future release dates

2 weeks agoGHA: sync up configure option order across builds
Viktor Szakats [Sat, 24 Jan 2026 22:22:21 +0000 (23:22 +0100)] 
GHA: sync up configure option order across builds

Closes #20423

2 weeks agoBUG-BOUNTY.md: we stop the bug-bounty end of Jan 2026
Daniel Stenberg [Thu, 22 Jan 2026 08:41:47 +0000 (09:41 +0100)] 
BUG-BOUNTY.md: we stop the bug-bounty end of Jan 2026

Remove mentions of the bounty and hackerone.

Closes #20312

2 weeks agotests: rename more `CURLcode` variables to `result`
Viktor Szakats [Sun, 25 Jan 2026 17:12:40 +0000 (18:12 +0100)] 
tests: rename more `CURLcode` variables to `result`

For consistency.

Also:
- one remaining in `src/tool_writeout.c`.
- replace casting an `int` to `CURLcode`.
- lib758: rename `CURLMcode` `result` to `mresult`.
- move literals to the right side of if expressions.

Follow-up to d0dc6e2ec059bf306f32e7a49e9ff7425cd26fcd #20426
Follow-up to 56f600ec23cab41fcced293ada81c8a30ac9cc87

Closes #20432

2 weeks agocmke: add `*_USE_STATIC_LIBS` options for 9 dependencies
Viktor Szakats [Tue, 16 Dec 2025 23:11:52 +0000 (00:11 +0100)] 
cmke: add `*_USE_STATIC_LIBS` options for 9 dependencies

Via options:

- `BROTLI_USE_STATIC_LIBS`
- `CARES_USE_STATIC_LIBS`
- `LIBSSH_USE_STATIC_LIBS`
- `LIBSSH2_USE_STATIC_LIBS`
- `MBEDTLS_USE_STATIC_LIBS`
- `NGHTTP2_USE_STATIC_LIBS`
- `NGHTTP3_USE_STATIC_LIBS`
- `NGTCP2_USE_STATIC_LIBS`
- `ZSTD_USE_STATIC_LIBS`

When enabled, make a "best effort" finding static libs first and set
the "build static" macro (on Windows) as required by the dependency.

When doing `pkg-config`-based detections, make curl select the static
configuration, which shall set the "build static" macro also.

These options resemble CMake's `OPENSSL_USE_STATIC_LIBS` and
`ZLIB_USE_STATIC_LIBS` (the latter does not support `pkg-config` as of
CMake v4.2.2).

Shared/static library selection based on loose filename conventions is
fragile and prone to break if the non-static-suffixed library is found
and happens to be a shared library, or, if the linker decides to pick up
a shared copy (e.g. `.a.dll`) that shadows the static one. It may help
to provide either static or shared, but not both, on the disk, and match
that with this setting.

Experimental.

Ref: #20013
Closes #20015

2 weeks agocmake: add `CURL_BUILD_EVERYTHING` option
Viktor Szakats [Sun, 25 Jan 2026 13:10:16 +0000 (14:10 +0100)] 
cmake: add `CURL_BUILD_EVERYTHING` option

To build all targets in a single go, meaning curl and libcurl as normal,
and tests and examples in addition. To build-test everything without
running multiple cmake commands.

Enable with:
- `-DCURL_BUILD_EVERYTHING=ON`
  Special values: `QUICK` to build examples quickly for build test,
  `NOEXAMPLES` to not build examples.

A well-equipped build takes 2.8s of configure time, and 1.7s to build
everything (shared, unity, ninja, prefill), 1.4s with `QUICK`. Without
this option it takes <1s to build curl/libcurl.

Also: streamline `CURL_LINT` internal logic.

Closes #20429

2 weeks agocmake: enable binutils ld workaround for all toolchains at build-time
Viktor Szakats [Sun, 25 Jan 2026 19:54:55 +0000 (20:54 +0100)] 
cmake: enable binutils ld workaround for all toolchains at build-time

To make it available for GCC if used when consuming libcurl.

Also add comment to `curl-config.cmake` explaining why these odd targets
are defined there.

Bug: https://github.com/curl/curl/pull/20382#discussion_r2716660108
Follow-up to 3e841630ece59c04e26058a761302f38370fd0cc #20427
Follow-up to ef3101d1819928a7799309a16cc531818778e5c7 #20382
Follow-up to 16f073ef49f94412000218c9f6ad04e3fd7e4d01 #16973

Closes #20434

2 weeks agocmake: fix logic for openssl/zlib binutils ld workaround
Viktor Szakats [Sun, 25 Jan 2026 12:04:58 +0000 (13:04 +0100)] 
cmake: fix logic for openssl/zlib binutils ld workaround

While working #16973, the binutils ld lib order workaround logic
regressed so that it modified the wrong target, writing into the system
`ZLIB::ZLIB` and `OpenSSL::Crypto` ones a `INTERFACE_LINK_LIBRARIES`
property, instead of creating CURL-namespaced targets. Oddly enough,
this also fixed the binutils ld lib ordering issue. It seems this
property makes CMake insert each referenced library in two more
positions (not at the very end though), which allows ld to resolve all
symbols in the cases tested in CI.

Fix by creating the indented namespaced targets, and also creating
these in `curl-config.cmake` to be available when consuming libcurl.

Note that the logic continues doing `get_target_property()` on the two
system targets above. If these targets are defined manually and miss
the `LOCATION` propery, or are defined as aliases, this command may
fail. curl expects these targets be created by CMake's `FindZLIB` and
`FindOpenSSL` built-in Find modules (or ones compatible). Ref: #20419

The binutils ld issue is reproduced by these CI jobs:
 - Linux gcc glibc (amd64, arm64)
- Windows gcc zlib-classic (x64)

Currently using this curl-for-win revision:
https://github.com/curl/curl-for-win/commit/7d12669dafc5aadb525415abde2152a44e10f07d
Examples:
https://github.com/curl/curl/actions/runs/21332437230/job/61399234023?pr=20427
https://github.com/curl/curl/actions/runs/21332437230/job/61399234033?pr=20427

Comparison of lib orders, as passed by CMake to the linker:

without workaround (possibly breaking binutils `ld`):
```diff
 -framework [...]
 libssl.dylib
 libcrypto.dylib
 libz.tbd
 -lssh2 -lidn2
 libldap.tbd
 liblber.tbd
 -lbrotlidec -lbrotlicommon -lzstd -lnghttp2 -lpsl -lrtmp
 -lz
 -lssl
 -lcrypto
```

before this patch:
```diff
 -framework [...]
 libssl.dylib
 libcrypto.dylib
 libz.tbd
+libcrypto.dylib <== inserted via `INTERFACE_LINK_LIBRARIES`
+libz.tbd        <== inserted via `INTERFACE_LINK_LIBRARIES`
 -lssh2 -lidn2
 libldap.tbd
 liblber.tbd
+libcrypto.dylib <== inserted via `INTERFACE_LINK_LIBRARIES`
+ibz.tbd         <== inserted via `INTERFACE_LINK_LIBRARIES`
 -lbrotlidec -lbrotlicommon -lzstd -lnghttp2 -lpsl -lrtmp
 -lz
 -lssl
 -lcrypto
```

after this patch:
```diff
 -framework [...]
 libssl.dylib
 libcrypto.dylib
 libz.tbd
 -lssh2 -lidn2
 libldap.tbd
 liblber.tbd
 -lbrotlidec -lbrotlicommon -lzstd -lnghttp2 -lpsl -lrtmp
 -lz
 -lssl
 -lcrypto
+libcrypto.dylib <== inserted via `CURL::OpenSSL_Crypto`
+libz.tbd        <== inserted via `CURL::ZLIB`
```

Bug: https://github.com/curl/curl/pull/20382#discussion_r2716660108
Reverts: https://github.com/curl/curl/commit/615c43eae8f926418c8205b6fe4ff693e8fc6b7d
Follow-up to 16f073ef49f94412000218c9f6ad04e3fd7e4d01 #16973

Closes #20427

2 weeks agoGHA: switch 3 more small jobs to `ubuntu-slim`
Viktor Szakats [Sun, 25 Jan 2026 17:54:51 +0000 (18:54 +0100)] 
GHA: switch 3 more small jobs to `ubuntu-slim`

Follow-up to 30c49db6f7ad64c6819181283fd0baff44815441 #20431

Closes #20433

2 weeks agoGHA: use `ubuntu-slim` image in 3 jobs
Viktor Szakats [Sun, 25 Jan 2026 16:49:24 +0000 (17:49 +0100)] 
GHA: use `ubuntu-slim` image in 3 jobs

For small jobs using no parallelism, and which still use x64 for faster
`apt install`. x64 1-core (vs. 4), 5GB RAM (vs. 16), no Linuxbrew,
no arm64.

Refs:
https://docs.github.com/en/actions/reference/runners/github-hosted-runners
https://github.blog/changelog/2026-01-22-1-vcpu-linux-runner-now-generally-available-in-github-actions/
https://github.com/actions/runner-images/blob/285cf722f0145c477f7a65d4e822515500c10382/images/ubuntu-slim/ubuntu-slim-Readme.md

Closes #20431

2 weeks agotool: return code variable consistency
Daniel Stenberg [Sun, 25 Jan 2026 10:17:32 +0000 (11:17 +0100)] 
tool: return code variable consistency

- ParameterError variables are named 'err'
- CURLcode variables are named 'result'

For naming consistency across functions

Closes #20426

2 weeks agobuild: constify `memchr()`/`strchr()`/etc result variables (cont.)
Viktor Szakats [Sun, 25 Jan 2026 12:38:09 +0000 (13:38 +0100)] 
build: constify `memchr()`/`strchr()`/etc result variables (cont.)

Assisted-by: Rudi Heitbaum
Fixes #20420
Follow-up to 7dc60bdb90c710c2e36b2d05aa3686ff491a9bbe #20425
Follow-up to 0e2507a3c65376d6bda860ff20bd94ada9bbb9fd #20421

Closes #20428

2 weeks agocurlx: dedupe basename copies into `curlx_basename()`
Viktor Szakats [Sun, 25 Jan 2026 04:35:00 +0000 (05:35 +0100)] 
curlx: dedupe basename copies into `curlx_basename()`

Also stop redefining system `basename()` symbol. Call `curlx_basename()`
instead, and map that to `basename()` if available.

Closes #20424

2 weeks agobuild: constify `memchr()`/`strchr()`/etc result variables
Viktor Szakats [Sun, 25 Jan 2026 02:26:03 +0000 (03:26 +0100)] 
build: constify `memchr()`/`strchr()`/etc result variables

And a few variables around.

There remain cases where the accepted pointer is const, yet the returned
pointer is written to.

Partly addressing (glibc 2.43):
```
* For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
  strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
  pointers into their input arrays now have definitions as macros that
  return a pointer to a const-qualified type when the input argument is
  a pointer to a const-qualified type.
```
Ref: https://lists.gnu.org/archive/html/info-gnu/2026-01/msg00005.html

Reported-by: Rudi Heitbaum
Ref: #20420

Closes #20421

2 weeks agonoproxy: simplify, don't mix const non-const in strchr()
Daniel Stenberg [Sun, 25 Jan 2026 09:46:24 +0000 (10:46 +0100)] 
noproxy: simplify, don't mix const non-const in strchr()

Ref: #20420
Closes #20425

2 weeks agoGHA: set `--enable-option-checking=fatal` where missing
Viktor Szakats [Sat, 24 Jan 2026 22:25:37 +0000 (23:25 +0100)] 
GHA: set `--enable-option-checking=fatal` where missing

Closes #20422

2 weeks agodocs: Update CodeSonar link
Dan Fandrich [Sat, 24 Jan 2026 21:24:37 +0000 (13:24 -0800)] 
docs: Update CodeSonar link

2 weeks agoGHA/codeql: improve perf on Windows, enable `CURL_WERROR=ON`, and more
Viktor Szakats [Sat, 24 Jan 2026 01:39:48 +0000 (02:39 +0100)] 
GHA/codeql: improve perf on Windows, enable `CURL_WERROR=ON`, and more

- set `CURL_DROP_UNUSED=ON` for Windows (MSVC) to make the analysis step
  faster: 1m30s -> 1m15s

- enable `CURL_WERROR=ON` in all builds, to catch potential build issues
  in addition to running CodeQL. To make these builds useful as regular
  build tests too.

- add links to CodeQL Actions documentation.

- delete test data C files after checkout in an attempt to remove them
  from CodeQL code coverage stats.

Closes #20418

2 weeks agobuild: fix unused variables/values/code in non-verbose builds
Viktor Szakats [Fri, 23 Jan 2026 23:03:23 +0000 (00:03 +0100)] 
build: fix unused variables/values/code in non-verbose builds

Seen in GHA/codeql builds.

One of them also affected wolfSSL < 3.9.10 builds.

61093e2a819d26b7ddf309baef264b9e50c6c56f #20353
Cherry-picked from #20404
Closes #20417

2 weeks agosetopt: fix checking range for CURLOPT_MAXCONNECTS
Michał Antoniak [Fri, 23 Jan 2026 15:51:44 +0000 (16:51 +0100)] 
setopt: fix checking range for CURLOPT_MAXCONNECTS

- Use upper limit INT_MAX instead of UINT_MAX.

UINT_MAX doesn't work as the max value for the variable since it is
passed as a long and becomes -1 on platforms that have same sized
int and long, like Windows.

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

2 weeks agoGHA/windows: install stunnel manually, enable for Cygwin
Viktor Szakats [Fri, 23 Jan 2026 12:37:59 +0000 (13:37 +0100)] 
GHA/windows: install stunnel manually, enable for Cygwin

Replace Chocolatey install with direct download and unpack. To reduce
CI dependencies (Chocolatey, NuGet), improve install performance
(10s -> 1s) and hopefully reliability. Last but not least to enable it
for the Cygwin CI job.

Caveats:
- Need to bump stunnel versions manually (2-3 times a year).
  Renovate could likely do it, but I failed to understand its
  documentation and miss tooling/interface to make tests.
- FIPS not enabled. (can be done if necessary)
- Possibly losing checksum verification (not sure if Chocolatey did it
  automatically for this package.)

Also:
- Increase minimum tests by 100 for the Cygwin job.

Ref: #16819 (earlier attempt)
Ref: https://www.stunnel.org/archive/
Ref: https://www.githubstatus.com/incidents/cqb5hcy0gx18
Follow-up to d176f58a2003e4231c75f09813125c5a5bb26913 #20413
Follow-up to 19b1e44660d68d38a2f48f24740a3aac1d46b9a0 #20409

Closes #20410

2 weeks agoruntests: pass config filename to stunnel in native format (Windows)
Viktor Szakats [Fri, 23 Jan 2026 15:23:57 +0000 (16:23 +0100)] 
runtests: pass config filename to stunnel in native format (Windows)

Fixing (Seen when enabling stunnel for Cygwin in CI):
```
=== Start of file https_stunnel.log
 [ ] Initializing inetd mode configuration
 [ ] Running on Windows 6.2
[...]
 [.] Reading configuration from file /cygdrive/d/a/curl/curl/bld/tests/log/6/server/https_stunnel.conf
 [!] Cannot open configuration file
```
Ref: https://github.com/curl/curl/actions/runs/21289677523/job/61279662459?pr=20410

Cherry-picked from #20410
Closes #20413