]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
9 days agolibcurl docs: reduce 'since ...' in descriptions
Daniel Stenberg [Tue, 20 Jan 2026 10:01:31 +0000 (11:01 +0100)] 
libcurl docs: reduce 'since ...' in descriptions

Reduce mentions of libcurl versions like "since 7.xx ..." in option
descriptions to reduce clutter and make the texts easier to read. Keep
them in, or move them to, the HISTORY or DEPRECATED sections

The last version 7 release (7.88.1) shipped on Februrary 20, 2023.

Closes #20369

10 days agotls: add new SSLSUPP flags for several options
Frank Buss [Mon, 19 Jan 2026 23:03:00 +0000 (00:03 +0100)] 
tls: add new SSLSUPP flags for several options

So that curl_easy_setopt() correctly returns error for those not
supported by the backend.

Closes #20364

10 days agoconfig2setopts: fix for --disable-aws build configuration
Maksim Ściepanienka [Tue, 20 Jan 2026 03:19:06 +0000 (04:19 +0100)] 
config2setopts: fix for --disable-aws build configuration

Closes #20368

10 days agoGHA/curl-for-win: add CPU to Linux minimal job name
Viktor Szakats [Tue, 20 Jan 2026 02:38:18 +0000 (03:38 +0100)] 
GHA/curl-for-win: add CPU to Linux minimal job name

10 days agotool_getparam: avoid `-Wcomma` with Apple clang in C89 mode
Viktor Szakats [Mon, 19 Jan 2026 22:21:30 +0000 (23:21 +0100)] 
tool_getparam: avoid `-Wcomma` with Apple clang in C89 mode

Seen with Apple clang 17:
```
curl/src/tool_getparam.c:3062:12: warning: possible misuse of comma operator here [-Wcomma]
 3062 |   for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
      |            ^
curl/src/tool_getparam.c:3062:7: note: cast expression to void to silence warning
 3062 |   for(i = 1, stillflags = TRUE; i < argc && !result; i++) {
      |       ^~~~~
      |       (void)( )
```

Closes #20362

10 days agosigpipe: unset SA_SIGINFO since it is using sa_handler
tommy [Tue, 13 Jan 2026 04:48:17 +0000 (12:48 +0800)] 
sigpipe: unset SA_SIGINFO since it is using sa_handler

Closes #20278

Signed-off-by: tommy <tommyskypromax@gmail.com>
10 days agolib: separate scheme info from protocol implementation
Daniel Stenberg [Sun, 18 Jan 2026 23:15:41 +0000 (00:15 +0100)] 
lib: separate scheme info from protocol implementation

This allows builds know about all schemes - but only have the protocol
implementations for those actually built-in.

It further allows multiple protocols to reuse the same protocol setup
and functions for both TLS and non-TLS implementations instead of
needing two (or more) structs.

The scheme information is now in 'struct Curl_scheme' and all the
function pointers for each scheme/protocol implementation are in struct
Curl_protocol.

The URL API now always work with all known protocols.

Closes #20351

10 days agodocs/INSTALL: update configure details
Arnav-Purushotam-CUBoulder [Tue, 13 Jan 2026 22:12:42 +0000 (15:12 -0700)] 
docs/INSTALL: update configure details

Note the default libpsl requirement in INSTALL and polish the TLS
library wording.

Closes #20301

10 days agobuild: merge TrackMemory (`CURLDEBUG`) into debug-enabled option
Viktor Szakats [Thu, 15 Jan 2026 13:04:05 +0000 (14:04 +0100)] 
build: merge TrackMemory (`CURLDEBUG`) into debug-enabled option

Drop separate `TrackMemory` (aka `CURLDEBUG`) debug feature.

After recent changes (thread-safety,
193cb00ce9b47e75d42157c650cc3de3fd96d35d, and updates leading up to
it), `TrackMemory` is unlikely to cause build or runtime issues.

To simplify builds and debug options, enable `TrackMemory`
unconditionally for debug-enabled (aka `DEBUGBUILD`) builds. Before
this patch, this was already the default, with an option to disable
it, or enable it in non-debug-enabled builds.

Note, in practice these two debug options already went hand in hand. It
was not possible to toggle them separately for a long time due to bugs,
before 59dc9f7e69c399102e9ebe3670360ef52706ff23 (2024-05-28) fixed it.

This patch also removes/deprecates separate knobs and feature flags for
`TrackMemory`:
- autotools: `--enable-curldebug`/`--disable-curldebug`
- cmake: `-DENABLE_CURLDEBUG=ON`/`OFF`
- C macro: `CURLDEBUG`
- libcurl: `CURL_VERSION_CURLDEBUG` symbol deprecated in favor
  of `CURL_VERSION_DEBUG`. They always return the same value after this
  patch.

Also:
- drop `TrackMemory` from `curl -V` output.
- rename internal `CURLDEBUG` macro to `CURL_MEMDEBUG` internally.
  To avoid confusion with `DEBUGBUILD`, but to keep guarding
  `TrackMemory`-related internals for readability.
- runtests: bind `TrackMemory` to debug feature. Keep it a separate
  test feature requirement, for clarity.
- CI: drop test builds for combinations of the two options.
- GHA/linux: no longer disable TrackMemory in the TSAN job.

Ref: https://github.com/curl/curl/pull/20328#issuecomment-3754528407

Closes #20331

10 days agoimap: simplify imap_is_bchar() with strchr()
Daniel Stenberg [Mon, 19 Jan 2026 15:01:57 +0000 (16:01 +0100)] 
imap: simplify imap_is_bchar() with strchr()

Closes #20358

10 days agoGHA/non-native: fix size/file listing for Android shared lib
Viktor Szakats [Mon, 19 Jan 2026 15:23:03 +0000 (16:23 +0100)] 
GHA/non-native: fix size/file listing for Android shared lib

Follow-up to 4cf43508e8e60d0d8acef1beecb0f76040609543 #20355

