Commit graph

37090 commits

Author SHA1 Message Date
Viktor Szakats
89dfb49c8a
find step 6 FindGSS 2025-11-28 16:19:13 +01:00
Viktor Szakats
a66c669bb6
find step 5 iface 3 2025-11-28 16:19:12 +01:00
Viktor Szakats
263c0792bc
find step 5 iface 2 2025-11-28 16:19:12 +01:00
Viktor Szakats
5ed54728d3
find step 5 iface 1 2025-11-28 16:19:12 +01:00
Viktor Szakats
c193266e59
find step 4 pkg-config readd uppercase FOUND 2025-11-28 16:19:12 +01:00
Viktor Szakats
f3b4210057
find step 4 pkg-config results renames 2025-11-28 16:19:12 +01:00
Viktor Szakats
f120c50850
find step 4 requires rename 2025-11-28 16:19:12 +01:00
Viktor Szakats
57a1b47f99
find step 3 2025-11-28 16:19:12 +01:00
Viktor Szakats
371c3f6e0e
find step 2 2025-11-28 16:19:12 +01:00
Viktor Szakats
fbf6079834
find step 1 2025-11-28 16:19:12 +01:00
Viktor Szakats
e4c489e19c
step 1 2025-11-28 16:19:12 +01:00
Viktor Szakats
fb4b207f7e
cm: zlib::zlib pc_modules 2025-11-28 16:19:12 +01:00
Viktor Szakats
a8a0f869b7
cm: add target prop processor logic 2 2025-11-28 16:19:12 +01:00
Viktor Szakats
e8f52f0b4e
cm: add target prop processor logic 2025-11-28 16:19:12 +01:00
Viktor Szakats
5596004115
curl-config.cmake.in: add logic 3 2025-11-28 16:19:12 +01:00
Viktor Szakats
79157efeb2
curl-config.cmake.in: add logic 2 2025-11-28 16:19:12 +01:00
Viktor Szakats
4a143771e0
curl-config.cmake.in: add logic 2025-11-28 16:19:11 +01:00
Viktor Szakats
e25a3c6734
GHA/curl-for-win: drop WINE install, do not run curl after build
To reduce to amount of Debian packages to install, which hopefully
removes some flakiness due to sometimes very slow Azure package
distro servers. Possible also making these jobs finish 20s faster.

Windows from Debian | llvm               | gcc
:------------------ | :----------------: | :----------------:
build time          |  2m41s  ->  2m20s  |  3m19s  ->  2m57s
installed packages  |  288    ->  142    |  247    ->  99
downloads           |  403 MB ->  240 MB |  297 MB -> 134 MB
disk space          | 2132 MB -> 1289 MB | 1582 MB -> 739 MB

Before: https://github.com/curl/curl/actions/runs/19765983026
After: https://github.com/curl/curl/actions/runs/19766373960?pr=19749

Ref: 02149b7e36

Closes #19749
2025-11-28 15:39:12 +01:00
Viktor Szakats
aad3c2e8e1
example: fix formatting nits
Also:
- drop non-portable `__STRING()` macro use where still used.

Closes #19746
2025-11-28 15:01:59 +01:00
Yedaya Katsman
c10dda9ebb
curlx/fopen: fix typo in copyright
Follow-up to 193cb00ce9 #19626

Closes #19747
2025-11-28 15:01:59 +01:00
Viktor Szakats
193cb00ce9
build: stop overriding standard memory allocation functions
Before this patch curl used the C preprocessor to override standard
memory allocation symbols: malloc, calloc, strdup, realloc, free.
The goal of these is to replace them with curl's debug wrappers in
`CURLDEBUG` builds, another was to replace them with the wrappers
calling user-defined allocators in libcurl. This solution needed a bunch
of workarounds to avoid breaking external headers: it relied on include
order to do the overriding last. For "unity" builds it needed to reset
overrides before external includes. Also in test apps, which are always
built as single source files. It also needed the `(symbol)` trick
to avoid overrides in some places. This would still not fix cases where
the standard symbols were macros. It was also fragile and difficult
to figure out which was the actual function behind an alloc or free call
in a specific piece of code. This in turn caused bugs where the wrong
allocator was accidentally called.

