Commit Graph

35326 Commits

Author SHA1 Message Date
Calvin Ruocco
dc3252bedd
ws-docs: extend WebSocket documentation
Closes #16118
2025-02-03 20:07:30 +01:00
mauke
bfec1d7165
runtests.pl: fix precedence issue
The condition `!$cmdtype eq "perl"` (introduced in a4765b0551) is always
false. It checks whether a logical negation (giving true/false) is equal
to the string `"perl"`. This is impossible, so the logging never worked.

The intent was probably to negate the result of the string
comparison:`!($cmdtype eq "perl")` or simply `$cmdtype ne "perl"`.

Fixes #16128
Reported-by: Igor Todorovski
Closes #16129
2025-02-03 20:04:12 +01:00
Dan Fandrich
9712db21d1 tests: stop promoting perl warnings to fatal errors
While this is useful on CI to highlight issues in the scripts, it's a
recipe for pain when enabled on users' builds.

Suggested-by: Leon Timmermans
Ref: #16128
2025-02-03 10:51:48 -08:00
Viktor Szakats
671e83f0b1
c-ares: fix/tidy-up macro initializations, avoid a deprecated function
- replace deprecated `ares_init()` call with `ares_init_options()`.
  Follow-up to 0d4fdbf15d #16054

- dedupe `CARES_STATICLIB` initalizations into `curl_setup.h`, to
  ensure it's defined before the first (and every) `ares.h` include and
  avoid a potential confusion.

- move `CARES_NO_DEPRECATED` from build level to `curl_setup.h`.
  To work regardless of build system.
  It is necessary because curl calls `ares_getsock()` from two places,
  of which one feeds a chain of wrappers: `Curl_ares_getsock()`,
  `Curl_resolver_getsock()`, `Curl_resolv_getsock()`.

Closes #16131
2025-02-03 19:04:50 +01:00
Viktor Szakats
4f95f32709
INSTALL-CMAKE.md: fix punctuation 2025-01-30 15:51:48 +01:00
Viktor Szakats
b13e9066b3
GHA: tidy up apt commands
- drop `--quiet 2` option where used, to have uniform output.
- replace `apt` with `apt-get` in one job. sync options with rest.
- replace deprecated `apt-key` command with the alternative recommended
  by `apt-key(8)`.
- drop stray `cd /tmp`, no longer needed after migrating to GHA.
- shorten `--option Dpkg::Use-Pty=0` to `-o Dpkg::Use-Pty=0`.
- add `-o Dpkg::Use-Pty=0` to hide `apt-get` progress bars taking
  vertical log space, where missing.
- drop `-y --no-install-suggests --no-install-recommends` `apt-get`
  options. They are the default in the ubuntu-24.04 image.
- GHA/distcheck: move `name:` to top in steps where not there.
- scripts/cijobs.pl: catch `apt-get` lines with the `-o` option.

Closes #16127
2025-01-30 02:36:43 +01:00
Michael Schuster
11ea10355a
mbedtls: PSA can be used independently of TLS 1.3 (avoid runtime errors)
Closes #16044
2025-01-29 08:54:10 +01:00
Dan Fandrich
23ec39c3b5 test1960: don't close the socket too early
The socket was closed while the handle was still in use, so
curl_easy_cleanup ended up setting nonblocking mode on a closed handle.

Closes #16123
2025-01-28 09:43:31 -08:00
Viktor Szakats
34c1c653fc
cmake: warn for OpenSSL versions missing TLS 1.3 support
To match existing warnings for Secure Transport and BearSSL.

OpenSSL 1.1.1 or upper are offering TLS 1.3 support.

Ref: https://wiki.openssl.org/index.php/TLS1.3

Closes #16120
2025-01-28 18:05:40 +01:00
Daniel Stenberg
b0009d0216
cd2nroff: do not insist on quoted <> within backticks
Ref: #16118
Closes #16121
2025-01-28 17:36:55 +01:00
Viktor Szakats
4519a9c887
gitignore: add lib/Makefile.soname.cmake 2025-01-28 16:04:29 +01:00
Stefan Eissing
f6ea54af32
https-connect: start next immediately on failure
When parallel connects are attempted, the second one is started on a
delay. Start it right away when the first one failed.

Closes #16114
2025-01-28 15:40:33 +01:00
Viktor Szakats
9eae606dfd
gitignore: restore explicit lists and fix them
Range matches are not supported with `+`: https://git-scm.com/docs/gitignore

Also sync `.gitignore` file lists with source files and alphasort them.