10 days agoCI: show curl tool and libcurl sizes
Viktor Szakats [Mon, 19 Jan 2026 11:53:40 +0000 (12:53 +0100)] 
CI: show curl tool and libcurl sizes

To see how they change throughout code and/or build changes.

Also:
- improve `file` output.
- tidy-ups.

Closes #20355

11 days agolib: make sigpipe handling more lazy
Stefan Eissing [Thu, 15 Jan 2026 12:24:05 +0000 (13:24 +0100)] 
lib: make sigpipe handling more lazy

Define `struct Curl_sigpipe_ctx` that can be passed as argunent
to "lower" functions so that applying a transfers 'no_signal'
setting can be delayed as much as possible and sometimes avoided
alltogether.

Fixes #20326
Closes #20329
Reported-by: Dag Haavi Finstad
11 days agoINSTALL-CMAKE.md: document Apple framework options
Viktor Szakats [Mon, 19 Jan 2026 07:00:05 +0000 (08:00 +0100)] 
INSTALL-CMAKE.md: document Apple framework options

Also document when they are used.

Closes #20350

11 days agocmake: fix variable name for Apple Security framework
Viktor Szakats [Mon, 19 Jan 2026 06:34:33 +0000 (07:34 +0100)] 
cmake: fix variable name for Apple Security framework

Follow-up to eefd03c572996e5de4dec4fe295ad6f103e0eefc #18703

Closes #20349

11 days agoREUSE: drop broken reference to `MAIL-ETIQUETTE`
Viktor Szakats [Mon, 19 Jan 2026 06:24:48 +0000 (07:24 +0100)] 
REUSE: drop broken reference to `MAIL-ETIQUETTE`

It has been renamed and converted to Markdown.

Follow-up to 271896ab337cf9ea1c7a386306df3728eff7c661 #13247

Closes #20348

11 days agoINSTALL.md: suggest `-Wl,-dead_strip` for Apple targets
Viktor Szakats [Sun, 18 Jan 2026 17:06:33 +0000 (18:06 +0100)] 
INSTALL.md: suggest `-Wl,-dead_strip` for Apple targets

For reducing binary size. Also to remove (or greatly mitigate)
the side-effect of using "unity" builds. Similar to `-Wl,--gc-sections`
on non-Apple platforms.

For example with curl-for-win builds, macOS arm+intel:

curl (unity):                      7.7MB -> 6.8MB
libcurl.dylib (unity):             7.2MB -> 6.4MB
trurl /w static libcurl (!unity):  535KB -> 251KB (same size with unity)

Ref: https://github.com/curl/curl-for-win/commit/c4008d658ad82aed7d70e410a91f6d14273ebb0f

Closes #20346

11 days agoMQTT.md: remove no TLS (mqtts) support
Sascha Frinken [Sun, 18 Jan 2026 05:39:40 +0000 (06:39 +0100)] 
MQTT.md: remove no TLS (mqtts) support

As curl now supports TLS (mqtts), it is no longer necessary to list it
as a limitation in the docs.

Closes #20343

11 days agohostip: fix unreachable code in rare build configuration
Viktor Szakats [Sun, 18 Jan 2026 06:19:47 +0000 (07:19 +0100)] 
hostip: fix unreachable code in rare build configuration

with cmake options:
```
-DCMAKE_UNITY_BUILD=OFF -DCURL_DISABLE_HTTP=ON -DENABLE_THREADED_RESOLVER=OFF
```

Fixing (seen with Apple clang 17):
```
lib/hostip.c:939:16: error: code will never be executed [-Werror,-Wunreachable-code]
  940 |       *entry = dns;
      |                ^~~
```

Closes #20344

12 days agoautotools: fix indentation in help output for two options
Viktor Szakats [Sat, 17 Jan 2026 23:26:03 +0000 (00:26 +0100)] 
autotools: fix indentation in help output for two options

By using weird indentation in the autoconf source.

Fixing:
```
  --enable-sspi           Enable SSPI
    --disable-sspi          Disable SSPI
[...]
  --enable-websockets     Enable WebSockets support
    --disable-websockets    Disable WebSockets support
```

Follow-up to 923db3515d3f3a707fd4cad6f05f9538899536d7 #18116
Follow-up to d78e129d50b2d190f1c1bde2ad1f62f02f152db0 #14936

Closes #20342

12 days agotool: support fractions for --limit-rate and --max-filesize
Daniel Stenberg [Sat, 17 Jan 2026 22:11:07 +0000 (23:11 +0100)] 
tool: support fractions for --limit-rate and --max-filesize

Allow 2.5k or 3.7M etc. Add mention in documentation.

Verify in test case 1623.

Closes #20266

12 days agovquic: drop support for OpenSSL-QUIC 20226/head
Daniel Stenberg [Sat, 17 Jan 2026 21:49:28 +0000 (22:49 +0100)] 
vquic: drop support for OpenSSL-QUIC

- It is slower and uses more memory than the alternatives and is only
  experimental in curl.
- We disable a few tests for OpenSSL-QUIC because of flakiness
- It gets little attention from OpenSSL and we have no expectation of the
  major flaws getting corrected anytime soon.
- No one has spoken up for keeping it
- curl users building with vanilla OpenSSL can still use QUIC through the
  means of ngtcp2

Closes #20226

12 days agomqtt: initial support for MQTTS
Daniel Stenberg [Sat, 17 Jan 2026 16:23:44 +0000 (17:23 +0100)] 
mqtt: initial support for MQTTS

Closes #19418

12 days agowindows: add build option to use the native CA store
Viktor Szakats [Wed, 13 Aug 2025 22:48:00 +0000 (00:48 +0200)] 
windows: add build option to use the native CA store

With the same semantics as Apple SecTrust, in both libcurl and the curl
tool, when using non-Schannel TLS backends. In practice it means that
it makes TLS work without manually or implicitly configuring a CA bundle
`.crt` file, such as `curl-ca-bundle.crt`.