To avoid these problems, this patch replaces this solution with
`curlx_`-prefixed allocator macros, and mapping them _once_ to either
the libcurl wrappers, the debug wrappers or the standard ones, matching
the rest of the code in libtests.

This concludes the long journey to avoid redefining standard functions
in the curl codebase.

Note: I did not update `packages/OS400/*.c` sources. They did not
`#include` `curl_setup.h`, `curl_memory.h` or `memdebug.h`, meaning
the overrides were never applied to them. This may or may not have been
correct. For now I suppressed the direct use of standard allocators
via a local `.checksrc`. Probably they (except for `curlcl.c`) should be
updated to include `curl_setup.h` and use the `curlx_` macros.

This patch changes mappings in two places:
- `lib/curl_threads.c` in libtests: Before this patch it mapped to
  libcurl allocators. After, it maps to standard allocators, like
  the rest of libtests code.
- `units`: before this patch it mapped to standard allocators. After, it
  maps to libcurl allocators.

Also:
- drop all position-dependent `curl_memory.h` and `memdebug.h` includes,
  and delete the now unnecessary headers.
- rename `Curl_tcsdup` macro to `curlx_tcsdup` and define like the other
  allocators.
- map `curlx_strdup()` to `_strdup()` on Windows (was: `strdup()`).
  To fix warnings silenced via `_CRT_NONSTDC_NO_DEPRECATE`.
- multibyte: map `curlx_convert_*()` to `_strdup()` on Windows
  (was: `strdup()`).
- src: do not reuse the `strdup` name for the local replacement.
- lib509: call `_strdup()` on Windows (was: `strdup()`).
- test1132: delete test obsoleted by this patch.
- CHECKSRC.md: update text for `SNPRINTF`.
- checksrc: ban standard allocator symbols.

Follow-up to b12da22db1 #18866
Follow-up to db98daab05 #18844
Follow-up to 4deea9396b #18814
Follow-up to 9678ff5b1b #18776
Follow-up to 10bac43b87 #18774
Follow-up to 20142f5d06 #18634
Follow-up to bf7375ecc5 #18503
Follow-up to 9863599d69 #18502
Follow-up to 3bb5e58c10 #17827

Closes #19626
2025-11-28 10:44:26 +01:00
Daniel Stenberg
bfc3d131b6
http: add asserts for null terminator for input strings
http_rw_hd() assumes the null terminator is present. These asserts make
sure this remains true.

Closes #19741
2025-11-28 10:06:09 +01:00
Viktor Szakats
48939a4575
GHA/linux-old: add support for using custom CMake versions
Install CMake from the Kitware GitHub release archive. To allow choosing
its version independently from the OS.

Switch to 3.7.0 (from 3.7.2) to test the earliest supported version.
Also tested OK with 3.18.4 and 3.7.2.

The download and install step takes 1-2 seconds.

Follow-up to c9e50e9e39 #19737

Closes #19738
2025-11-28 03:11:33 +01:00
renovate[bot]
9d059e27d1
GHA: update dependency pyspelling to v2.12.1
Closes #19712
2025-11-28 02:53:40 +01:00
renovate[bot]
e7c2f5bf53
GHA: update dependency google/boringssl to v0.20251124.0
Closes #19685
2025-11-28 02:53:40 +01:00
Viktor Szakats
5c275f7fef
GHA/linux-old: stop installing groff, it is unused 2025-11-28 02:40:19 +01:00
Viktor Szakats
c9e50e9e39
appveyor: add support for using custom CMake versions
To allow more flexibility and not be limited by defaults offered by
the runner machines:
- Visual Studio 2013: CMake 3.12.2
- Visual Studio 2015, 2017: CMake 3.16.2
Ref: https://www.appveyor.com/docs/windows-images-software/

Start using 3.18.4, 3.19.8, 3.20.6 in older VS jobs to add variations.

Time cost is a couple of seconds per job.

Ref: #18704 (Discussion)
Ref: #16973