Follow-up to 5c31c2e670 #16093
Reported-by: Stefan Eissing
Fixes #16112
Fixes #16115
Closes #16116
2025-01-28 14:44:35 +01:00
Stefan Eissing
399ca56be5
ngtcp2: fix memory leak on connect failure
When a QUIC connection using ngtcp2 failed immediately, the TLS
instances were not always released.

Closes #16113
2025-01-28 14:12:42 +01:00
Martin Harrigan
f6da27052e
docs/cmdline-opts/location.md: fix typos for location flag
Closes #16110
2025-01-28 14:07:39 +01:00
Viktor Szakats
f3920c7924
INTERNALS.md: sync wolfSSL version requirement with source code
`lib/vtls/wolfssl.c` enforces it via a hard #error.

Cherry-picked from #16104
2025-01-28 12:06:41 +01:00
Viktor Szakats
8b8ec574bc
openssl: define HAVE_KEYLOG_CALLBACK before use
Before this patch this macro was used in `vtls/openssl.h` without
setting it first, causing the `keylog_done` member be present in
struct `ossl_ctx` while the code did not use it.

Follow-up to 3210101088 #13172
Closes #16105
2025-01-28 11:15:10 +01:00
Viktor Szakats
1dce2a1746
openssl: drop unused HAVE_SSL_GET_SHUTDOWN macro
Follow-up to c31041b17e #13904
Closes #16103
2025-01-28 11:15:09 +01:00
Daniel Stenberg
58c22dda66
tool_getparam: fail --hostpubsha256 if libssh2 is not used
Reported-by: Harry Sintonen
Closes #16109
2025-01-28 10:30:40 +01:00
Andrew Kaster
1b740aedcd
ws: Reject frames with unknown reserved bits set
RFC 6455 Section 5.2 notes that for bits RSV1, RSV2, and RSV3 of the
framing header, a non-zero value that is not defined by a negotiated
extension MUST Fail the WebSocket connection.

Test 2310 verifies

Closes #16069
2025-01-28 10:19:39 +01:00
Jay Satiro
e2ec7bf1b4 vtls: fix default SSL backend as a fallback
- Use build-time CURL_DEFAULT_SSL_BACKEND as a fallback when environment
  variable CURL_SSL_BACKEND contains a backend that is unavailable.

Prior to this change if CURL_SSL_BACKEND was set then
CURL_DEFAULT_SSL_BACKEND was ignored even if the backend of the former
was unavailable. In that case libcurl would instead select the first
available backend in the list of backends.

Bug: https://github.com/curl/curl/issues/16076#issuecomment-2617354254
Reported-by: Jeroen Ooms

Closes https://github.com/curl/curl/pull/16108
2025-01-28 03:29:35 -05:00
Jay Satiro
4f99efb192 easy: allow connect-only handle reuse with easy_perform
- Detach and disconnect an attached connection before performing.

Prior to this change it was not possible to safely reuse an easy handle
with an attached connection in a second call to curl_easy_perform. The
only known case of this is a connect-only type handle where the
connection was detached when curl_easy_perform returned, only to be
reattached by either curl_easy_send/recv.

This commit effectively reverts 2f8ecd5d and be82a360, the latter of
which treated the reuse as an error. Prior to that change undefined
behavior may occur in such a case.

Bug: https://curl.se/mail/lib-2025-01/0044.html
Reported-by: Aleksander Mazur

Closes https://github.com/curl/curl/pull/16008
2025-01-28 03:27:04 -05:00
Dexter Gerig
f25a807a7d
asyn-ares: fix memory leak
Closes #16107
2025-01-28 09:23:48 +01:00
Dexter Gerig
afb3fd7112
asyn-thread: fix HTTPS RR resolution
Store the received data correctly.

Closes #16107
2025-01-28 09:23:33 +01:00
Viktor Szakats
fd12b56832
gitignore: add generated unity sources for lib and src
Follow-up to 71cf0d1fca #14772
2025-01-27 22:55:39 +01:00
Viktor Szakats
81e271f45c
checksrc: exclude generated bundle files to avoid race condition
Necessary to catch rare cases when `checksrc` hits these files when they
are not populated yet:
```
./curltool_unity.c:1:1: error: Missing copyright statement (COPYRIGHT)
 ^
```
https://github.com/curl/curl/actions/runs/12995546740/job/36242556713?pr=16094#step:37:123

Follow-up to 71cf0d1fca #14772
Closes #16102
2025-01-27 20:59:47 +01:00
Viktor Szakats
23b41224e3
msvc: add missing push/pop for warning pragmas
Also fix indentation/formatting around similar pragmas.