To enable:
- autotools: `--enable-ca-native`
- cmake: `-DCURL_CA_NATIVE=ON`
- CPPFLAGS: `-DCURL_CA_NATIVE`

When enabled:
- enables `CURLSSLOPT_NATIVE_CA` (libcurl) / `--ca-native`
  and `--proxy-ca-native` (curl tool) options by default.
- unsafe search for an on-disk CA bundle gets disabled by default.
  Equivalent to `--disable-ca-search` with autotools,
  `-DCURL_DISABLE_CA_SEARCH=ON` with CMake.
- build-time detection of CA bundle and CA path gets disabled. As with
  Apple SecTrust. This was already the default for Windows.
- native CA can be disabled at run-time with the `--no-ca-native`
  and/or `--no-proxy-ca-native` command-line options.

Rationale: This build option:
- has a repeat and active interest from packagers and users.
- helps integrating curl with Windows for those who need this.
- it also applies to macOS: #17525
  Shipped in curl 8.17.0.
- makes it trivial to use custom certs configured on the OS.
- frees applications/packagers/users from the task of securely
  distributing, and keeping up-to-date, a CA bundle.
- frees potentially many curl tool from configuring a CA bundle manually
  to access HTTPS (and other TLS) URLs. This is traditionally difficult
  on Windows because there is no concept of a universal, protected,
  non-world-writable, location on the file system to securely store
  a CA bundle.
- allows using modern features regardless of Windows version. Some of
  these features are not supported with Schannel (e.g. HTTP/3, ECH) on
  any Windows version.
- is necessary for HTTP/3 builds, where bootstrapping a CA bundle is not
  possible with Schannel, because MultiSSL is not an option, and HTTP/3
  is not supported with Schannel.

Ref: #16181 (previous attempt)
Ref: https://github.com/curl/curl/discussions/9348
Ref: https://github.com/curl/curl/issues/9350
Ref: https://github.com/curl/curl/pull/13111
Ref: https://github.com/microsoft/vcpkg/pull/46459#issuecomment-3162068701
Ref: 22652a5a4cb6a4cc1c0f4ff3ebc4f9768f6663cd #14582
Ref: eefd03c572996e5de4dec4fe295ad6f103e0eefc #18703

Closes #18279

12 days agoRELEASE-NOTES: synced
Daniel Stenberg [Sat, 17 Jan 2026 15:48:15 +0000 (16:48 +0100)] 
RELEASE-NOTES: synced

bump pending version to 8.19.0

12 days agomsvc: drop exception, make `BIT()` a bitfield with Visual Studio
Viktor Szakats [Thu, 1 Jan 2026 15:38:56 +0000 (16:38 +0100)] 
msvc: drop exception, make `BIT()` a bitfield with Visual Studio

Add casts to `bool`, or use `bit` type in local variables, where
neccessary to avoid MSVC compiler warnings C4242.

Note: There may remain places needing the above updates, where not
tested in CI, and missed in manual review.

Also:
- urldata: convert struct field `connect_only` to bitfield to match its
  counterpart in another struct.
- rename curl-specific `bit` type to `curl_bit`.

Closes #20142

12 days agodns: flatten the include tree
Viktor Szakats [Sun, 28 Dec 2025 15:48:32 +0000 (16:48 +0100)] 
dns: flatten the include tree

Closes #20106

12 days agowindows: bump minimum to Vista (from XP)
Viktor Szakats [Thu, 24 Jul 2025 01:06:39 +0000 (03:06 +0200)] 
windows: bump minimum to Vista (from XP)

After this patch curl requires targeting Vista or newer, and a toolchain
with Vista support.

Supported MSVC compilers (VS2010+) all support Vista:
- VS2012+ target Win8 (or later) by default.
- VS2010 targets Win7 by default.

Supported mingw-w64 versions (v3+) all support Vista:
- mingw-w64 v9+ target Win10 by default.
- mingw-w64 v8 and older target Server 2003 (~XP) by default.
  After this patch it may be necessary to override the default Windows
  target version to Vista (or newer) via:
  autotools: `CPPFLAGS=-D_WIN32_WINNT=0x0600`
  cmake: `-DCURL_TARGET_WINDOWS_VERSION=0x0600`
- mingw-w64 v6+ allow changing the default at toolchain build-time.

Notes:
- For non-MSVC, non-mingw-w64 toolchains, `if_nametoindex` needs to be
  allowlisted in `curl_setup.h`, if they do support it.

Fixes #17985 (discussion)
Closes #18009

13 days agosocketpair: cleaner interface
Stefan Eissing [Fri, 16 Jan 2026 12:59:03 +0000 (13:59 +0100)] 
socketpair: cleaner interface

Declutter the ifdefs in socketpair.h. Introduce Curl_wakeup_*()
function that encapsulate the details about how the socketpair
is implemented.

This moves the EVENTFD specials from the using code into socketpair
implemenatation, avoiding duplications in three places.

Closes #20340

13 days agoratelimit: download finetune
Stefan Eissing [Thu, 15 Jan 2026 10:58:56 +0000 (11:58 +0100)] 
ratelimit: download finetune

When a download size is known and rate limiting is in effect, adjust the
duration of each measurement step and its rate for maximum precision.

Since it is unpredictable how long the last bytes of a download will
take, download speed can be thrown off if the "last bytes" are a
significant amount of the total download. Make the "last bytes" small in
comparision to the rest and "stretch" the rate limit intervals to
accommodate the difference.

Fix ngtcp2 receive data acknowldgements to be based on a local window
size tracking. This allows window updates controlled by rate limits.

Fix ratelimit wait time calculation to accomodate negative tokens.

h3 rate limit, update timeers

Make download rate limits work correctly in ngtcp2. Fix multi handling
of rate limits to set a timer for when limits will update again.

