Commit graph

37141 commits

Author SHA1 Message Date
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
Viktor Szakats
c421c3e325
cmake: verify minimum CMake version in curl-config.cmake
Show a message if the CMake version is lower than that when consuming
libcurl via the CMake config.

The minimum CMake version on consumption is for now the same as
the minimum required (v3.7) to build curl itself.

Ref: https://cmake.org/cmake/help/v3.7/variable/CMAKE_MINIMUM_REQUIRED_VERSION.html
Ref: #18704 (discussion)
Follow-up to 16f073ef49 #16973
Closes #19776
2025-12-01 14:46:44 +01:00
Daniel Stenberg
a2ebae61ca
tool_urlglob: acknowledge OOM in peek_ipv6
Previously, an OOM error would just imply not an IPv6 address.

Closes #19784
2025-12-01 14:44:41 +01:00
Daniel Stenberg
fb7033d760
runtests: enable torture testing with threaded resolver
Since a7bebd8502 made it possible.
Closes #19786
2025-12-01 14:42:40 +01:00
Stefan Eissing
d1b85bc49c
memdebug: log before free
add the debug log before freeing the memory, otherwise another thread
might allocate and log it before the free is logged.

Follow-up to a7bebd8502
Closes #19787
2025-12-01 14:12:59 +01:00
Stefan Eissing
a7bebd8502
memdebug: add mutex for thread safety
Protect modification to the `membuf` by different threads
via a mutex. This ensure that index updates are correct and
that data gets written in order.

Closes #19785
2025-12-01 13:43:41 +01:00
Daniel Stenberg
c6c4a99300
http: acknowledge OOM errors from Curl_input_ntlm
Closes #19781
2025-12-01 12:47:57 +01:00
Daniel Stenberg
012fa2b91b
auth: always treat Curl_auth_ntlm_get() returning NULL as OOM
Closes #19782
2025-12-01 12:47:23 +01:00
Viktor Szakats
4aed2dcc89
krb5: fix detecting channel binding feature
Use the already detected `gssapi/gssapi_krb5.h` MIT Kerberos header
to pull in `gssapi_ext.h`, which in turn sets `GSS_C_CHANNEL_BOUND_FLAG`
if supported. Channel binding is present in MIT Kerberos 1.19+.

Also:
- lib: de-duplicate GSS-API header includes.
- vauth: de-duplicate `urldata.h` includes.
- drop interim feature macro in favor of the native GSS one.

Assisted-by: Max Faxälv
Reported-by: Max Faxälv
Bug: https://github.com/curl/curl/pull/19164#issuecomment-3551687025
Follow-up to 8616e5aada #19164
Closes #19603
Closes #19760
2025-12-01 11:43:20 +01:00
Viktor Szakats
dabfae84f0
cmake: namespace all local variables in curl-config.cmake
Also:
- apply it to the local copy of this code in `lib/CMakeLists.txt`.
- replace 'CURL' with `@PROJECT_NAME@` in a message.

Closes #19777
2025-12-01 11:43:20 +01:00
Daniel Stenberg
729316a9e4
http: handle oom error from Curl_input_digest()
Closes #19780
2025-12-01 10:47:33 +01:00
Daniel Stenberg
cffc912844
url: fix return code for OOM in parse_proxy()
Closes #19779
2025-12-01 10:18:58 +01:00
Daniel Stenberg
41931f1659
imap: make sure Curl_pgrsSetDownloadSize() does not overflow
Follow-up to c1e3a760b. The previous update missed an addition that also
can wrap and cause confusion. Fixing this by calling
Curl_pgrsSetDownloadSize() after the overflow check.

Reported-by: Deniz Parlak
Closes #19774
2025-12-01 08:37:23 +01:00
Viktor Szakats
bf58ca6e8f
cmake: narrow scope of custom CMAKE_MODULE_PATH in curl-config.cmake
Set it only while using local Find modules, leave it as-is while using
system ones.

Follow-up to 16f073ef49 #16973
Cherry-picked from #19776
2025-12-01 01:28:24 +01:00
Viktor Szakats
7799d15eef
cmake: fix ws2_32 reference in curl-config.cmake
Follow-up to 16f073ef49 #16973
Follow-up to 554dfa5568 #17927

Closes #19775
2025-12-01 00:57:12 +01:00
Viktor Szakats
f553bff6ee
cmakelint: also lint CMake .in files, fix a long line
```
CMakeConfigurableFile.in
cmake_uninstall.cmake.in
curl-config.cmake.in
```

Follow-up to 16f073ef49 #16973
Closes #19773
2025-12-01 00:03:07 +01:00
Viktor Szakats
4e8d5da7ee
vtls: drop interim ECH feature macros (OpenSSL, wolfSSL)
Use the macros set by autotools and cmake, to simplify.

Closes #19772
2025-11-30 22:27:25 +01:00
Viktor Szakats
815bf76649
autotools: delete idle AM_CFLAGS, AM_LDFLAGS variables
Closes #19771
2025-11-30 22:27:25 +01:00
Viktor Szakats
003689c3d3
cf-socket: drop feature check for IPV6_V6ONLY on Windows
The macro is present in all supported Windows toolchains.

It's present in mingw-w64 v3+, and in MS SDK 6.0A+ (maybe earlier).

Also:
- restrict this logic to `USE_WINSOCK` (was: `_WIN32`), to exclude
  alternate socket libraries (i.e. lwIP). lwIP supports `IPV6_V6ONLY`
  since its 2.0.0 (2016-11-10) release and it's disabled by default,
  unlike in Winsock.
  Ref: e65202f825
- delete interim setter function/dummy macro `set_ipv6_v6only()`.

Follow-up to a28f5f68b9 #18010
Follow-up to ca3f6decb9 #10975

Closes #19769
2025-11-30 22:27:25 +01:00
Viktor Szakats
fdf9937cef
rtmp: stop redefining setsockopt system symbol on Windows
Before this patch it added Windows-specific casts. In unity builds this
also affected other source files.

`setsockopt()` is called without special casts in other places in
the code, and passing a non-const char ptr to a const char ptr arg also
should work.

Basic compile test with mingw-w64 confirms. In case of issues, a cast to
`curl_socklen_t` can be used, or do the special case in an `#if` branch.

Also: merge Windows-specific guards for `SET_RCVTIMEO()`.

Follow-up to 639d052e44 #3155
Follow-up to 04cb15ae9d

Closes #19768
2025-11-30 22:27:25 +01:00
Viktor Szakats
0180af2481
tests/data: add %PERL to postcheck commands where missing
To avoid potentially executing a different Perl than used by the rest
of the build and tests.

Also to be more portable by not relying on shebang support, though these
particular tests require POSIX shell anyway.

Closes #19767
2025-11-30 11:01:50 +01:00
Viktor Szakats
2d2d70b6e5
test613.pl: integrate mtime check for test 1445, 1446
Move check logic from postchecks to `test613.pl`.

To make these test data files XML-compliant.
Also to avoid POSIX/bash-shellisms in postcheck.

Closes #19766
2025-11-30 11:01:50 +01:00