Closes #16101
2025-01-27 20:59:47 +01:00
Viktor Szakats
108b2153ac
Makefile.dist: delete
It had shorthand aliases to launch `./configure` and
`./configure --with-openssl`. The former hasn't worked for a long while
because of missing TLS.

Its `ca-bundle` and `ca-firefox` targets have been broken for 2.5 years
till recently. These targets also exist in `./configure` and have been
working all along.

Also:
- cmake: add support `curl-ca-bundle` and `curl-ca-firefox` targets.
- tests/testcurl.pl: drop obsolete build logic.

Closes #16094
2025-01-27 20:59:47 +01:00
Viktor Szakats
5c31c2e670
tidy-up: .gitignore lines mostly
- `.gitignore`: delete, dedupe and move rules upwards.
  Ref: 6389ba87b8 #13311
- `.gitignore`: fix generated test sources.
  Follow-up to 71cf0d1fca #14772
- `.gitignore`: replace exe listings with a wildcard.
- lib: move `setup-*.h` from `EXTRA_DIST` to `CURL_HFILES`.
- `makedebug.bat`: uppercase an argument to match docs.
- GHA/non-native: delete stray env.
  Follow-up to 12a6de2f66 #16043
- sort source lists.

Closes #16093
2025-01-27 20:59:46 +01:00
Daniel Stenberg
cb4cd36fe7
VULN-DISCLOSURE-POLICY: on legacy dependencies
Problems that only trigger using *legacy* dependencies are not
considered security problems.

Closes #16086
2025-01-27 15:48:13 +01:00
Daniel Stenberg
35b1c1585b
urldata: tweak the UserDefined struct
By better sticking to listing the struct members sorted by size, this
struct is now 48 bytes smaller on my fairly maximized build, without
removing anything.

Turned 'connect_only' into two bits instead of an unsigned char with two
magic values.

Also put the 'gssapi_delegation' field within ifdef HAVE_GSSAPI.

Closes #16097
2025-01-27 15:47:18 +01:00
Stefan Eissing
5b73a7b637
http2: fix data_pending check
The h2 filter mistakenly also checked `sendbuf` when asked
about pending data. The call is only meant to account for
buffered data that still needs to be received.

Also, remove obsolete recvbuf in stream as we write received
headers and data directly.

Fixes #16084
Closes #16098
Reported-by: Deniz Sökmen
2025-01-27 15:46:33 +01:00
Viktor Szakats
b01f44ec09
INSTALL.md: add CMake examples for macOS and iOS
Closes #16095
2025-01-27 12:49:12 +01:00
Daniel Stenberg
e5d7a154d6
RELEASE-NOTES: synced 2025-01-27 08:18:45 +01:00
Daniel Stenberg
2a49cad39e
version: fix the IDN feature for winidn and appleidn
Closes #16091
2025-01-27 08:13:38 +01:00
Daniel Stenberg
e27abfe2f1
version: rename c-ares-rr to asyn-rr
Works better if we later introduce another way to do the asynch RR
resolves (together with the threaded resolver) that does not use c-ares.

Closes #16090
2025-01-27 08:11:44 +01:00
Viktor Szakats
5ce5c62662
GHA: fixup CM/AM order within Apple steps, move name: first, quote them
Closes #16092
2025-01-26 15:18:59 +01:00
Viktor Szakats
7c198b59e4
projects: fix INSTALL-CMAKE.md references
Follow-up to 0f4c19b66a #12772
2025-01-26 15:09:16 +01:00
Viktor Szakats
af892b5400
windows: drop two missed buildconf.bat references
Follow-up to 0035ff45c5 #16081
2025-01-26 15:04:54 +01:00
Viktor Szakats
0035ff45c5
build: drop tool_hugehelp.c.cvs, tidy up macros, drop buildconf.bat
Rework the way `tool_hugehelp.c` is included in builds.

After this patch, with `./configure` and CMake `tool_hugehelp.c` is only
compiled when building with manuals enabled. With manuals disabled this
source file is not used anymore. The method is similar to how
8a3740bc8e implemented `tool_ca_embed.c`.
`./configure` always generates it as before, otherwise the build fails.

- winbuild: rework to not need `buildconf.bat`, but automatically use
  `tool_hugehelp.c` if present (e.g. when building from an official
  source tarball) and enable `USE_MANUAL` accordingly.

- `buildconf.bat`: after dropping `tool_hugehelp.c` generation, the only
  logic left was `cp Makefile.dist Makefile`. This allowed to launch
  winbuild builds via GNU Make in a Git repo. Drop this option together
  with the batch file.