Without running the transfer on limit updates, protocols like h2/h3 may
stall if the server does not send due to stream windows being too small.

scorecard: measure download speedlimits

When running scorecard with --limit-rate=n, show the reported download
speed averages plus percentage deviation from the limit.

Closes #20228

13 days agoGHA: silence fresh zizmor 1.21.0 warnings
Viktor Szakats [Fri, 16 Jan 2026 12:13:27 +0000 (13:13 +0100)] 
GHA: silence fresh zizmor 1.21.0 warnings

- MSYS2/Cygwin bash shells are now tagged "misfeature".
  It is not something we can fix. We need these shells, and using
  documented/necessary settings to use these environments should be
  allowed without workarounds.

- untagged actions within curl's own organization are now also flagged
  as "action is not pinned to a hash (required by blanket policy)". This
  seems overkill. Making internal releases would not be helpful or
  practical. Also considering that the referred internal action uses an
  unpinned external action anyway (google/oss-fuzz/infra/cifuzz), with
  near-zero chance to fix.

Ref: https://github.com/zizmorcore/zizmor/pull/1517#issuecomment-3759740853

Closes #20339

2 weeks agolib: use STRCONST() when possible in curlx_strcopy() calls
Daniel Stenberg [Fri, 16 Jan 2026 09:36:07 +0000 (10:36 +0100)] 
lib: use STRCONST() when possible in curlx_strcopy() calls

Follow-up to a535be4ea0960cfaeeaf74412

Closes #20335

2 weeks agohostip6: remove debug-only code
Daniel Stenberg [Fri, 16 Jan 2026 09:26:24 +0000 (10:26 +0100)] 
hostip6: remove debug-only code

Introduced in 021e786c7108bc60. Not used these days.

Closes #20334

2 weeks agombedtls: remove newline from failf() call
Daniel Stenberg [Fri, 16 Jan 2026 07:29:38 +0000 (08:29 +0100)] 
mbedtls: remove newline from failf() call

Follow-up from 1dc6ddde06e

Closes #20333

2 weeks agoeasy: fix build with --disable-form-api and --disable-mime
Daniel Stenberg [Thu, 15 Jan 2026 22:08:50 +0000 (23:08 +0100)] 
easy: fix build with --disable-form-api and --disable-mime

Follow-up to 44312b4b11094e0

Closes #20332

2 weeks agoTODO: add point about improving SIGPIPE handling
Stefan Eissing [Thu, 15 Jan 2026 14:02:23 +0000 (15:02 +0100)] 
TODO: add point about improving SIGPIPE handling

Closes #20330

2 weeks agombedtls: no pinnedpubkey wo MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
Michał Antoniak [Wed, 14 Jan 2026 14:40:57 +0000 (15:40 +0100)] 
mbedtls: no pinnedpubkey wo MBEDTLS_SSL_KEEP_PEER_CERTIFICATE

Behavior similar to when MBEDTLS_PK_WRITE_C is not defined.

Closes #20319

2 weeks agoimap: skip literals inside quoted strings
calm329 [Wed, 14 Jan 2026 17:12:20 +0000 (09:12 -0800)] 
imap: skip literals inside quoted strings

Fixes #20320
Closes #20322

2 weeks agoGOVERNANCE.md: Post-Daniel BDFL
Daniel Stenberg [Thu, 15 Jan 2026 08:33:58 +0000 (09:33 +0100)] 
GOVERNANCE.md: Post-Daniel BDFL

Some words on what happens at the point in a future when Daniel steps
away from the project

Closes #20325

2 weeks agolib: fix two `CURLDEBUG` guards to be `DEBUGBUILD`
Viktor Szakats [Thu, 15 Jan 2026 10:59:31 +0000 (11:59 +0100)] 
lib: fix two `CURLDEBUG` guards to be `DEBUGBUILD`

Both guard the use of `CURL_DNS_SERVER` debug env.

Follow-up to df2b4ccc229c9de61dd798e4b3a7cf74a073144e #18157
Follow-up to 02e9690c3ee2feb7c78c93c1c544c898df733383 #17015
Follow-up to 59dc9f7e69c399102e9ebe3670360ef52706ff23 #13718

Closes #20328

2 weeks agotidy-up: miscellaneous
Viktor Szakats [Fri, 2 Jan 2026 00:34:05 +0000 (01:34 +0100)] 
tidy-up: miscellaneous

- tool_bname: scope an include.
- `endif` comments.
- Markdown fixes.
- comment tidy-ups.
- whitespace, newlines, indent.

Closes #20309

2 weeks agochecksrc: do not apply `BANNEDFUNC` to struct member functions
Viktor Szakats [Wed, 14 Jan 2026 22:50:42 +0000 (23:50 +0100)] 
checksrc: do not apply `BANNEDFUNC` to struct member functions

Omit this warning, when `close()` is banned:
```
./lib/vtls/vtls.c:947:13: warning: use of close is banned (BANNEDFUNC)
   Curl_ssl->close(cf, data);
             ^
```
Ref: https://github.com/curl/curl/actions/runs/21012427938/job/60410334312?pr=20212#step:3:6

Ref: #20212

Closes #20323

2 weeks agobuild: drop more forward function declarations
Viktor Szakats [Wed, 14 Jan 2026 16:11:55 +0000 (17:11 +0100)] 
build: drop more forward function declarations

Most by moving functions around. Also delete unused ones.
Reducing their number from 83 to 33.

Remaining ones due to:
- circular dependencies.
- H3 code, that I did not attempt to update and likely the above applies.
- static declarations with attributes (`CURL_PRINTF`, `WARN_UNUSED_RESULT`).
- OS400 code.

Closes #20321

2 weeks agocmake: avoid setting custom property on built-in interface targets
Viktor Szakats [Wed, 14 Jan 2026 12:04:18 +0000 (13:04 +0100)] 
cmake: avoid setting custom property on built-in interface targets