Closes #19737
2025-11-28 00:51:08 +01:00
Viktor Szakats
376c7bddc4
unit1653: replace local macro with Curl_safefree()
Cherry-picked from #19626
Closes #19736
2025-11-27 21:02:18 +01:00
Viktor Szakats
6dc82c8046
memdebug: replace (fwrite) with fwrite
Cherry-picked from #19626
Closes #19735
2025-11-27 21:02:17 +01:00
Viktor Szakats
63eb0627b1
curl_setup.h: drop superfluous parenthesis from Curl_safefree macro
Cherry-picked from #19626
Closes #19734
2025-11-27 20:33:05 +01:00
Viktor Szakats
986e6d4eae
CODE_STYLE.md: sync banned function list with checksrc.pl
Also alpha sort the list in checksrc.pl.

Closes #19733
2025-11-27 18:53:35 +01:00
Daniel Stenberg
5c22bd5384
mbedtls_threadlock: avoid calloc, use array
Closes #19732
2025-11-27 18:09:14 +01:00
Daniel Stenberg
aa9342058f
RELEASE-NOTES: synced 2025-11-27 16:14:37 +01:00
Daniel Stenberg
53775baa1d
tests: allow 2500-2503 to use ~2MB malloc
On Linux using UDP_GRO, curl might allocate a (single) 1.5MB buffer for
maximum performance.

Fixes #19716
Closes #19731
2025-11-27 16:09:48 +01:00
Viktor Szakats
c1deea4c58
GHA/http3-linux: add H3 valgrind tests
Ref: #19714
Ref: #19717

Closes #19719
2025-11-27 16:05:42 +01:00
Stefan Eissing
56e88e7c14
cfilter: send uint8_t bytes
Change the send parameter from `const void *` to `const uint8_t *` and
adapt calling code. Several had already unsigned chars and were casting.

Closes #19729
2025-11-27 16:03:21 +01:00
Daniel Stenberg
1e048e932a
ngtcp2: remove the unused Curl_conn_is_ngtcp2 function
Closes #19725
2025-11-27 16:00:20 +01:00
Daniel Stenberg
a59a3cc7f1
cfilters: make conn_forget_socket a private libssh function
It is only used for (old) libssh builds.

Closes #19727
2025-11-27 15:59:40 +01:00
Viktor Szakats
c8b76ff42f
GHA/http3-linux: fix broken h3 server in non-openssl jobs, for more pytests
It also revealed 3 failing earlydata tests with two backends on Linux,
seen earlier on macOS:
```
LibreSSL     before: 571 passed, 141 skipped in 45.34s
LibreSSL      after: 736 passed,  95 skipped in 68.08s

aws-lc       before: 571 passed, 141 skipped in 78.87s
aws-lc        after: 736 passed,  95 skipped in 66.71s

BoringSSL    before: 511 passed, 201 skipped in 46.47s
BoringSSL     after: 676 passed, 155 skipped in 63.96s

GnuTLS       before: 515 passed, 197 skipped in 48.31s
GnuTLS        after: 688 passed, 140 skipped in 67.79s (3 failed)

wolfSSL      before: 541 passed, 171 skipped in 52.49s
wolfSSL       after: 714 passed, 114 skipped in 83.84s (3 failed)

OpenSSL      before: 757 passed,  74 skipped in 65.43s
OpenSSL       after: 757 passed,  74 skipped in 65.06s

OpenSSL-quic before: 741 passed,  90 skipped in 62.85s
OpenSSL-quic  after: 741 passed,  90 skipped in 57.20s

quiche       before: 511 passed, 201 skipped in 45.94s
quiche        after: 664 passed, 167 skipped in 59.57s
```
Before: https://github.com/curl/curl/actions/runs/19734972379
After: https://github.com/curl/curl/actions/runs/19736703398?pr=19723

Failures address via: 0081c5b126 #19730

Ref: #19724

Closes #19723
2025-11-27 15:57:52 +01:00
Viktor Szakats
0081c5b126
pytest: disable two H3 earlydata tests for all platforms (was: macOS)
Follow-up to 692c7f133e #19252
Follow-up to eefd03c572 #18703