- build `libcurltool` without `USE_MANUAL` macro to exclude the manual
  and the dependence on the generator commands. Drop relying on
  `UNITTESTS` for this purpose.
  Follow-up to 96843f4ef7 #16068

- `src/mkhelp.pl`: include `tool_hugehelp.h` before using `USE_MANUAL`
  to have it set in `config-*.h` builds with source tarballs created
  with manual but without zlib.

Closes #16081
2025-01-26 14:22:49 +01:00
Jay Satiro
1a36923d73 tests: change the behavior of swsbounce
- Change the swsbounce keyword to override the part number on a
  subsequent request to the previous part number + 1.

Note the previous part number in this case is the part number that
was returned as a response to the previous request and contained
the swsbounce keyword.

Prior to this change swsbounce incremented the part number of the
subsequent request instead of overriding it, and did so in a more
limited fashion that prevented chaining swsbounce in multiple responses.

For example, if the test makes a request that causes the sws server to
return `<data>` as a response and that response contains `swsbounce`
then for the next response the sws server returns `<data1>`. If
`<data1>` also contains `swsbounce` then for the next response the sws
server now returns `<data2>` instead of the requested part.

Fixes https://github.com/curl/curl/discussions/16074
Closes https://github.com/curl/curl/pull/16085
2025-01-26 02:29:21 -05:00
Viktor Szakats
516cb98733
docs/HTTPSRR.md: fix typo in option name
Follow-up to 7f4f192f04 #16052
2025-01-26 02:23:23 +01:00
Viktor Szakats
3e552ef833
cmake/Find: add iphlpapi for c-ares, omit syslibs if dep not found
- add `iphlpapi` library for c-ares.
  Ref: 082d98ba6b

- fix to not add system libs if the dependency was not found.
  librtmp, Rustls, wolfSSL
  Follow-up to 421e592db2 #15832
  Follow-up to 7bab201abe #15193

Closes #16089
2025-01-26 01:52:47 +01:00
Daniel Stenberg
7f4f192f04
docs/HTTPSRR.md: initial HTTPS RR documentation
Closes #16052
2025-01-25 23:51:01 +01:00
Daniel Stenberg
0d4fdbf15d
asyn-thread: use c-ares to resolve HTTPS RR
Allow building with c-ares and yet use threaded resolver for the main
host A/AAAA resolving:

  `--with-ares` provides the c-ares install path and defaults to use
  c-ares for name resolving

  `--with-threaded-resolver` still uses c-ares in the build (for HTTPS)
  but uses the threaded resolver for "normal" resolves.

It works similarly for cmake: ENABLE_ARES enables ares, and if
ENABLE_THREADED_RESOLVER also is set, c-ares is used for HTTPS RR and
the threaded resolver for "normal" resolves.

HTTPSRR and c-ares-rr are new features return by curl_version_info() and
thus shown by curl -V.

The c-ares-rr feature bit is there to make it possible to distinguish
between builds using c-ares for all name resolves and builds that use
the threaded resolves for the regular name resolves and c-ares for
HTTPSRR only. "c-ares-rr" means it does not use c-ares for "plain" name
resolves.

HTTPSRR support is EXPERIMENTAL only.

Closes #16054
2025-01-25 23:46:14 +01:00
Viktor Szakats
520e67dd39
GHA/non-native: bump to NetBSD 10.1
Closes #16088
2025-01-25 23:03:24 +01:00
renovate[bot]
604cb65fbd
GHA/non-native: update cross-platform-actions/action action to v0.27.0
Closes #16071
2025-01-25 22:50:52 +01:00
Viktor Szakats
1bc83abfb7
cmake: drop CURL_USE_PKGCONFIG from curl-config.cmake.in
This variable was meant to be used by curl Find modules, but it turns
out it makes no sense to use those from `curl-config.cmake.in`. It means
this variable was not used before and will not be used in the future,
and therefore safe to delete.

Also add missing macros passed to `curl-config.cmake` to comment.

Ref: https://github.com/curl/curl/pull/14930#discussion_r1929537797

Closes #16087
2025-01-25 15:21:17 +01:00
renovate[bot]
49ece646c0
ci: update dependency cloudflare/quiche to v0.23.2
Closes #16082
2025-01-25 12:06:01 +01:00
Viktor Szakats
d8f1aa4b11
GHA/curl-for-win: fix DOCKER_CONTENT_TRUST for a job [ci skip]
Follow-up to 28230bec1f #15141
2025-01-25 00:42:54 +01:00