Commit graph

38362 commits

Author SHA1 Message Date
Daniel Stenberg
68a44edd50
TODO: remove a mandriva.com reference
It's a casino now
2025-12-05 08:51:11 +01:00
Viktor Szakats
859ce48de1
ldap: detect version of "legacy" LDAP
Legacy LDAP means an OpenLDAP-compatible implementation
without the private API `ldap_init_fd()` introduced in OpenLDAP
2.4.6+ (2007-10-31), and not WinLDAP.

One known example is Apple's LDAP build, which is based on
OpenLDAP 2.4.28 (2011-11-25), without providing this private API.

The version query API was introduced around 1998-1999, before
the minimum (2.0 2000-08-01) required by curl.

Follow-up to 3e2a946926 #19808
Closes #19832
2025-12-04 23:14:01 +01:00
Daniel Stenberg
f1f76e0ea8
url: if curl_url_get() fails due to OOM, error out properly
Even if the scheme is "file"!

Closes #19838
2025-12-04 23:01:01 +01:00
Daniel Stenberg
a1531261b1
CURLMOPT_SOCKETFUNCTION.md: fix the callback argument use
The example code does not use curl_multi_assign(), but its callback
function used socketp (called sockp in the function) to get the struct
priv pointer instead of the correct clientp (cbp).

Reported-by: Greg Hudson
Fixes #19840
Closes #19841
2025-12-04 22:59:51 +01:00
Viktor Szakats
ebe6fa08c9
docs/libcurl: fix C formatting nits
Closes #19844
2025-12-04 22:49:03 +01:00
Viktor Szakats
6d042273cd
openssl: simplify HAVE_KEYLOG_CALLBACK guard
non-LibreSSL always includes BoringSSL and AWS-LC, no need to check for
them explicitly.

Follow-up to 69c89bf3d3 #18330
Closes #19843
2025-12-04 22:49:03 +01:00
Viktor Szakats
df07f431e2
mbedtls: sync format across log messages
Closes #19842
2025-12-04 22:49:03 +01:00
Viktor Szakats
f97e62ff14
sws: fix binding to unix socket on Windows
Windows 10.17063+ (having unix socket support) fails to set for unix
sockets the `SO_REUSEADDR` option, with error 10045 (`WSAEOPNOTSUPP`),
and also fails to set `SO_KEEPALIVE` with error 10042 (`WSAENOPROTOOPT`).

Fix by not enabling these socket options on Windows for unix sockets.

Also:
- fixing test 1435, 1436 to run in CI.
- fixing the `socksd` test server for test 1467, 1468, 1470. But, also
  disable these for now due to another Windows issue: #19825

Ref: https://stackoverflow.com/questions/68791319/unix-domain-socket-bind-failed-in-windows/68794755#68794755
Ref: #19810
Closes #19812
2025-12-04 22:49:03 +01:00
Viktor Szakats
dfd781ff62
tidy-up: miscellaneous
- gnutls, mbedtls: fix casing in log messages.
- src/tool_cfgable.h: drop unused header.
- appveyor.sh: variable style.
- cmakelint.sh: sync with libssh2, catch `.cmake.in` explicitly.
- examples: drop obsolete comments, exclamation marks.
- fix comment typos, casing.

Closes #19839
2025-12-04 20:14:11 +01:00
Viktor Szakats
0476e4fc65
tidy-up: one more round of formatting nits
Closes #19835
2025-12-04 19:30:59 +01:00
Viktor Szakats
7a1e99eefa
badwords: check FAQ with allowlisted 'will', fix a typo
Also:
- badwords.pl: add support for filename:word exceptions.
- badwords.pl: handle `-w` file open errors.

Ref: https://github.com/curl/curl/pull/19817#issuecomment-3612386568
Closes #19837
2025-12-04 19:30:08 +01:00
Daniel Stenberg
d517efe5bd
bufref: add Curl_bufref_dup that returns a strdup()ed version
Cleans up a common pattern somewhat. Implemented as a macro.

Closes #19834
2025-12-04 19:04:19 +01:00
Stefan Eissing
d7928029fc
connection: attached transfer count
Since we no longer traverse the transfers attached to a connection,
change the sparse bitset to just a `uint32_t` counter.

This makes multi_ev the single user of sparse bitsets for transfers
using a socket and allocation failures are handled there correctly.

Refs #19818
Closes #19836
2025-12-04 18:45:38 +01:00
Daniel Stenberg
1def380032
bufref: rename *memdup() to *memdup0()
To make it clearer to readers of the code that the resulting dup also
has a null terminator. Something a "normal" memdup() does not provide.

Closes #19833
2025-12-04 16:49:16 +01:00
Patrick Monnerat
fe7703a0b3
formdata: use struct bufref for maybe-dynamic fields.
Lengths are not stored in the structures, as they may be given before
the data locations.