Ref: #19719
Ref: #19723

Fixes #19724
Closes #19730
2025-11-27 15:51:47 +01:00
Viktor Szakats
7a10f49322
badwords: make some words match case-insensitively
Also:
- wcurl.md: sync with upstream to pass the badwords check.

Ref: 11f840cddd
Ref: https://github.com/curl/wcurl/pull/79

Closes #19713
2025-11-27 15:10:34 +01:00
Viktor Szakats
eae2df837e
runtests: fix showing nghttpx-h3 in the Env: log when detected
Ref: #19723
Closes #19728
2025-11-27 15:05:08 +01:00
Viktor Szakats
71e9920fcd
GHA: add timeouts to mitigate hung brew install step
Ref: https://github.com/curl/curl/actions/runs/19736703410/job/56550251534?pr=19723

Closes #19726
2025-11-27 15:05:08 +01:00
Stefan Eissing
bbb929112b
curlx_base64_encode: use uint8_t* for input
Change `inputbuff` parameter from `const char *` to `const uint8_t *` to
reflect the binary nature of the input bytes. Half the code was casting
unsigned char to signed already in calling.

Closes #19722
2025-11-27 14:35:01 +01:00
Stefan Eissing
fd5a117a67
ws: use uint8_t
Convert `unsigned char` use to `uint8_t`.

Closes #19721
2025-11-27 14:33:31 +01:00
Stefan Eissing
c4f29cc508
ip_quadruple/proxy: make port uint16_t
Make `port` member in these struct of type `uint16_t`.

add `uint8_t transport` to `struct ip_quadruple

Define TRNSPRT_NONE as 0. By assigning a valid transport only on a
successful connection, it is clear when the ip_quadruple members are
valid. Also, for transports not involving ports, the getinfos for
`CURLINFO_PRIMARY_PORT` and `CURLINFO_LOCAL_PORT` will now always return
-1.

Make all `transport` members and parameters of type `uint8_t`.

Document the return value of `CURLINFO_LOCAL_PORT` and
`CURLINFO_PRIMARY_PORT` in this regard. Add tests that writeout stats
report ports correctly.

Closes #19708
2025-11-27 14:32:01 +01:00
Stefan Eissing
feea968512
conncontrol: reuse handling
Add protocol handler flag `PROTOPT_CONN_REUSE` to indicate that the
protocol allows reusing connections for other tranfers. Add that
to all handlers that support it.

Create connections with `conn->bits.close = FALSE` and remove all
the `connkeep()` calls in protocol handlers setup/connect implementations.
`PROTOPT_CONN_REUSE` assures that the default behaviour applies
at the end of a transfer without need to juggle the close bit.

`conn->bits.close` now serves as an additional indication that a
connection cannot be reused. Only protocol handles that allow
reuse need to set it to override the default behaviour.

Remove all `connclose()` and `connkeep()` calls from connection
filters. Filters should not modify connection flags. They are
supposed to run in eyeballing situations where a filter is just
one of many determining the outcome.

Fix http response header handling to only honour `Connection: close`
for HTTP/1.x versions.

Closes #19333
2025-11-27 14:30:14 +01:00
Stefan Eissing
a9e7a027ed
vquic: do_sendmsg full init
When passing a `msg_ctrl` to sendmsg() as part of GSO handling, zero the
complete array. This fixes any false positives by valgrind that complain
about uninitialised memory, even though the kernel only ever accesses
the first two bytes.

Reported-by: Aleksei Bavshin
Fixes #19714
Closes #19715
2025-11-27 12:36:23 +01:00
Stefan Eissing
9bb5c0578b
ngtcp2+openssl: fix leak of session
Fix return value indicating to OpenSSL if reference to session is kept
(it is not), so OpenSSL frees it.

Reported-by: Aleksei Bavshin
Fixes #19717
Closes #19718
2025-11-27 12:35:39 +01:00
Daniel Stenberg
c273de193e
test433: verify "Note: Read config file from..."
Which was added in fc09a2da4a

Closes #19699
2025-11-27 08:39:40 +01:00