In some cases `ZLIB::ZLIB` and/or `OpenSSL::SSL` may be aliases, which
prevents setting a curl-specific property (.pc module name) in them:
```
CMake Error at [...]/curl/CMakeLists.txt:910 (set_target_properties):
  set_target_properties can not be used on an ALIAS target.
```

Fix by special-casing these built-in targets and manually converting
them to .pc module names, without using the targets themselves
to carry this information throughout curl's internal build logic.

Reported-by: TomĂĄĹĄ MalĂ˝
Fixes #20313
Follow-up to 16f073ef49f94412000218c9f6ad04e3fd7e4d01 #16973
Closes #20316

2 weeks agotool_cb_hdr: move etag and content-disposition logic into funcs
Daniel Stenberg [Tue, 13 Jan 2026 13:02:49 +0000 (14:02 +0100)] 
tool_cb_hdr: move etag and content-disposition logic into funcs

Co-authored-by: Jay Satiro
Closes #20288

2 weeks agotool_doswin: document `ENABLE_VIRTUAL_TERMINAL_PROCESSING` toolchain support
Viktor Szakats [Wed, 14 Jan 2026 00:12:08 +0000 (01:12 +0100)] 
tool_doswin: document `ENABLE_VIRTUAL_TERMINAL_PROCESSING` toolchain support

Closes #20315

2 weeks agobuild: drop stray `ifndef` guards for local/internal macros
Viktor Szakats [Tue, 13 Jan 2026 18:44:56 +0000 (19:44 +0100)] 
build: drop stray `ifndef` guards for local/internal macros

For:
- lib/vtls: `MAX_PINNED_PUBKEY_SIZE`.
- src: `UNPRINTABLE_CHAR`.
- tests/server/tftpd: `PKTSIZE`.

Closes #20314

2 weeks agotool_doswin: merge `if` blocks, drop forward declarations
Viktor Szakats [Wed, 14 Jan 2026 09:09:37 +0000 (10:09 +0100)] 
tool_doswin: merge `if` blocks, drop forward declarations

Closes #20311

2 weeks agobuild: drop redundant unused variable suppressions
Viktor Szakats [Wed, 14 Jan 2026 02:46:19 +0000 (03:46 +0100)] 
build: drop redundant unused variable suppressions

Also:
- digest_sspi: merge some `ifdef`s.

Closes #20310

2 weeks agodigest: handle quotes in the path
Daniel Stenberg [Tue, 13 Jan 2026 14:31:06 +0000 (15:31 +0100)] 
digest: handle quotes in the path

- The 'uri' component needs to be escaped as well
- Rewrote the quote function to use dynbuf
- Build the digest at least partly with dynbuf
- Use goto as a general error mechanism
- Make test 64 use a double quote in the URL

Closes #20295

2 weeks agobadwords: fix typos found
Viktor Szakats [Wed, 14 Jan 2026 01:07:23 +0000 (02:07 +0100)] 
badwords: fix typos found

Not caught in CI.

Closes #20308

2 weeks agobadwords: catch and fix more variants of `NN-bit`
Viktor Szakats [Sun, 11 Jan 2026 13:50:27 +0000 (14:50 +0100)] 
badwords: catch and fix more variants of `NN-bit`

Closes #20304

2 weeks agocmake: replace an outlier `set(var)` with `set(var, "")`
Viktor Szakats [Fri, 9 Jan 2026 15:27:51 +0000 (16:27 +0100)] 
cmake: replace an outlier `set(var)` with `set(var, "")`

For consistency with the rest of these expressions and readability.

Closes #20305

2 weeks agobuild: drop duplicate C includes
Viktor Szakats [Tue, 13 Jan 2026 22:44:10 +0000 (23:44 +0100)] 
build: drop duplicate C includes

- `stdlib.h` and `string.h` is included via `curl_setup_once.h`,
  allowing to drop from `tests/server` sources and `tool_doswin.c`.

- `stdlib.h` is also included via `setup-vms.h` (earlier than above),
  allowing to drop it from `curl_addrinfo.h` on VMS.

Closes #20303

2 weeks agoldap: silence potential unused variable warning (OS400)
Viktor Szakats [Tue, 6 Jan 2026 11:15:05 +0000 (12:15 +0100)] 
ldap: silence potential unused variable warning (OS400)

Also:
- add `endif` comment.
- unfold a line.

Follow-up to 64350280d3b9aca54856f73d109aab8f49615de3 #20197

Closes #20302

2 weeks agobuild: globally suppress DJGPP warnings in `FD_SET()`
Viktor Szakats [Tue, 13 Jan 2026 21:07:53 +0000 (22:07 +0100)] 
build: globally suppress DJGPP warnings in `FD_SET()`

Replacing the many local `#pragma` used before this patch,
reducing the number of `__DJGPP__` guards from 58 to 13.

Closes #20299

2 weeks agoGHA: bump pip-dependencies
dependabot[bot] [Tue, 13 Jan 2026 22:04:33 +0000 (22:04 +0000)] 
GHA: bump pip-dependencies

- update `ruff` from 0.14.10 to 0.14.11
- update `filelock` from 3.20.1 to 3.20.3 (CVE-2026-22701) (used in pytests)
- update `psutil` from 7.2.0 to 7.2.1

Closes #20300

2 weeks agomime: drop fallback for unused `R_OK` macro
Viktor Szakats [Tue, 13 Jan 2026 18:47:24 +0000 (19:47 +0100)] 
mime: drop fallback for unused `R_OK` macro

Follow-up to fc81bf42bea37d1381c9796311df014b09ac3b30 #13497

Closes #20298

2 weeks agobuild: omit forward declarations
Viktor Szakats [Tue, 13 Jan 2026 14:40:09 +0000 (15:40 +0100)] 
build: omit forward declarations

- drop redundant forward declarations.
- reorder local functions to not need forward declarations.
- tftpd: merge two `ifdef` blocks.