Closes #19827
2025-12-04 16:17:36 +01:00
Patrick Monnerat
2cb868242d
lib: turn state.referer into a struct bufref
Closes #19827
2025-12-04 16:17:33 +01:00
Patrick Monnerat
36542b7349
lib: turn state.url into a struct bufref
Closes #19827
2025-12-04 16:17:31 +01:00
Patrick Monnerat
f39b8a1174
lib: add a Curl_bufref_uptr() function and use it
Function Curl_bufref_ptr() now returns a const char *.
New function Curl_bufref_uptr() returns a const unsigned char *.

Usage and doc updated.

Closes #19827
2025-12-04 16:17:21 +01:00
Daniel Stenberg
39d1976b7f
ldap: call ldap_init() before setting the options
Closes #19830
2025-12-04 16:14:48 +01:00
Theo Buehler
608f5dd455
vtls: do not reach into ASN1_STRING
OpenSSL 4 has plans to make ASN1_STRING opaque, which will break the
build, so convert the code to use accessors. ASN1_STRING_length() and
ASN1_STRING_type() go way back to SSLeay and ASN1_STRING_get0_data() is
OpenSSL 1.1 API present in BoringSSL since foreer and also available
since LibreSSL 2.7, so this should not cause compat issues with any
libcrypto in a supported version of the fork family.

https://github.com/openssl/openssl/issues/29117

Closes #19831
2025-12-04 16:14:12 +01:00
Viktor Szakats
472bc90323
runtests: make memanalyzer a Perl module (for 1.1-2x speed-up per test run)
Patch #19786 removed an exception, which caused many more CI jobs to run
`memanalyze.pl`. It resulted in a 10-30% (Linux), 15% (macOS), 100% (2x,
on Windows) slowdown of runtest steps. It also made some jobs exceed
their time limits and fail (seen with the Windows ARM64 job.)

Turns out the overhead was caused by calling `memanalyze.pl` as
an external process (twice per test), which in turn had to load a full
Perl stack from scratch each time.

Fix by converting memanalyze to a Perl modul, loaded as part of
`runtests.pl`, which eliminated the overhead completely.

It also sped up existing jobs where memanalyze was run for a long time,
e.g. two c-ares Windows jobs, saving 4.5m per CI run.

Supersedes #19819
Bug: https://github.com/curl/curl/pull/19786#issuecomment-3598679397
Follow-up to fb7033d760 #19786
Closes #19821
2025-12-04 13:14:32 +01:00
Georg Schulz-Allgaier
ff2aaed9ba
noproxy: fix ipv6 handling
Closes #19828
2025-12-04 12:16:02 +01:00
Daniel Stenberg
e8a4068e68
docs: clarify how to do unix domain sockets with SOCKS proxy
Ref: #19825
Closes #19829
2025-12-04 11:13:16 +01:00
Viktor Szakats
276a4af474
test787: fix possible typo & -> % in curl option
They are close on the keyboard and don't affect test results.

To make this test XML-compliant.

Ref: #14479
Follow-up to 40c264db61 #15739
Closes #19826
2025-12-04 01:22:54 +01:00
Viktor Szakats
004f41c186
tests: add %AMP macro, use it in two tests
To allow replacing `&` characters in `tests/data/test*` files for
XML-compliance.

Also:
- document `%GT`, `%LT`
  Follow-up to de49cc89ab #19470

Closes #19824
2025-12-03 20:50:19 +01:00
Viktor Szakats
0417d323c9
src: fix formatting nits
Closes #19823
2025-12-03 20:50:18 +01:00
Viktor Szakats
1753de9d7a
GHA/checksrc: give more time for slow Azure servers [ci skip]
Sometimes 1 minutes is too short to install 39.4 kB of archives.

Ref: https://github.com/curl/curl/actions/runs/19898949860/job/57036965452
2025-12-03 16:34:10 +01:00
Viktor Szakats
6694a42aa0
idn: avoid allocations and wcslen on Windows
Eliminate a heap buffer in both `win32_idn_to_ascii()` and
`win32_ascii_to_idn()`, by replacing it with stack buffer. The maximum
size is fixed in these cases, and small enough to fit there.

Also reuse length returned by the UTF-8 to wchar conversion, allowing
to drop `wcslen()` call in both functions, and allowing to call
the wchar to UTF-8 conversion API `WideCharToMultiByte()` with the known
length, saving length calculations within that API too.

Ref: https://github.com/curl/curl/pull/19748#issuecomment-3592015200

Closes #19798
2025-12-03 14:50:21 +01:00
Viktor Szakats
c3b030b860
lib: fix formatting nits (part 3)
From `lib/h` to `lib/w`.

part 1: 47a1ab2ebe #19764
part 2: 86b346443b #19800

Closes #19811
2025-12-03 14:50:16 +01:00
Daniel Stenberg
dc8c0d54a5
test3207: enable memdebug for this test again
Closes #19813
2025-12-03 09:30:00 +01:00
Viktor Szakats
d993d46eb1
GHA/windows: install MSYS2 c-ares only when used
Closes #19820
2025-12-03 04:45:26 +01:00
Stefan Eissing
aba3c63ae8
pytest: fix and improve reliability
Address issues listed in #19770:
- allow for ngttpx to successfully shut down on last attempt that might
  extend beyond the finish timestamp
- timeline checks: allos `time_starttransfer` to appear anywhere in
  the timeline as a slow client might seen response data before setting
  the other counters
- dump logs on test_05_02 as it was not reproduced locally

Fixes #19970
Closes #19783
2025-12-02 17:15:36 +01:00
Stefan Eissing
9cf4a400d2
pytest: improve stragglers
A fix for the tests that took the longest:
- test_05: make the server close the HTTP/1.1 connection when
  simulating an error during a download. This eliminates waiting
  for a keepalive timeout
- test_02: pause tests with slightly smaller documents, eliminate
  special setup for HTTP/2. We test stream window handling now
  elsewhere already
- cli_hx_download: run look in 500ms steps instead of 1sec, resuming
  paused tranfers earlier.

Closes #19809
2025-12-02 17:04:20 +01:00
Viktor Szakats
86b346443b
lib: fix formatting nits (part 2)
From `lib/curl*` to `lib/g*`. With fixes to part 1.

part 1: 47a1ab2ebe #19764

Closes #19800
2025-12-02 16:52:54 +01:00
Daniel Stenberg
3e2a946926
ldap: provide version for "legacy" ldap as well
It displays in version output as WinLDAP and LDAP/1, compared to
OpenLDAP/[version] for the OpenLDAP backend code.

Closes #19808
2025-12-02 16:27:16 +01:00
Stefan Eissing
b30c1b97b9
quiche: use client writer
Instead of buffering response body data until it is received by the
transfer loop, write the response data directly to the client.

Use a connection wide scratch buffer to get the response body from
quiche. Eliminates need for maintaining individual buffers for each
stream.

Fixes #19803
Reported-by: Stanislav Fort
Closes #19806
2025-12-02 16:25:03 +01:00
Daniel Stenberg
4f2374810a
DEPRECATE.md: remove OpenSSL-QUIC in January 2026 instead
Move it up two months. It was only ever experimental so this cannot
interfere with any production code so shorten the "quarantine".

Closes #19805
2025-12-02 13:41:37 +01:00
Daniel Stenberg
c1c3487d79
curl_gssapi: make sure Curl_gss_log_error() has an initialized buffer
Reported-by: Stanislav Fort (Aisle Research)

Closes #19802
2025-12-02 10:14:15 +01:00
Daniel Stenberg
8dedcce7a3
RELEASE-NOTES: fix typo 2025-12-02 10:13:32 +01:00
Daniel Stenberg
055f1a3d02
RELEASE-NOTES: synced 2025-12-02 09:16:20 +01:00
Stefan Eissing
dc29590d60
memdebug: log socket close before closing
To not get a mixup in the memdebug log order.

Closes #19793
2025-12-02 00:58:31 +01:00
Daniel Stenberg
85a6936d76
libssh2: consider strdup() failures OOM and return correctly
In the ssh_state_pkey_init function.

Closes #19791
2025-12-01 22:17:21 +01:00
Viktor Szakats
58673ac837
runtests: fix Perl warning
```
Use of uninitialized value $cmdhash{"option"} in pattern match (m//) at tests/runtests.pl line 1753.
```
Ref: https://github.com/curl/curl/actions/runs/19833947198/job/56831923295?pr=19794#step:13:3694

Follow-up to 02aa75a8c2 #19752
Closes #19797
2025-12-01 21:32:10 +01:00
Viktor Szakats
9517b41b50
multibyte: limit curlx_convert_*wchar*() functions to Unicode builds
Follow-up to ccb68d2e3b #19790

Closes #19796
2025-12-01 21:32:10 +01:00
Viktor Szakats
189fda0026
memdebug: replace macro constant with sizeof()
Closes #19795
2025-12-01 21:32:10 +01:00
Viktor Szakats
5356bce6ab
windows: use _strdup() instead of strdup() where missing
To replace deprecated `strdup()` CRT calls with the recommended
`_strdup()`.

Refs:
https://learn.microsoft.com/cpp/c-runtime-library/reference/strdup-wcsdup
https://learn.microsoft.com/cpp/c-runtime-library/reference/strdup-wcsdup-mbsdup

Closes #19794
2025-12-01 21:32:09 +01:00
Viktor Szakats
a3fcd80de4
curlx: use curlx allocators in non-memdebug builds (Windows)
To limit raw allocators to `CURLDEBUG` (memdebug/TrackMemory) Windows
UNICODE builds.

Closes #19788
2025-12-01 19:42:56 +01:00
Viktor Szakats
ccb68d2e3b
idn: use curlx allocators on Windows
Replace `curlx_convert*()` functions with local copies that always use
the curlx allocator.

Closes #19790
2025-12-01 18:46:55 +01:00
Viktor Szakats
3387133450
lib: delete unused curlx/multibyte.h includes
Closes #19792
2025-12-01 18:09:09 +01:00
Viktor Szakats
ca1919caee
idn: fix memory leak in win32_ascii_to_idn()
Closes #19789
2025-12-01 16:39:07 +01:00