Closes #20297

2 weeks agoexamples: omit forward declarations, apply misc fixes
Viktor Szakats [Tue, 13 Jan 2026 17:17:42 +0000 (18:17 +0100)] 
examples: omit forward declarations, apply misc fixes

- reorder functions to not need forward declarations.
- sync `ephiperfifo.c` and `evhiperfifo.c`.
- drop redundant casts for `calloc()` return value.
- ephiperfifo: silence unused variable warning.
- fix indent and apply clang-format more.

Closes #20296

2 weeks agourl.h: fix `-Wdocumentation`
Viktor Szakats [Tue, 13 Jan 2026 16:56:02 +0000 (17:56 +0100)] 
url.h: fix `-Wdocumentation`

Seen when testing `-Weverything`:
```
lib/url.h:84:11: warning: parameter 'nowp' not found in the function declaration [-Wdocumentation]
   84 |  * @param nowp      NULL or pointer to time being checked against.
      |           ^~~~
```

Follow-up to 2de22a00c7adb81b4e5cbc90785e29b4b083c1ed #19961

Closes #20294

2 weeks agoopenldap: avoid forward declarations in ldaps code
Viktor Szakats [Tue, 13 Jan 2026 16:51:59 +0000 (17:51 +0100)] 
openldap: avoid forward declarations in ldaps code

Follow-up to b85cb8cb4e143d1615d4fcc1ce8f2f7b66453995 #18485

Closes #20293

2 weeks agomod_curltest: silence unused argument compiler warning
Viktor Szakats [Tue, 13 Jan 2026 15:10:22 +0000 (16:10 +0100)] 
mod_curltest: silence unused argument compiler warning

Closes #20292

2 weeks agomd4, md5: drop redundant forward declarations
Viktor Szakats [Tue, 13 Jan 2026 14:53:09 +0000 (15:53 +0100)] 
md4, md5: drop redundant forward declarations

Closes #20291

2 weeks agolib: reorder protocol functions to avoid forward declarations (ssh)
Viktor Szakats [Tue, 13 Jan 2026 15:30:20 +0000 (16:30 +0100)] 
lib: reorder protocol functions to avoid forward declarations (ssh)

Move protocol handler table to the end of sources, rearrange static
functions in reverse dependency order as necessary.

Closes #20290

2 weeks agolib: reorder protocol functions to avoid forward declarations (misc cont.)
Viktor Szakats [Tue, 13 Jan 2026 14:27:36 +0000 (15:27 +0100)] 
lib: reorder protocol functions to avoid forward declarations (misc cont.)

For protocols: ldap, openldap, rtmp, rtsp, telnet

Move protocol handler table to the end of sources, rearrange static
functions in reverse dependency order as necessary.

Closes #20289

2 weeks agoimap: check `imap_sendf()` printf masks at compile-time
Viktor Szakats [Tue, 13 Jan 2026 13:01:38 +0000 (14:01 +0100)] 
imap: check `imap_sendf()` printf masks at compile-time

Closes #20287

2 weeks agotests/server: use `CURL_PRINTF()`, drop `-Wformat-nonliteral` workaround
Viktor Szakats [Tue, 13 Jan 2026 12:44:43 +0000 (13:44 +0100)] 
tests/server: use `CURL_PRINTF()`, drop `-Wformat-nonliteral` workaround

Closes #20286

2 weeks agocurl_easy_nextheader.md: a new transfer invalidates 'prev'
Daniel Stenberg [Tue, 13 Jan 2026 12:29:30 +0000 (13:29 +0100)] 
curl_easy_nextheader.md: a new transfer invalidates 'prev'

Closes #20285

2 weeks agotftp: correct the filename length check
Daniel Stenberg [Tue, 13 Jan 2026 07:02:19 +0000 (08:02 +0100)] 
tftp: correct the filename length check

Reported-by: z2_
Bug: https://hackerone.com/reports/3508321
Closes #20283

2 weeks agosetopt: split up setopt_long and setopt_cptr
Daniel Stenberg [Mon, 12 Jan 2026 23:19:27 +0000 (00:19 +0100)] 
setopt: split up setopt_long and setopt_cptr

- Split setopt_long() into multiple functions
  (setopt_long_bool/net/http/proxy/ssl/proto/misc) and dispatch them
  using a small function table

- Extract proxy string option handling into setopt_cptr_proxy() and call
  it early from setopt_cptr()

- Reorder options to simplify #ifdef blocks and reduce per-function size

- Updates code paths to return CURLE_UNKNOWN_OPTION from helper defaults
  so dispatching can continue cleanly

Closes #20280

2 weeks agochecksrc: warn for leading spaces before the preprocessor hash
Daniel Stenberg [Tue, 13 Jan 2026 08:23:21 +0000 (09:23 +0100)] 
checksrc: warn for leading spaces before the preprocessor hash

Fix the 40+ fallouts

Closes #20282

2 weeks agomqtt: better too-big-message-check
Daniel Stenberg [Tue, 13 Jan 2026 07:20:12 +0000 (08:20 +0100)] 
mqtt: better too-big-message-check

Reported-by: gudyuu on hackerone
Reviewed-by: Daniel Gustafsson
Bug: https://hackerone.com/reports/3508500
Closes #20281

2 weeks agotop-complexity: always show the top-25
Daniel Stenberg [Mon, 12 Jan 2026 23:13:59 +0000 (00:13 +0100)] 
top-complexity: always show the top-25

Accept argument as a custom amount. Previously it showed all functions
with a complexity score above 57. This way it adapts better as we
gradually decrease complexity in functions.

Closes #20273

2 weeks agolib: reorder protocol functions to avoid forward declarations (ftp)
Viktor Szakats [Mon, 12 Jan 2026 23:51:21 +0000 (00:51 +0100)] 
lib: reorder protocol functions to avoid forward declarations (ftp)

There remains 4 forward declarations.

Move protocol hander table to the end of sources, rearrange static
functions is reverse dependency order as possible.

Closes #20276

2 weeks agolib: reorder protocol functions to avoid forward declarations (email)
Viktor Szakats [Sun, 21 Dec 2025 15:33:06 +0000 (16:33 +0100)] 
lib: reorder protocol functions to avoid forward declarations (email)

For protocols: imap, pop3, smtp.

Move protocol hander table to the end of sources, rearrange static
functions is reverse dependency order as necessary.

Closes #20275

2 weeks agolib: reorder protocol functions to avoid forward declarations (misc)
Viktor Szakats [Sun, 21 Dec 2025 15:19:52 +0000 (16:19 +0100)] 
lib: reorder protocol functions to avoid forward declarations (misc)

For protocols: dict, file, gopher, tftp, http, mqtt, smb.

Move protocol hander table to the end of sources, rearrange static
functions is reverse dependency order as necessary.

Closes #20274

2 weeks agotidy-up: merge root `packages` directory into `projects`
Viktor Szakats [Mon, 12 Jan 2026 18:44:14 +0000 (19:44 +0100)] 
tidy-up: merge root `packages` directory into `projects`

To simplify the directory layout.

- OS400 and vms support move from `packages` to `projects`.

- Windows README and `generate.bat` files move from `projects`
  to `projects/Windows`.

Closes #20271

2 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Mon, 12 Jan 2026 22:18:48 +0000 (23:18 +0100)] 
RELEASE-NOTES: synced

2 weeks agospacecheck: show line numbers of duplicate empty lines
Viktor Szakats [Mon, 12 Jan 2026 16:21:42 +0000 (17:21 +0100)] 
spacecheck: show line numbers of duplicate empty lines

Also:
- drop separate check for 3 or more consecutive empty lines.

Ref: https://github.com/curl/curl/pull/20266#issuecomment-3738955165

Closes #20269

2 weeks agoMakefile.am: drop stray VC project files from dist
Viktor Szakats [Mon, 12 Jan 2026 20:38:21 +0000 (21:38 +0100)] 
Makefile.am: drop stray VC project files from dist

Most files were removed 2 years ago, the remaining two do not work
without those.

Follow-up to 3d93d18dede1d0f7fa54c6aa57300f9de12c5476 #12288

Closes #20272

2 weeks agoMakefile.am: delete RPM targets referencing non-existent files
Viktor Szakats [Mon, 12 Jan 2026 18:57:06 +0000 (19:57 +0100)] 
Makefile.am: delete RPM targets referencing non-existent files

Follow-up to bae0d473f5912d38fc8da1f9850a70b015b53c9e #3331

Closes #20270

2 weeks agotool_cb_hdr: suppress header output when --out-null
Jay Satiro [Sun, 11 Jan 2026 19:56:24 +0000 (14:56 -0500)] 
tool_cb_hdr: suppress header output when --out-null

This change brings --out-null more in line with the documentation which
says --out-null is expected to behave like a portable -o /dev/null.

Prior to this change curl did not suppress the header output from --head
when --out-null was used to suppress output.

Assisted-by: Daniel Stenberg
Reported-by: Andrew Kvalheim
Ref: https://curl.se/docs/manpage.html#--out-null

Fixes https://github.com/curl/curl/discussions/20235
Closes https://github.com/curl/curl/pull/20256

2 weeks agobuild: add `curl-lint`/`lint` targets, `CURL_LINT` cmake option
Viktor Szakats [Sat, 3 Jan 2026 16:08:18 +0000 (17:08 +0100)] 
build: add `curl-lint`/`lint` targets, `CURL_LINT` cmake option

To run checksrc and spacecheck on the source tree. Also for cmake
to sync up with autotools' `checksrc` target.

- cmake: `curl-lint`
  With `-DCURL_LINT=ON`, checks run automatically for all targets.
- autotools: `lint`

Closes #20175

2 weeks agoGHA/checkdocs: drop duplicate spacecheck job
Viktor Szakats [Mon, 12 Jan 2026 15:19:14 +0000 (16:19 +0100)] 
GHA/checkdocs: drop duplicate spacecheck job

No longer necessary after making GHA/checksrc also run on `*.md` file
changes.

Reported-by: Daniel Stenberg
Bug: https://github.com/curl/curl/pull/20266#issuecomment-3738955165
Follow-up to 3800a26582af8b355e96cf80135ba7642e816ed6 #18935
Follow-up to 9acecc923df9ea8675f026ab173e8f2a6051822e #15423
Closes #20268

2 weeks agotool_filetime: sync dummy macro signature with function prototype
Patrick Monnerat [Sun, 11 Jan 2026 13:04:14 +0000 (14:04 +0100)] 
tool_filetime: sync dummy macro signature with function prototype

Closes #20265

2 weeks agortsp: match connection_check procedure with required signature
Patrick Monnerat [Sun, 11 Jan 2026 13:00:14 +0000 (14:00 +0100)] 
rtsp: match connection_check procedure with required signature

Follow-up to e3691612ea1acb2

Closes #20265

2 weeks agoGHA/non-native: disable FreeBSD arm CI jobs (upstream breakage)
Viktor Szakats [Mon, 12 Jan 2026 14:51:45 +0000 (15:51 +0100)] 
GHA/non-native: disable FreeBSD arm CI jobs (upstream breakage)

Package manager is not finding packages.

FreeBSD 15, moving to cmake, dropping impacket, stunnel, ldap, kerberos,
could not fix it.

Closes #20267

2 weeks agomimepost: allocate main struct on-demand
Daniel Stenberg [Mon, 12 Jan 2026 08:30:25 +0000 (09:30 +0100)] 
mimepost: allocate main struct on-demand

This makes the easy handle 432 bytes smaller (totally 5352 bytes on my
rather maximized Linux 64 bit build). The 440 byte mimepost struct is
now allocated only when needed.

Closes #20260

2 weeks agourldata: change 'keep_post' into three distinct bitfields
Daniel Stenberg [Mon, 12 Jan 2026 10:07:01 +0000 (11:07 +0100)] 
urldata: change 'keep_post' into three distinct bitfields

Closes #20262

2 weeks agoaltsvc: only accept 17 byte dates from files
Daniel Stenberg [Mon, 12 Jan 2026 07:05:49 +0000 (08:05 +0100)] 
altsvc: only accept 17 byte dates from files

Since the date format is fixed there is no need to accept more data.

Update test355 to verify reject of too long date in alt-svc file

This test case was originally supposed to verify alt-svc loading from a
file but never did because it was done incorrectly.

Now it verifies that a too long date in the input file makes curl
disregard the entry.

Closes #20259

2 weeks agotool_operate: split single_transfer into sub functions
Daniel Stenberg [Sun, 11 Jan 2026 16:47:49 +0000 (17:47 +0100)] 
tool_operate: split single_transfer into sub functions

To make it more manageable and less complex

Closes #20258

2 weeks agolibssh: simplify myssh_statemach_act()
Daniel Stenberg [Sun, 11 Jan 2026 10:15:00 +0000 (11:15 +0100)] 
libssh: simplify myssh_statemach_act()

Reduce complexity by splitting out sub functions.

Made myssh_quote_error() to reduce code duplication.

Closes #20252

2 weeks agoGHA: delete disable-man-db hack, runners doing it by default now
Viktor Szakats [Sun, 11 Jan 2026 14:28:14 +0000 (15:28 +0100)] 
GHA: delete disable-man-db hack, runners doing it by default now

Refs:
https://github.com/actions/runner-images/commit/1f107542aed3879d2565b59d48cb3cb7776b342f
https://github.com/actions/runner-images/pull/13268
https://github.com/actions/runner-images/issues/13213

Follow-up to 5acba8bc367c0248e3cacb05e60aba209c0821c9 #17181

Closes #20254

2 weeks agoGHA: delete new apt sources adding the flaky distro source
Viktor Szakats [Sun, 11 Jan 2026 13:53:41 +0000 (14:53 +0100)] 
GHA: delete new apt sources adding the flaky distro source

CI workflows deleted apt package source `microsoft-prod.list` due to
flakiness seen in the past with those sources. Sources are still flaky
and they are now also used from `azure-cli.sources` which is included
by default by the runner images. Add it to the delete list.

Also: remove another new, unnecessary (for curl CI) package source seen
on the `ubuntu-24.04-arm` runner, for good measure, and performance.

Fixing:
```
Reading package lists...
E: Failed to fetch https://packages.microsoft.com/repos/azure-cli/dists/noble/InRelease  403  Forbidden [IP: 13.107.246.66 443]
E: The repository 'https://packages.microsoft.com/repos/azure-cli noble InRelease' is no longer signed.
Error: Process completed with exit code 100.
```
Ref: https://github.com/curl/curl/actions/runs/20896127602/job/60034941964?pr=20142#step:2:79

Follow-up to 303bb8785c45fcad879c9c1c86e9c7e09ff68097 #13473

Closes #20253

2 weeks agowolfssl: fix build without USE_BIO_CHAIN
Daniel Stenberg [Sun, 11 Jan 2026 09:50:19 +0000 (10:50 +0100)] 
wolfssl: fix build without USE_BIO_CHAIN

Reported-by: Megamouse on github
Fixes #20250
Closes #20251

2 weeks agoaltsvc: move logic from setopt into Curl_altsvc_ctrl()
Daniel Stenberg [Sat, 10 Jan 2026 22:17:58 +0000 (23:17 +0100)] 
altsvc: move logic from setopt into Curl_altsvc_ctrl()

To keep it all in one place.

Closes #20247

2 weeks agoGHA: include runner CPU arch in cache keys (revert)
Viktor Szakats [Sun, 11 Jan 2026 00:07:43 +0000 (01:07 +0100)] 
GHA: include runner CPU arch in cache keys (revert)

Turns out in practice the internal cache name contains the arch where it
matters (arm or dual-arch local builds), which is part of the cache key
string. Drop `runner.arch` to avoid two arch strings in the key.

Cache keys without an explicit arch designator mean intel.

Revert ff78af5752fdf580e5beef743f932cc1625228c3 #20234

Closes #20249

2 weeks agoGHA/linux: fix 'mbedtls' internal name confusion
Viktor Szakats [Sat, 10 Jan 2026 23:05:43 +0000 (00:05 +0100)] 
GHA/linux: fix 'mbedtls' internal name confusion

`mbedtls-arm` and `mbedtls-prev` were matching `contains()` expressions
looking for `mbedtls`. It caused an unnecessary cache restore and an
redundant mbedtls build on bumps, and made the build flavors require
different local directory names to avoid this accidental collision.

Also drop `-threadsafe` from internal names. All local builds are.

Follow-up to 88060353440df4e1b7167c180b39074fd2ab457a #20240
Follow-up to 3a305831d1a9d10b2bfd4fa3939ed41275fee7f7 #19077

Closes #20248

2 weeks agoGHA/linux: move 6 jobs with locally built dependencies to arm
Viktor Szakats [Sat, 10 Jan 2026 21:47:41 +0000 (22:47 +0100)] 
GHA/linux: move 6 jobs with locally built dependencies to arm

All libresll jobs, wolfssl-all, and one mbedtls job.

As noted earlier, arm jobs run faster than intel ones, especially
valgrind steps that run almost twice as fast. Package install runs
slower, but this is offset by faster build and test steps, even in
non-valgrind jobs.

Follow-up to ff78af5752fdf580e5beef743f932cc1625228c3 #20234
Follow-up to 2b0d8dcc16c531d3154ab54347a3eaabf9bd2c7d #20231

Closes #20246