]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
15 months agotests/http: configure test httpd to honor client cipher order
Stefan Eissing [Thu, 1 Aug 2024 14:16:55 +0000 (16:16 +0200)] 
tests/http: configure test httpd to honor client cipher order

Let the client, e.g. curl, influence the cipher selected in a TLS
handshake. TLS backends have different preferences and honor that
in httpd the same as Caddy does.

Also makes for a more fair compare of different TLS backends.

Closes #14338

15 months agodist: fix reproducible build from release tarball
Daniel Stenberg [Thu, 1 Aug 2024 11:51:43 +0000 (13:51 +0200)] 
dist: fix reproducible build from release tarball

Make it possible to rebuild an identical copy from a release tarball. It
was previously only possible from a checked out git repository.

- add release-tools.sh to dist
- keep Makefile.dist around to include it in dist
- regenerate tool_huge.c with the new version in dist
- fix the dist CI job to not do make clean like before

Closes #14336

15 months agocmake: add gnutls to multissl feature
Tal Regev [Thu, 1 Aug 2024 20:13:42 +0000 (23:13 +0300)] 
cmake: add gnutls to multissl feature

Closes #14345

15 months agocurl: allow 500MB data URL encode strings
Daniel Stenberg [Thu, 1 Aug 2024 14:45:50 +0000 (16:45 +0200)] 
curl: allow 500MB data URL encode strings

Previously it would bail out of the generated data reached 8MB in
memory.

Reported-by: Antoine du Hamel
Fixes #14337
Closes #14340

15 months agoescape: allow curl_easy_escape to generate 3*input length output
Daniel Stenberg [Thu, 1 Aug 2024 14:42:58 +0000 (16:42 +0200)] 
escape: allow curl_easy_escape to generate 3*input length output

Instead of capping it to the 3 * CURL_MAX_INPUT_LENGTH. To allow users
to URL encode larger chunks of data.

Closes #14339

15 months agoCHANGES: rename to CHANGES.md, no longer generated
Daniel Stenberg [Thu, 1 Aug 2024 07:58:31 +0000 (09:58 +0200)] 
CHANGES: rename to CHANGES.md, no longer generated

- scripts/log2changes.pl was not included in release tarballs, which broke
  reproducible builds

- since log2changes uses git to generate the contents, it makes it difficult
  to generate the same contents later (it would need to be fixed)

- the CHANGES file has outlived its purpose. the main changes are in the
  RELEASE-NOTES, the rest are better tracked directly using git or on GitHub

- put a fixed CHANGES.md in there instead pointing out where the info lives
  now

Closes #14331

15 months agoRELEASE-NOTES: synced
Daniel Stenberg [Thu, 1 Aug 2024 11:36:28 +0000 (13:36 +0200)] 
RELEASE-NOTES: synced

Plus add a link to https://curl.se/changes.html

15 months agoGHA: scan git repository and detect unvetted binary files
Daniel Stenberg [Thu, 1 Aug 2024 09:16:21 +0000 (11:16 +0200)] 
GHA: scan git repository and detect unvetted binary files

The only binary-looking files that are accepted in the git repository
need to match the checksums in the sha256sum file
".github/scripts/binarycheck.sums".

This is done to make sure that no one has planted any hidden (encrypted)
potentially dangerous payload in the tree.

Closes #14333

15 months agoGHA/windows: drop FTP tests
Viktor Szakats [Wed, 31 Jul 2024 19:53:15 +0000 (21:53 +0200)] 
GHA/windows: drop FTP tests

Try reducing hangs.

Closes #14330

15 months agoGHA/windows: remove vcpkg bin path in MSVC jobs
Tal Regev [Wed, 31 Jul 2024 18:49:51 +0000 (21:49 +0300)] 
GHA/windows: remove vcpkg bin path in MSVC jobs

- the path is wrong, because we compile on debug, and we are using
  the release bin path.
- the path is not needed, cmake curl copy the needed dlls to the
  compilation cmake folder where the curl exe is found.

Closes #14329

15 months agoGHA/windows: timeout earlier with hung tests
Viktor Szakats [Fri, 19 Jul 2024 20:42:42 +0000 (22:42 +0200)] 
GHA/windows: timeout earlier with hung tests

Finishing tests takes on average 10 or less minutes depending on
platform. Reduce job step timeouts to reflect that. It helps
concluding hung/failed tests earlier, which allows to retry them
earlier.

This makes it more difficult to tell from a job if it hung or not,
because we lose the long runtime as a telltale sign. Let's see how it
works out and adjust as necessary.

Also fix a comment while here.

Closes #14236

15 months agoINSTALL.md: MultiSSL and QUIC are mutually exclusive
Daniel Stenberg [Wed, 31 Jul 2024 16:40:44 +0000 (18:40 +0200)] 
INSTALL.md: MultiSSL and QUIC are mutually exclusive

Reported-by: Matt Jolly
Fixes #14308
Closes #14328

15 months agolib: convert some debugf()s into traces
Stefan Eissing [Wed, 31 Jul 2024 09:36:08 +0000 (11:36 +0200)] 
lib: convert some debugf()s into traces

Use CURL_TRC_CF() for some useful tracing information instead of
DEBUGF().

Closes #14322

15 months agocmake: distcheck for files in CMake subdir
Viktor Szakats [Wed, 31 Jul 2024 09:53:31 +0000 (11:53 +0200)] 
cmake: distcheck for files in CMake subdir

- add CMake option to verify if the `CMake/*.cmake`, `CMake/*.in` files
  are listed as distributable in autotools' `EXTRA_DIST`. The check can
  be enabled with `-DENABLE_DIST_TEST=ON` CMake option.

- add CI job to that effect.

Ref: #14320
Closes #14323

15 months agolibcurl.pc: add `Cflags.private`
Viktor Szakats [Wed, 31 Jul 2024 08:49:38 +0000 (10:49 +0200)] 
libcurl.pc: add `Cflags.private`

Ref: https://manpages.debian.org/bookworm/pkgconf/pc.5.en.html#PROPERTY_KEYWORDS
Ref: https://www.msys2.org/docs/pkgconfig/#cflagsprivate-static-libraries

Closes #14321

15 months agodist: add missing `FindNettle.cmake`
Viktor Szakats [Wed, 31 Jul 2024 08:02:13 +0000 (10:02 +0200)] 
dist: add missing `FindNettle.cmake`

Follow-up to 669ce42275635dc1f881dab3dfc9a55c9ab49b21 #14285
Reported-by: Christoph Reiter
Bug: https://github.com/curl/curl/pull/14285#issuecomment-2259880050
Closes #14320

15 months agotests: provide docs a as curldown, not nroff
Daniel Stenberg [Wed, 31 Jul 2024 10:56:33 +0000 (12:56 +0200)] 
tests: provide docs a as curldown, not nroff

As runtests.md and testcurl.md. Very few people actually need these as
manpages anyway.

With this, we have no more nroff formatted documents in git.

Closes #14324

15 months agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 31 Jul 2024 08:48:48 +0000 (10:48 +0200)] 
RELEASE-NOTES: synced

Bump to 8.10.0

15 months agorustls: make all tests pass
Joe Birr-Pixton [Tue, 30 Jul 2024 13:23:50 +0000 (14:23 +0100)] 
rustls: make all tests pass

- supports IP addresses in certs since 0.21
- Remove workaround, and re-enable tests

Closes #14317

15 months agoGHA/windows: enable MulitSSL in an MSVC job
Tal Regev [Wed, 31 Jul 2024 05:18:18 +0000 (08:18 +0300)] 
GHA/windows: enable MulitSSL in an MSVC job

Ref: 98da147b18fa4963efb425df8400ca40e7526646 #14305
Closes #14276

15 months agoRELEASE-NOTES: synced curl-8_9_1
Daniel Stenberg [Wed, 31 Jul 2024 06:50:04 +0000 (08:50 +0200)] 
RELEASE-NOTES: synced

15 months agoTHANKS: add names from the 8.9.1 release notes
Daniel Stenberg [Wed, 31 Jul 2024 06:50:04 +0000 (08:50 +0200)] 
THANKS: add names from the 8.9.1 release notes

Also remove duplicates

15 months agox509asn1: unittests and fixes for gtime2str
Stefan Eissing [Tue, 30 Jul 2024 14:40:48 +0000 (16:40 +0200)] 
x509asn1: unittests and fixes for gtime2str

Fix issues in GTime2str() and add unit test cases to verify correct
behaviour.

Follow-up to 3c914bc6801

Closes #14316

15 months agovtls: avoid forward declaration in MultiSSL builds
Tal Regev [Tue, 30 Jul 2024 03:07:50 +0000 (06:07 +0300)] 
vtls: avoid forward declaration in MultiSSL builds

The MSVC compiler cannot have forward declaration with const and static
variable, causing this error:
```
curl\lib\vtls\vtls.c(417,44): warning C4132: 'Curl_ssl_multi': const object should be initialized
```

Ref: #14276
Closes #14305

15 months agotidy-up: URL updates (one more)
Viktor Szakats [Tue, 30 Jul 2024 19:35:59 +0000 (21:35 +0200)] 
tidy-up: URL updates (one more)

Follow-up to 767d5811b5c783b42cea999dd42ecf0453085d17 #14318

15 months agotidy-up: URL updates
Viktor Szakats [Tue, 30 Jul 2024 16:05:02 +0000 (18:05 +0200)] 
tidy-up: URL updates

Closes #14318

15 months agocmake: drop `if(PKG_CONFIG_FOUND)` guard for `pkg_check_modules()`
Viktor Szakats [Tue, 30 Jul 2024 08:52:32 +0000 (10:52 +0200)] 
cmake: drop `if(PKG_CONFIG_FOUND)` guard for `pkg_check_modules()`

The oldest cmake supported by curl is v3.7.0, which already has such
guard (using `PKG_CONFIG_EXECUTABLE`) inside `pkg_check_modules()`. The
advantage of leaving that guard to CMake is that it will define/reset
all output variables, while the manual guard doesn't do this and also
leaves for example `NETTLE_FOUND` undefined.

Delete the single use of this guard from the recently added `nettle`
detection, where I included it by accident. Then possibly re-introduce
it universally if we find it useful after more evaluation.

Follow-up to 669ce42275635dc1f881dab3dfc9a55c9ab49b21 #14285
Closes #14309

15 months agomailmap: dedupe an author showing up twice in shortlog -s
Daniel Stenberg [Tue, 30 Jul 2024 12:25:30 +0000 (14:25 +0200)] 
mailmap: dedupe an author showing up twice in shortlog -s

15 months agomisc: cleanup after removing years from copyright
Ivan Kuchin [Tue, 30 Jul 2024 10:39:50 +0000 (12:39 +0200)] 
misc: cleanup after removing years from copyright

- remove leftover copyright years from few test files
- fix email in copyright lines
- consistent format of copyright lines

Closes #14312

15 months agowolfssl: avoid calling get_cached_x509_store if store is uncachable
Alex Snast [Tue, 30 Jul 2024 05:12:26 +0000 (08:12 +0300)] 
wolfssl: avoid calling get_cached_x509_store if store is uncachable

There's no need for get_cached_x509_store call if the return value won't
be used for caching anyway.

Closes #14306

15 months agocontrithanks.sh: use -F with -v to match lines as strings
Daniel Stenberg [Tue, 30 Jul 2024 10:14:48 +0000 (12:14 +0200)] 
contrithanks.sh: use -F with -v to match lines as strings

Makes names involving [brackets] work.

15 months agoGHA/non-native: bump FreeBSD/arm64 python modules
Viktor Szakats [Tue, 30 Jul 2024 09:52:27 +0000 (11:52 +0200)] 
GHA/non-native: bump FreeBSD/arm64 python modules

FreeBSD seems to upgrade their Python separately for arm64
and Intel. Today, arm64 caught up with the Intel packages.
Update our CI to reflect it.

Closes #14310

15 months agoGHA: bump github/codeql-action and msys2/setup-msys2
dependabot[bot] [Mon, 29 Jul 2024 14:45:58 +0000 (14:45 +0000)] 
GHA: bump github/codeql-action and msys2/setup-msys2

- bump github/codeql-action from 3.25.13 to 3.25.15

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.13 to 3.25.15.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2d790406f505036ef40ecba973cc774a50395aac...afb54ba388a7dca6ecae48f608c4ff05ff4cc77a)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Closes #14300

- bump msys2/setup-msys2 from 2.23.0 to 2.24.0

Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.23.0 to 2.24.0.
- [Release notes](https://github.com/msys2/setup-msys2/releases)
- [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/msys2/setup-msys2/compare/d0e80f58dffbc64f6a3a1f43527d469b4fc7b6c8...5df0ca6cbf14efcd08f8d5bd5e049a3cc8e07fd2)

---
updated-dependencies:
- dependency-name: msys2/setup-msys2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Closes #14301

15 months agox509asn1: clean up GTime2str
Daniel Stenberg [Tue, 30 Jul 2024 08:05:17 +0000 (10:05 +0200)] 
x509asn1: clean up GTime2str

Co-authored-by: Stefan Eissing
Reported-by: Dov Murik
Closes #14307

15 months agotool_operate: more defensive socket code
Daniel Stenberg [Mon, 29 Jul 2024 17:49:32 +0000 (19:49 +0200)] 
tool_operate: more defensive socket code

- use 'struct sockaddr' to getsockname() and its sa_family member

- use 'curl_socklen_t' instead of 'socklen_t'

- check for AF_INET6 to exist instead assuming it does

Should be generally more portable.

Reported-by: Harry Sintonen
Closes #14304

15 months agoconfigure: limit `__builtin_available` test to Darwin
Viktor Szakats [Sun, 14 Jul 2024 19:49:35 +0000 (21:49 +0200)] 
configure: limit `__builtin_available` test to Darwin

This feature test always fails on non-Apple systems. (For Apple targets
it's supported by llvm and Apple clang.)

Syncs behaviour with CMake.

Follow-up to cfd6f43d6ca7e57670b422bab7bbf10221a2cf3e #14127
Cherry-picked from #14097
Closes #14196

15 months agoRELEASE-NOTES: synced
Daniel Stenberg [Mon, 29 Jul 2024 19:24:32 +0000 (21:24 +0200)] 
RELEASE-NOTES: synced

15 months agoCURLOPT_SSL_CTX_FUNCTION.md: mention CA caching
Daniel Stenberg [Mon, 29 Jul 2024 16:58:40 +0000 (18:58 +0200)] 
CURLOPT_SSL_CTX_FUNCTION.md: mention CA caching

and add a few more see-also

Closes #14302

15 months agocmake: detect `libssh` via `pkg-config`
Viktor Szakats [Tue, 16 Jul 2024 10:48:13 +0000 (12:48 +0200)] 
cmake: detect `libssh` via `pkg-config`

Also:
- fix broken libssh `pkg-config` behaviour on old Linux.
  (when found, `LIBSSH_LINK_LIBRARIES` remains undefined.)

- delete manual libssh config from Old Linux CI job,
  it's no longer necessary.

Closes #14199

15 months agoGHA/non-native: improve, migrate x86_64 FreeBSD with tests from Cirrus CI
Viktor Szakats [Sat, 20 Jul 2024 11:31:45 +0000 (13:31 +0200)] 
GHA/non-native: improve, migrate x86_64 FreeBSD with tests from Cirrus CI

- run tests via `make test-ci` instead of `make check` with autotools.
- add `x86_64` job for FreeBSD, with tests.
  It matches the existing Cirrus CI job, with these differences:
  - finishes 3x faster (thanks to parallel tests enabled).
  - librtmp is not enabled because it's slated for removal by FreeBSD.
    (already past the removal deadline, thought the package still
    installs.)
  - DICT and TELNET servers fail to start. Couldn't figure out why.
    It means skipping test 1450 and 1452.
  - it runs more tests, e.g. websockets and ip6-localhost.
  - no `pkg update -f`.
  - it misses the `CRYPTOGRAPHY_DONT_BUILD_RUST=1`, `pkg delete curl`,
    `chmod 777`, `sudo -u nobody` and `sysctl net.inet.tcp.blackhole`
    tricks. The latter is the default in these runners, the others did
    not affect results.
- set `-j0` for tests in the NetBSD job. Flaky otherwise.

Closes #14244

15 months agocmake: detect `nettle` when building with GnuTLS
Viktor Szakats [Sat, 27 Jul 2024 09:47:56 +0000 (11:47 +0200)] 
cmake: detect `nettle` when building with GnuTLS

`nettle` is a direct dependency of curl, when building with GnuTLS.
Add a new `Find` module to detect it.

Also:
- GHA/macos: drop `nettle` hack no longer necessary.
- add `nettle` to `libcurl.pc`.
- also add `nettle` to `libcurl.pc` in autotools builds.

Follow-up to 781242ffa44a9f9b95b6da5ac5a1bf6372ec6257 #11967
Closes #14285

15 months agomacos: fix Apple SDK bug workaround for non-macOS targets
Viktor Szakats [Thu, 25 Jul 2024 22:10:21 +0000 (00:10 +0200)] 
macos: fix Apple SDK bug workaround for non-macOS targets

Turns out that MAC != OSX, despite what these names otherwise mean and
what's suggested by source code comments. "MAC" in fact means Darwin
(aka Apple), not macOS. "OSX" means macOS.

GitHub bumped the macos-14 runner default to Xcode 15.4, hitting the
llvm@15 incompatibility bug by default. Meaning the previous workaround
for the SDK bug is necessary.

This patch extend the workaround to not apply to mobile OS variants.

Follow-up to ff784af461175584c73e7e2b65af00b1a5a6f67f #14159
Reported-by: Sergey
Confirmed-by: Marcel Raad
Fixes #14269
Closes #14275

15 months agowolfssl: CA store share fix
Stefan Eissing [Fri, 26 Jul 2024 13:07:52 +0000 (15:07 +0200)] 
wolfssl: CA store share fix

When sharing the x509 store in wolfSSL, always use an explicitly
constructed one, as the SSLCTX might have "only" an internal one which
is not obeying reference count lifetimes.

Fixes #14278
Reported-by: Alex Snast
Closes #14279

15 months agocurl: support __ss_family use on NonStop platforms
Randall S. Becker [Thu, 25 Jul 2024 21:18:46 +0000 (22:18 +0100)] 
curl: support __ss_family use on NonStop platforms

The definition of sockaddr_storage incorrectly specifies the ss_family
field as __ss_family. This fix conditionally allows builds to succeed on
all NonStop platforms.

Signed-off-by: Randall S. Becker <randall.becker@nexbridge.ca>
Closes #14273

15 months agotest993: list 1000 messages over POP3
Daniel Stenberg [Mon, 29 Jul 2024 08:56:48 +0000 (10:56 +0200)] 
test993: list 1000 messages over POP3

Attempt to verify issue #14201

Closes #14297

15 months agoconnect: fix connection shutdown for event based processing
Stefan Eissing [Mon, 29 Jul 2024 08:23:20 +0000 (10:23 +0200)] 
connect: fix connection shutdown for event based processing

connections being shutdown would register sockets for events, but then
never remove these sockets again. Nor would the shutdown effectively
been performed.

- If a socket event involves a transfer, check if that is the
  connection cache internal handle and run its multi_perform()
  instead (the internal handle is used for all shutdowns).
- When a timer triggers for a transfer, check also if it is
  about the connection cache internal handle.
- During processing shutdowns in the connection cache, assess
  the shutdown timeouts. Register a Curl_expire() of the lowest
  value for the cache's internal handle.

Reported-by: Gordon Parke
Fixes #14280
Closes #14296

15 months agotests: provide FTP directory contents in the test file
Daniel Stenberg [Mon, 29 Jul 2024 08:17:08 +0000 (10:17 +0200)] 
tests: provide FTP directory contents in the test file

Instead of providing a fixed single synthetic response in the test
server itself. To allow us to better use *different* directory listings
in different test cases. In this change, most listings remain the same
as before.

The wildcard match tests still use synthetic responses but we should fix
that as well.

Updated numerous test cases to use this.

Closes #14295

15 months agoftpserver.pl: make POP3 LIST serve content from the test file
Daniel Stenberg [Mon, 29 Jul 2024 07:11:47 +0000 (09:11 +0200)] 
ftpserver.pl: make POP3 LIST serve content from the test file

instead of a fixed list in the test server.

Adjust test 853 accordingly.

Closes #14293

15 months agoTODO: thread-safe sharing
Daniel Stenberg [Sun, 28 Jul 2024 14:06:47 +0000 (16:06 +0200)] 
TODO: thread-safe sharing

15 months agoCURLSHOPT_SHARE.md: mention sessions/cookies as not thread-safe
Daniel Stenberg [Sun, 28 Jul 2024 14:03:16 +0000 (16:03 +0200)] 
CURLSHOPT_SHARE.md: mention sessions/cookies as not thread-safe

Sharing of these between threads are apparently also not done safely.

Ref: #14290
Reported-by: Aki Sakurai
Closes #14292

15 months agoRELEASE-NOTES: synced
Daniel Stenberg [Sun, 28 Jul 2024 14:11:29 +0000 (16:11 +0200)] 
RELEASE-NOTES: synced

15 months agoos400: build cli manual.
Patrick Monnerat [Sat, 27 Jul 2024 22:36:09 +0000 (00:36 +0200)] 
os400: build cli manual.

Use PASE perl to run manual generation scripts.

As PASE perl is not aware of all possible input file encoding, convert
all files to UTF-8 upon build start (this might be lengthy).

OS/400 terminal emulation may only offer 76 columns, thus a new -c
parameter has been added to the managen program, defining the allowed
width.

If perl is not available, omit generation and disable online manual.

Closes #14289

15 months agoexample/multi-uv: remove the use of globals
Daniel Stenberg [Sat, 27 Jul 2024 16:11:55 +0000 (18:11 +0200)] 
example/multi-uv: remove the use of globals

- shows how to pass on local variables (better)

- start the transfers nicer (with curl_multi_socket_action)

- consistent and helpful function naming - to better show what functions
  and callbacks that are used for what

- build warning-free with gcc -W -Wall -pedantic

Closes #14287

15 months agoruntests: fold timing details with GHA, sync `-r` tflags
Viktor Szakats [Sat, 20 Jul 2024 16:20:06 +0000 (18:20 +0200)] 
runtests: fold timing details with GHA, sync `-r` tflags

- move timing details into a foldable group when run in GitHub Actions.
  Spec:
  https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#grouping-log-lines

- enable `-r` (run time stats) option in autotools' `test-ci` target,
  syncing it with cmake.

Closes #14284

15 months agoGHA/windows: increase timeout for vcpkg build step [ci skip]
Viktor Szakats [Sat, 27 Jul 2024 17:08:33 +0000 (19:08 +0200)] 
GHA/windows: increase timeout for vcpkg build step [ci skip]

Examples:
https://github.com/curl/curl/actions/runs/10102112253/job/27937088909?pr=14274
https://github.com/curl/curl/actions/runs/10102112253/job/27937082353?pr=14274
https://github.com/curl/curl/actions/runs/10102112253/job/27937088478?pr=14274

15 months agoGHA/macos: update comment about default Xcode on macos-14 runner [ci skip]
Viktor Szakats [Sat, 27 Jul 2024 08:17:20 +0000 (10:17 +0200)] 
GHA/macos: update comment about default Xcode on macos-14 runner [ci skip]

New default since:
https://github.com/actions/runner-images/blob/releases/macos-14-arm64/20240722/images/macos/macos-14-arm64-Readme.md

15 months agoos400: workaround an IBM ASCII run-time library bug
Patrick Monnerat [Fri, 26 Jul 2024 15:15:27 +0000 (17:15 +0200)] 
os400: workaround an IBM ASCII run-time library bug

IBM-provided ASCII function puts() does not output an expected trailing
newline: emulate the correct behavior using other functions.

Closes #14281

15 months agotransfer: speed limiting fix for 32bit systems
Stefan Eissing [Fri, 26 Jul 2024 08:38:45 +0000 (10:38 +0200)] 
transfer: speed limiting fix for 32bit systems

When checking if a speed limit on receives applies, compare the receive
sizes using the large int type to prevent an overflow on systems where
size_t is 32bit.

Fixes #14272
Reported-by: Mamoru Tasaka
Closes #14277

15 months agowolfSSL: allow wolfSSL's implementation of kyber to be used
Anthony Hu [Wed, 24 Jul 2024 22:23:09 +0000 (18:23 -0400)] 
wolfSSL: allow wolfSSL's implementation of kyber to be used

Closes #14268

15 months agolib: survive some NULL input args
Daniel Stenberg [Tue, 23 Jul 2024 09:06:56 +0000 (11:06 +0200)] 
lib: survive some NULL input args

The input string pointer to:

curl_escape
curl_easy_escape
curl_unescape
curl_easy_unescape

The running_handles pointer to:

curl_multi_perform
curl_multi_socket_action
curl_multi_socket_all
curl_multi_socket

Reported-by: icy17 on github
Fixes #14247
Closes #14262

15 months agoRELEASE-PROCEDURE.md: restore next release date
Daniel Stenberg [Wed, 24 Jul 2024 07:10:35 +0000 (09:10 +0200)] 
RELEASE-PROCEDURE.md: restore next release date

Pointed-out-by: extrimexxx on github
Bug: https://github.com/curl/curl/pull/14267#issuecomment-2247062235

15 months agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 24 Jul 2024 06:48:18 +0000 (08:48 +0200)] 
RELEASE-NOTES: synced

bumped to 8.9.1

15 months agoRELEASE-PROCEDURE.md: remove the initial build step
Daniel Stenberg [Tue, 23 Jul 2024 21:40:13 +0000 (23:40 +0200)] 
RELEASE-PROCEDURE.md: remove the initial build step

Because it is no longer needed to be done by a person as the dmaketgz
script does it by itself.

Removed two past release dates, added two new future ones

Closes #14267

15 months agoRELEASE-NOTES: synced curl-8_9_0
Daniel Stenberg [Sat, 20 Jul 2024 22:02:38 +0000 (00:02 +0200)] 
RELEASE-NOTES: synced

15 months agoTHANKS: updates from the 8.9.0 release
Daniel Stenberg [Tue, 23 Jul 2024 21:36:30 +0000 (23:36 +0200)] 
THANKS: updates from the 8.9.0 release

15 months agocurl_easy_escape.md: move historic details to HISTORY
Daniel Stenberg [Tue, 23 Jul 2024 09:03:15 +0000 (11:03 +0200)] 
curl_easy_escape.md: move historic details to HISTORY

Closes #14261

15 months agodocs/libcurl: add to cleanup docs that their inputs go invalid
Daniel Stenberg [Mon, 22 Jul 2024 17:04:12 +0000 (19:04 +0200)] 
docs/libcurl: add to cleanup docs that their inputs go invalid

Reported-by: icy17 on github
Fixes #14248
Closes #14258

15 months agoGHA: bump github/codeql-action from 3.25.11 to 3.25.13
dependabot[bot] [Mon, 22 Jul 2024 14:17:30 +0000 (14:17 +0000)] 
GHA: bump github/codeql-action from 3.25.11 to 3.25.13

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.11 to 3.25.13.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b611370bb5703a7efb587f9d136a52ea24c5c38c...2d790406f505036ef40ecba973cc774a50395aac)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Closes #14255

15 months agoconncache: connection shutdown, multi_socket handling
Stefan Eissing [Mon, 22 Jul 2024 15:04:30 +0000 (17:04 +0200)] 
conncache: connection shutdown, multi_socket handling

- implement the socket hash user/reader/writer processing also
  for connections that are being shut down by the connection cache.
- split out handling of current vs. last pollset socket event handling
  into a function available in other code parts
- add `shutdown_poll` pollset to `connectdata` struct so that changes
  in the pollset can be recorded during shutdown. (The internal handle
  cannot keep it since it might be used for many connections)

Reported-by: calvin2021y on github
Fixes #14252
Closes #14257

15 months agotool_cb_prg: output "flying saucers" with leading carriage return
Daniel Stenberg [Sat, 20 Jul 2024 21:21:16 +0000 (23:21 +0200)] 
tool_cb_prg: output "flying saucers" with leading carriage return

Because that is how the progress-bar is output, so when the progress-bar
has been shown at least once and the information is reset, like for a
redirect, there might be a moment where the size goes from known to
unknown and then the flying saucerts are shown after a brief display of
the progress-bar.

It could previously cause accidental character leftovers on the right
side of the bar when using a narrow display.

Reported-by: Chris Webb
Fixes #14213
Closes #14246

15 months agolib: Curl_posttransfer => multi_posttransfer
Daniel Stenberg [Fri, 19 Jul 2024 22:53:24 +0000 (00:53 +0200)] 
lib: Curl_posttransfer => multi_posttransfer

Moved from transfer.c to multi.c as it was only used within multi.c

Made a void, as it returned a fixed return code nothing checked.

Closes #14240

15 months agoCURLOPT_SSL_VERIFYHOST.md: refresh
Daniel Stenberg [Fri, 19 Jul 2024 23:11:13 +0000 (01:11 +0200)] 
CURLOPT_SSL_VERIFYHOST.md: refresh

Move mentions of old behavior to the HISTORY section to make it easier
to read about modern behavior.

Added a MATCHING section.

Closes #14241

15 months agomulti: do a final progress update on connect failure
Daniel Stenberg [Fri, 19 Jul 2024 22:44:27 +0000 (00:44 +0200)] 
multi: do a final progress update on connect failure

To fix timing metric etc

Co-authored-by: Justin Maggard
Fixes #14204
Closes #14239

15 months agomd4: fix compilation with OpenSSL 1.x with md4 disabled
Orgad Shaneh [Thu, 18 Jul 2024 04:41:51 +0000 (07:41 +0300)] 
md4: fix compilation with OpenSSL 1.x with md4 disabled

If OpenSSL 1.x is used, and it is configured with md4 disabled,
OPENSSL_NO_MD4 is defined in opensslconf.h, but this header was not
included before checking for this define.

Later in md4.c, openssl/md4.h is included, and it includes that header
indirectly, leading to inconsistency within md4.c.

Since the md4.h branch was taken, wincrypt.h (or others) is not
included, and later below the USE_WIN32_CRYPTO branch is taken, but the
types are not defined.

Closes #14218

15 months agoftp: remove redundant null pointer check in loop condition
martinevsky [Fri, 19 Jul 2024 13:46:25 +0000 (16:46 +0300)] 
ftp: remove redundant null pointer check in loop condition

Closes #14234

15 months agombedtls: check version before getting tls version
Justin Maggard [Thu, 18 Jul 2024 23:18:44 +0000 (16:18 -0700)] 
mbedtls: check version before getting tls version

mbedtls_ssl_get_version_number() was added in mbedtls 3.2.0. Check for
that version before using it.

Closes #14228

15 months agourlapi: remove unused definition of HOST_BAD
martinevsky [Fri, 19 Jul 2024 13:51:13 +0000 (16:51 +0300)] 
urlapi: remove unused definition of HOST_BAD

Closes #14235

15 months agocurldown: fixups
Daniel Stenberg [Thu, 18 Jul 2024 23:06:06 +0000 (01:06 +0200)] 
curldown: fixups

- make DEFAULT sections less repetitive

- make historic mentions use HISTORY

- generate the protocols section on `# %PROTOCOLS%` instead of guessing
  where to put it

- generate the availability section on `# %AVAILABILITY%` instead of
  guessing where to put it

- make the protocols section more verbose

Closes #14227

15 months agoGHA/windows: enable libssh in !ssl MSVC job 14233/head
Tal Regev [Fri, 19 Jul 2024 09:17:55 +0000 (12:17 +0300)] 
GHA/windows: enable libssh in !ssl MSVC job

Closes #14232

15 months agoGHA/windows: enable libidn2 in !ssl MSVC job
Tal Regev [Tue, 16 Jul 2024 17:10:26 +0000 (20:10 +0300)] 
GHA/windows: enable libidn2 in !ssl MSVC job

Closes #14200

15 months agoGHA/macos: improve, fix gcc/llvm, add new test matrix
Viktor Szakats [Wed, 17 Jul 2024 23:09:04 +0000 (01:09 +0200)] 
GHA/macos: improve, fix gcc/llvm, add new test matrix

This PR began as an attempt to drop GCC support, after repeated reports
on fallouts when trying to use it on macOS.

Then it transformed into a 3-week project turning up the issues causing
the fallouts, ending up including llvm and all available Xcode / macOS
SDK, macOS runner image, build tools and compiler vendors and versions.
Accumulating 400 sub-commits.

I developed and tested all fixes under this PR, then merged them as
separate patches.

This PR retained CI jobs updates, extensively reworking and extending
them: [1]

At first it seemed GCC and the Apple SDK is "naturally" growing more
incompatible, as Apple added further non-standard features to their
headers. This is partly true, but reality is more complicated.

Besides some issues local to curl, there were bugs in Apple SDK
headers, Homebrew GCC builds, feature missing in the old llvm version
pre-installed on GitHub CI runner images, and subtle incompatibilities
between GCC and llvm/clang when handling language extensions.

Resulting compiler errors seldom pointed to a useful direction, and
internet search was silent about these issues too. Thus, I had to peel
them off layer by layer, using trial and error, and by recognizing
patterns of failures accross 150-200 builds combinations. Exposing
configure logs, and curl_config.h in the CI logs helped too.

1. GCC header compatibility layer ("hack" as GCC calls it)

The toughest issue is GCC's built-in compatibility layer:
  https://github.com/gcc-mirror/gcc/tree/master/fixincludes

This patch layer is further patched by a "Darwin compatibility" project
applied on top by Homebrew GCC via:
  https://github.com/iains/gcc-12-branch
  https://github.com/iains/gcc-13-branch
  https://github.com/iains/gcc-14-branch

The hack layer is designed in a way that breaks more builds than it
fixes, esp. in context of GHA runners. The idea is to build GCC
specifically for the SDK for the target macOS version. The problem with
this approach is that the Xcode + SDK installed on the local/CI machine
often does not match with the SDK used on while building GCC on
Homebrew's build machines. In these cases the GCC compatibility layer
turns into an "uncompatibility" layer and consistently breaks builds.
curl cannot offer a fix for this, because the solution (I found) is to
patch the toolchain on the local machine. I implemented this for our CI
builds and curl-for-win. In other case the user must do this patching
manually, or choose a compatible GCC + Xcode/SDK combination.

An upstream fix doesn't seem trivial either, because the issue is
ingrained in the compatibility layer's design. Offering an `-fapplesdk`
(or recognizing `-target`) option and/or fixing them within the compiler
would seem like a more robust option, and also how mainline llvm solves
this.

Here's a table summarizing the GCC + SDK combinations and curl build
failures: [2]

More info: https://github.com/curl/curl/issues/10356#issuecomment-2222734103

db135f8d7207b20d531e7e2100a49f3e16bdcfab #14119 macos: add workaround for gcc, non-c-ares, IPv6, compile error
Ref: https://github.com/curl/curl-for-win/commit/e2db3c475f5981352e6e6a79854a255805b28deb
Ref: https://github.com/curl/curl-for-win/commit/f5c58d7fef78e972be33ca2355dcb42ba56622a6

2. Homebrew GCC's `availability` extension

A recent minor Homebrew GCC upgrade caused major breakage. The "Darwin
compatibility" patch applied to GCC implemented the `availability`
compiler attribute in GCC. Apple SDK detected this and enabled using
them, but as it turns out GCC accepts compiler attributes with slightly
different rules than llvm/clang, and how the Apple SDK uses them,
breaking builds.

Affected Homebrew GCC versions are: 12.4.0, 13.3.0 and 14.1.0.

Possibly tracked here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108796
More info: https://github.com/llvm/llvm-project/issues/81767

Commit implementing the `availability` macro:
gcc-12: https://github.com/iains/gcc-12-branch/commit/fd5530b7cb0012bf4faeddd45e13054a1dfa6783
gcc-13: https://github.com/iains/gcc-13-branch/commit/cb7e4eca68cfc4763474e2eb0935a844458842a8
gcc-14: https://github.com/iains/gcc-14-branch/commit/ff62a108865a6403f5017380d7018250c1d3306f

That applied to Homebrew GCC (12.4.0):
https://github.com/Homebrew/homebrew-core/commit/b904223d9893f62bec2a8f7483bf5992747fc6c7#diff-89dd0b4176eca7fcc24b591943509bf8a8d6ea904d71e5dfcd6b78fed62fc574R44-R48

Ref: #13700
More info: https://github.com/curl/curl/pull/14091#issuecomment-2222703468

e91fcbac7d86292858718a0bfebad57978761af4 #14155 macos: undo `availability` macro enabled by Homebrew gcc

3. Proprietary Apple SDK macros

Apple SDK expects certain macros predefined by the compiler. Missing
them may causes odd issues. Mainline llvm is keeping up with Apple
clang, but it needs a fresh version, while the one installed on GitHub
runners is old (v15). I patched these in `lib/curl_setup.h`.

baa3270846b2a7307cbd0dd5c02c4e5f00e388dd #14134 build: fix llvm 16 or older + Xcode 15 or newer, and gcc

4. Apple SDK header bug

Without certain predefined macros, SDK headers can take a codepath where
it mis-defines its own `TARGET_OS_OSX` macro, which make it break its
own headers later. I patched it in `lib/curl_setup.h`.

ff784af461175584c73e7e2b65af00b1a5a6f67f #14159 build: fix llvm 17 and older + macOS SDK 14.4 and newer

5. `TargetConditionals.h` requires `sys/types.h`

Fixed in curl. It caused feature-detection failurs with autotools, and
could break builds in certain configurations.

e1f6192939c9c5ab2310b60bedf4c07d635193f6 #14130 configure: fix `SystemConfiguration` detection

6. Differences between autotools and CMake compiler options

Fixed it by syncing compiler warning options.

59cadacfcc1d39472245979cdbd614c7a9af6f0d #14128 build: sync warning options between autotools, cmake & compilers

7. Differences between autotools and CMake dependency detection

Fixed it by improving detection of libidn2, with some more fixes
pending for the next feature window.

f43adc2c4978f7f82a359e89186e58a31d17b0ad #14137 cmake: detect `libidn2` also via `pkg-config`
Ref: #14136 cmake: detect `nghttp2` via `pkg-config`, enable by default

8. libidn2 detection bug with CMake

Fixed the root cause and also the trigger in the CI config.

764fbabf6ed4c1d36c0ab2033ac8df52d9923cd7 #14175 cmake: fix builds with detected libidn2 lib but undetected header

9. Suppressed compiler warnings inside Apple-specific curl code

Fixed these warnings, which allowed to stop silencing them.

b05dc7eb3592305de9fa85640767f3dd2a8d4c93 #14122 sectransp: fix `HAVE_BUILTIN_AVAILABLE` checks to not emit warnings
5fa534b0dacdc120aaab0766047e0ecac37be4b3 #14162 sectransp: fix clang compiler warnings, stop silencing them

10. CMake mis-detecting a CA bundle path on macOS

d2ef6255f4a040397d2f40ab7cbf65a203201cd9 #14182 cmake: sync CA bundle/path detection with autotools

11. Failure to build tests with LibreSSL or wolfSSL with CMake

Fixed by dropping unnecessary includes, makign test builds dependent
on dependency headers.

3765d75ce47b66289f946382b649d0e99389dc77 #14172 cmake: fix building `unit1600` due to missing `ssl/openssl.h`

12. curl tests with CMake

curl's CMake was missing bits for running the C preprocessor accurately.
It made tests 1119 and 1167 fail. I implemented the missing bits.

efc2c5184d008fe2e5910fd03263e1ab0331d4e6 #14124 tests: include current directory when running test Perl commands
c09db8b51b88ee6ad55bd637dcb4b47678e30906 #14129 cmake: create `configurehelp.pm` like autotools does
67cc1e3400b77536a3ca529c986247e1ef985e6e #14125 test1119: adapt for `.md` input

13. GCC missing `__builtin_available()` support

curl source code assumes this is available to enable certain codepaths.
It's also intermixed with monotonic timer support.

14. Monotonic timer support with GCC

Detected by GCC, while it probably shouldn't be. llvm/clang detects it
depending on target OS version. I've been playing with this, but so far
without a conclusion or fix.

15. Runtime/test failures with GCC

I couldn't find the reason for most of this. A bunch of RTSP tests fail
with GCC. SecureTransport + HTTP/2 is failing a bunch of tests. With
OpenSSL it fails two of those. SecureTransport builds also fail one DoH
test.

16. Runtime/test failure in llvm/clang

AppleIDN support received a fix with two more remaining.

fd0250869f7837e4a48d7e6f54cc0801ad3820e8 #14179 #14176 IDN: fix ß with AppleIDN

17. Other issues found and fixed while working on this:

2c15aa5765900d4351e733671a1c8c3785beee1a        GHA/macos: delete misplaced `CFLAGS`, drop redundant CMake option
80fb7c0bef209735ab352bf4afa31193a7bc65f1 #14126 configure: limit `SystemConfiguration` test to non-c-ares, IPv6 builds
cfd6f43d6ca7e57670b422bab7bbf10221a2cf3e #14127 build: tidy up `__builtin_available` feature checks (Apple)
bae555359979016999a9425a2d489f219a78abdd #14174 runtests: show name and keywords for failed tests in summary
09cdf7e5315711dea4ce7dcf5d99a4d41e7f658b #14178 cmake: delete unused `HAVE_LIBSSH2`, `HAVE_LIBSOCKET` macros
d3595c74fab829f07ef44da1b7fc2f5668767020 #14186 configure: CA bundle/path detection fixes
58772b0e082eda333e0a5fc8fb0bc7f17a3cd99c #14187 runtests: set `SOURCE_DATE_EPOCH` to fix failing around midnight
18f1cd7a77c4beecfd977d43f55634eb593ac99e #14183 tests: sync feature names with `curl -V`
4c22d97be786ed801e050da6872dd3143d6d0a59 #14181 build: use `#error` instead of invalid syntax

Pending merges:

- #14185 runtests: fold test details for GitHub CI runs
- #14197 cmake: grab-bag of tidy-ups
- #14196 configure: limit `__builtin_available` test to Darwin

Summary:

In general GCC doesn't seem to be a good fit with curl and macOS for
now. These "lucky" combinations (GitHub Actions runner) will build out
of the box now: macos-14 + Xcode 15.0.1 + gcc-11, gcc-12, gcc-14. The
rest builds with the ugly workaround in place, but all this still leaves
some runtime issues.

More info and links in the commit messages and source code.

[1]: This PR:
- add info about target OS version requirements per feature, with OS
  names and release years.
- stop using `-Wno-deprecated-declarations` to suppress warnings.
- use `LDFLAGS=-w` to suppress 'object file was built for newer macOS
  version than being linked' warnings.
  (there were tens of thousands of them in some jobs)
- allow overriding Xcode version in all jobs.
- improve job names.
- abbreviate CMake as CM, autotools as AM for more compact job names.
- shorten job names by using `!` instead of `no-` and `non-`.
- bump parellel tests to 10 (from 5).
- drop using `--enable-maintainer-mode` `./configure` option.
- add gcc-12 no-ssl, autotools job with tests, ignore failing test
  results. (It's not yet clear why gcc-12 builds have different runtime
  results than clang/llvm ones.)
- add comments with OS names and release years next to version numbers,
  e.g. 10.15  # Catalina (2019)
- fix broken gcc-12 SecureTransport build.
- show compiler, Xcode, SDK, gcc hack SDK versions, Homebrew
  preinstalled packages and C compiler predefined macros for each job.
  Useful for debugging all the strange problems these builds might have.
- merge brew bundle and install steps.
- move step names to the top.
- dump configure log for both cmake and autotools also for successful
  builds. Useful for debugging.
- dump curl_config.h in short (sorted #defines) and full form.
- add support for the mainline llvm compiler.
- set sysroot for gcc and llvm.
- add timeout for cmake jobs.
- add new job matrix: combinations
  It supports building all possible compiler, runner image, Xcode/SDK
  combinations, with cmake and autotools, target OS versions and with or
  without SecureTransport. It's quick. GHA limits the maximum number of
  matrix jobs at 256.
  I used this as a test-rig to fix the macOS build fallouts with gcc and
  llvm.
  I settled with 16 jobs, trying to maximize fallout coverage.
- implement hack to make Homebrew gcc work with all available SDKs.
- add handy mini-table about Xcode / SDK versions, OS names, years for
  each GHA images, with the defaults.
- add tests for cmake jobs.
- make cmake config hack to link GnuTLS less intrusive.
- stop ignoring test 1452, seems fine now.
- fix to enable libpsl in autotools builds.
- enable libpsl in cmake builds.
- add an llvm job with tests (both autotools and cmake).
- delete similar macOS jobs from Circle CI. GHA is now arm64 too.

[2]: Homebrew GCC vs GHA runner images vs curl builds:
```
macOS      Xcode   gcc         gcc SDK hacks      Xcode SDK   SDK major Build Compile
           (*def)  (Homebrew)  (CommandLineTools)             versions        error
--------  -------- ----------  ------------------ ----------  --------- ----- ---------------------
macos-12   13.1    GCC 11.4.0  MacOSX12           MacOSX12.0
macos-12   13.2.1  GCC 11.4.0  MacOSX12           MacOSX12.1
macos-12   13.3.1  GCC 11.4.0  MacOSX12           MacOSX12.3
macos-12   13.4.1  GCC 11.4.0  MacOSX12           MacOSX12.3
macos-12   14.0.1  GCC 11.4.0  MacOSX12           MacOSX12.3
macos-12   14.1    GCC 11.4.0  MacOSX12           MacOSX13.0  MISMATCH  FAIL  /Applications/Xcode_14.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/os/object.h:275:1: error: expected ';' before 'extern'
macos-12  *14.2    GCC 11.4.0  MacOSX12           MacOSX13.1  MISMATCH  FAIL  /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/os/object.h:275:1: error: expected ';' before 'extern'
macos-13   14.1    GCC 11.4.0  MacOSX13           MacOSX13.0
macos-13   14.2    GCC 11.4.0  MacOSX13           MacOSX13.1
macos-13   14.3.1  GCC 11.4.0  MacOSX13           MacOSX13.3
macos-13  *15.0.1  GCC 11.4.0  MacOSX13           MacOSX14.0  MISMATCH  FAIL  /Applications/Xcode_15.0.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:103:1: error: unknown type name 'dispatch_queue_t'
macos-13   15.1    GCC 11.4.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Applications/Xcode_15.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:103:1: error: unknown type name 'dispatch_queue_t'
macos-13   15.2    GCC 11.4.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:103:1: error: unknown type name 'dispatch_queue_t'
macos-14   14.3.1  GCC 11.4.0  MacOSX14           MacOSX13.3  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-14  *15.0.1  GCC 11.4.0  MacOSX14           MacOSX14.0
macos-14   15.1    GCC 11.4.0  MacOSX14           MacOSX14.2
macos-14   15.2    GCC 11.4.0  MacOSX14           MacOSX14.2
macos-14   15.3    GCC 11.4.0  MacOSX14           MacOSX14.4
macos-14   15.4    GCC 11.4.0  MacOSX14           MacOSX14.5
macos-14   16.0    GCC 11.4.0  MacOSX14           MacOSX15.0  MISMATCH  FAIL  /opt/homebrew/Cellar/gcc@11/11.4.0/lib/gcc/11/gcc/aarch64-apple-darwin23/11/include-fixed/stdio.h:83:8: error: unknown type name 'FILE'
macos-12   13.1    GCC 12.4.0  MacOSX12           MacOSX12.0
macos-12   13.2.1  GCC 12.4.0  MacOSX12           MacOSX12.1
macos-12   13.3.1  GCC 12.4.0  MacOSX12           MacOSX12.3
macos-12   13.4.1  GCC 12.4.0  MacOSX12           MacOSX12.3
macos-12   14.0.1  GCC 12.4.0  MacOSX12           MacOSX12.3
macos-12   14.1    GCC 12.4.0  MacOSX12           MacOSX13.0  MISMATCH  FAIL  /Applications/Xcode_14.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/os/object.h:275:1: error: expected ';' before 'extern'
macos-12  *14.2    GCC 12.4.0  MacOSX12           MacOSX13.1  MISMATCH  FAIL  /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/os/object.h:275:1: error: expected ';' before 'extern'
macos-13   14.1    GCC 12.4.0  MacOSX13           MacOSX13.0
macos-13   14.2    GCC 12.4.0  MacOSX13           MacOSX13.1
macos-13   14.3.1  GCC 12.4.0  MacOSX13           MacOSX13.3
macos-13  *15.0.1  GCC 12.4.0  MacOSX13           MacOSX14.0  MISMATCH  FAIL  /Applications/Xcode_15.0.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:103:1: error: unknown type name 'dispatch_queue_t'
macos-13   15.1    GCC 12.4.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Applications/Xcode_15.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:103:1: error: unknown type name 'dispatch_queue_t'
macos-13   15.2    GCC 12.4.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:103:1: error: unknown type name 'dispatch_queue_t'
macos-14   14.3.1  GCC 12.4.0  MacOSX14           MacOSX13.3  MISMATCH
macos-14  *15.0.1  GCC 12.4.0  MacOSX14           MacOSX14.0
macos-14   15.1    GCC 12.4.0  MacOSX14           MacOSX14.2
macos-14   15.2    GCC 12.4.0  MacOSX14           MacOSX14.2
macos-14   15.3    GCC 12.4.0  MacOSX14           MacOSX14.4
macos-14   15.4    GCC 12.4.0  MacOSX14           MacOSX14.5
macos-14   16.0    GCC 12.4.0  MacOSX14           MacOSX15.0  MISMATCH  FAIL  /opt/homebrew/Cellar/gcc@12/12.4.0/lib/gcc/12/gcc/aarch64-apple-darwin23/12/include-fixed/stdio.h:83:8: error: unknown type name 'FILE'
macos-12   13.1    GCC 13.3.0  MacOSX12           MacOSX12.0
macos-12   13.2.1  GCC 13.3.0  MacOSX12           MacOSX12.1
macos-12   13.3.1  GCC 13.3.0  MacOSX12           MacOSX12.3
macos-12   13.4.1  GCC 13.3.0  MacOSX12           MacOSX12.3
macos-12   14.0.1  GCC 13.3.0  MacOSX12           MacOSX12.3
macos-12   14.1    GCC 13.3.0  MacOSX12           MacOSX13.0  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-12  *14.2    GCC 13.3.0  MacOSX12           MacOSX13.1  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-13   14.1    GCC 13.3.0  MacOSX13           MacOSX13.0
macos-13   14.2    GCC 13.3.0  MacOSX13           MacOSX13.1
macos-13   14.3.1  GCC 13.3.0  MacOSX13           MacOSX13.3
macos-13  *15.0.1  GCC 13.3.0  MacOSX13           MacOSX14.0  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-13   15.1    GCC 13.3.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-13   15.2    GCC 13.3.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-14   14.3.1  GCC 13.3.0  MacOSX14           MacOSX13.3  MISMATCH  FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-14  *15.0.1  GCC 13.3.0  MacOSX14           MacOSX14.0            FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-14   15.1    GCC 13.3.0  MacOSX14           MacOSX14.2            FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-14   15.2    GCC 13.3.0  MacOSX14           MacOSX14.2            FAIL  /Users/runner/work/curl/curl/bld/lib/curl_config.h:792:19: error: two or more data types in declaration specifiers
macos-14   15.3    GCC 13.3.0  MacOSX14           MacOSX14.4
macos-14   15.4    GCC 13.3.0  MacOSX14           MacOSX14.5
macos-14   16.0    GCC 13.3.0  MacOSX14           MacOSX15.0  MISMATCH  FAIL  /opt/homebrew/Cellar/gcc@13/13.3.0/lib/gcc/13/gcc/aarch64-apple-darwin23/13/include-fixed/stdio.h:83:8: error: unknown type name 'FILE'
macos-12   13.1    GCC 14.1.0  MacOSX12           MacOSX12.0
macos-12   13.2.1  GCC 14.1.0  MacOSX12           MacOSX12.1
macos-12   13.3.1  GCC 14.1.0  MacOSX12           MacOSX12.3
macos-12   13.4.1  GCC 14.1.0  MacOSX12           MacOSX12.3
macos-12   14.0.1  GCC 14.1.0  MacOSX12           MacOSX12.3
macos-12   14.1    GCC 14.1.0  MacOSX12           MacOSX13.0  MISMATCH  FAIL  /Applications/Xcode_14.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/os/object.h:275:1: error: expected ';' before 'extern'
macos-12  *14.2    GCC 14.1.0  MacOSX12           MacOSX13.1  MISMATCH  FAIL  /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/os/object.h:275:1: error: expected ';' before 'extern'
macos-13   14.1    GCC 14.1.0  MacOSX13           MacOSX13.0
macos-13   14.2    GCC 14.1.0  MacOSX13           MacOSX13.1
macos-13   14.3.1  GCC 14.1.0  MacOSX13           MacOSX13.3
macos-13  *15.0.1  GCC 14.1.0  MacOSX13           MacOSX14.0  MISMATCH  FAIL  /Applications/Xcode_15.0.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:70:1: error: type defaults to 'int' in declaration of 'DISPATCH_DECL_FACTORY_CLASS_SWIFT' [-Wimplicit-int]
macos-13   15.1    GCC 14.1.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Applications/Xcode_15.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:70:1: error: type defaults to 'int' in declaration of 'DISPATCH_DECL_FACTORY_CLASS_SWIFT' [-Wimplicit-int]
macos-13   15.2    GCC 14.1.0  MacOSX13           MacOSX14.2  MISMATCH  FAIL  /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/dispatch/queue.h:70:1: error: type defaults to 'int' in declaration of 'DISPATCH_DECL_FACTORY_CLASS_SWIFT' [-Wimplicit-int]
macos-14   14.3.1  GCC 14.1.0  MacOSX14           MacOSX13.3  MISMATCH
macos-14  *15.0.1  GCC 14.1.0  MacOSX14           MacOSX14.0
macos-14   15.1    GCC 14.1.0  MacOSX14           MacOSX14.2
macos-14   15.2    GCC 14.1.0  MacOSX14           MacOSX14.2
macos-14   15.3    GCC 14.1.0  MacOSX14           MacOSX14.4
macos-14   15.4    GCC 14.1.0  MacOSX14           MacOSX14.5
macos-14   16.0    GCC 14.1.0  MacOSX14           MacOSX15.0  MISMATCH  FAIL  /opt/homebrew/Cellar/gcc/14.1.0_1/lib/gcc/current/gcc/aarch64-apple-darwin23/14/include-fixed/stdio.h:83:8: error: unknown type name 'FILE'
```
Source: https://github.com/curl/curl/actions/runs/9883956647/job/27299564218

This commit fixes earlier commit
1e75edd372868048c9f805ac4ca6d2cb5a88ff5a, reverted in
41a7e0dcc9681afd91e066411bcee4f369c23366, where I cut the commit
message in half by accident. The patch itself is identical.

Closes #14097

15 months agoRevert "GHA/macos: improve, fix gcc/llvm, add new test matrix"
Viktor Szakats [Fri, 19 Jul 2024 10:33:41 +0000 (12:33 +0200)] 
Revert "GHA/macos: improve, fix gcc/llvm, add new test matrix"

This reverts commit 1e75edd372868048c9f805ac4ca6d2cb5a88ff5a.

Due to some parts of the commit message missing (my bad.)

15 months agoRevert "lib: send eos flag"
Daniel Stenberg [Thu, 18 Jul 2024 23:38:05 +0000 (01:38 +0200)] 
Revert "lib: send eos flag"

This reverts commit be93299f10ef0b2bf7fe5c82140120073831867a.

15 months agoGHA/windows: use default shell CI feature
Viktor Szakats [Tue, 16 Jul 2024 22:34:03 +0000 (00:34 +0200)] 
GHA/windows: use default shell CI feature

It makes repeating a line in each step unnecessary.

Closes #14206

15 months agoGHA/macos: improve, fix gcc/llvm, add new test matrix
Viktor Szakats [Wed, 17 Jul 2024 23:09:04 +0000 (01:09 +0200)] 
GHA/macos: improve, fix gcc/llvm, add new test matrix

This PR began as an attempt to drop GCC support, after repeated reports
on fallouts when trying to use it on macOS.

Then it transformed into a 3-week project turning up the issues causing
the fallouts, ending up including llvm and all available Xcode / macOS
SDK, macOS runner image, build tools and compiler vendors and versions.
Accumulating 400 sub-commits.

I developed and tested all fixes under this PR, then merged them as
separate patches.

This PR retained CI jobs updates, extensively reworking and extending
them: [1]

At first it seemed GCC and the Apple SDK is "naturally" growing more
incompatible, as Apple added further non-standard features to their
headers. This is partly true, but reality is more complicated.

Besides some issues local to curl, there were bugs in Apple SDK
headers, Homebrew GCC builds, feature missing in the old llvm version
pre-installed on GitHub CI runner images, and subtle incompatibilities
between GCC and llvm/clang when handling language extensions.

Resulting compiler errors seldom pointed to a useful direction, and
internet search was silent about these issues too. Thus, I had to peel
them off layer by layer, using trial and error, and by recognizing
patterns of failures accross 150-200 builds combinations. Exposing
configure logs, and curl_config.h in the CI logs helped too.

1. GCC header compatibility layer ("hack" as GCC calls it)

The toughest issue is GCC's built-in compatibility layer:
  https://github.com/gcc-mirror/gcc/tree/master/fixincludes

This patch layer is further patched by a "Darwin compatibility" project
applied on top by Homebrew GCC via:
  https://github.com/iains/gcc-12-branch
  https://github.com/iains/gcc-13-branch
  https://github.com/iains/gcc-14-branch

The hack layer is designed in a way that breaks more builds than it
fixes, esp. in context of GHA runners. The idea is to build GCC
specifically for the SDK for the target macOS version. The problem with
this approach is that the Xcode + SDK installed on the local/CI machine
often does not match with the SDK used on while building GCC on
Homebrew's build machines. In these cases the GCC compatibility layer
turns into an "uncompatibility" layer and consistently breaks builds.
curl cannot offer a fix for this, because the solution (I found) is to
patch the toolchain on the local machine. I implemented this for our CI
builds and curl-for-win. In other case the user must do this patching
manually, or choose a compatible GCC + Xcode/SDK combination.

An upstream fix doesn't seem trivial either, because the issue is
ingrained in the compatibility layer's design. Offering an `-fapplesdk`
(or recognizing `-target`) option and/or fixing them within the compiler
would seem like a more robust option, and also how mainline llvm solves
this.

Here's a table summarizing the GCC + SDK combinations and curl build
failures: [2]

More info: https://github.com/curl/curl/issues/10356#issuecomment-2222734103

db135f8d7207b20d531e7e2100a49f3e16bdcfab #14119 macos: add workaround for gcc, non-c-ares, IPv6, compile error
Ref: https://github.com/curl/curl-for-win/commit/e2db3c475f5981352e6e6a79854a255805b28deb
Ref: https://github.com/curl/curl-for-win/commit/f5c58d7fef78e972be33ca2355dcb42ba56622a6

2. Homebrew GCC's `availability` extension

A recent minor Homebrew GCC upgrade caused major breakage. The "Darwin
compatibility" patch applied to GCC implemented the `availability`
compiler attribute in GCC. Apple SDK detected this and enabled using
them, but as it turns out GCC accepts compiler attributes with slightly
different rules than llvm/clang, and how the Apple SDK uses them,
breaking builds.

Affected Homebrew GCC versions are: 12.4.0, 13.3.0 and 14.1.0.

Possibly tracked here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108796
More info: https://github.com/llvm/llvm-project/issues/81767

Commit implementing the `availability` macro:
gcc-12: https://github.com/iains/gcc-12-branch/commit/fd5530b7cb0012bf4faeddd45e13054a1dfa6783
gcc-13: https://github.com/iains/gcc-13-branch/commit/cb7e4eca68cfc4763474e2eb0935a844458842a8
gcc-14: https://github.com/iains/gcc-14-branch/commit/ff62a108865a6403f5017380d7018250c1d3306f

That applied to Homebrew GCC (12.4.0):
https://github.com/Homebrew/homebrew-core/commit/b904223d9893f62bec2a8f7483bf5992747fc6c7#diff-89dd0b4176eca7fcc24b591943509bf8a8d6ea904d71e5dfcd6b78fed62fc574R44-R48

Ref: #13700
More info: https://github.com/curl/curl/pull/14091#issuecomment-2222703468

e91fcbac7d86292858718a0bfebad57978761af4 #14155 macos: undo `availability` macro enabled by Homebrew gcc

3. Proprietary Apple SDK macros

Apple SDK expects certain macros predefined by the compiler. Missing
them may causes odd issues. Mainline llvm is keeping up with Apple
clang, but it needs a fresh version, while the one installed on GitHub
runners is old (v15). I patched these in `lib/curl_setup.h`.

baa3270846b2a7307cbd0dd5c02c4e5f00e388dd #14134 build: fix llvm 16 or older + Xcode 15 or newer, and gcc

4. Apple SDK header bug

Without certain predefined macros, SDK headers can take a codepath where
it mis-defines its own `TARGET_OS_OSX` macro, which make it break its
own headers later. I patched it in `lib/curl_setup.h`.

ff784af461175584c73e7e2b65af00b1a5a6f67f #14159 build: fix llvm 17 and older + macOS SDK 14.4 and newer

5. `TargetConditionals.h` requires `sys/types.h`

Fixed in curl. It caused feature-detection failurs with autotools, and
could break builds in certain configurations.

e1f6192939c9c5ab2310b60bedf4c07d635193f6 #14130 configure: fix `SystemConfiguration` detection

6. Differences between autotools and CMake compiler options

Fixed it by syncing compiler warning options.

59cadacfcc1d39472245979cdbd614c7a9af6f0d #14128 build: sync warning options between autotools, cmake & compilers

7. Differences between autotools and CMake dependency detection

Fixed it by improving detection of libidn2, with some more fixes
pending for the next feature window.

f43adc2c4978f7f82a359e89186e58a31d17b0ad #14137 cmake: detect `libidn2` also via `pkg-config`
Ref: #14136 cmake: detect `nghttp2` via `pkg-config`, enable by default

8. libidn2 detection bug with CMake

Fixed the root cause and also the trigger in the CI config.

764fbabf6ed4c1d36c0ab2033ac8df52d9923cd7 #14175 cmake: fix builds with detected libidn2 lib but undetected header

9. Suppressed compiler warnings inside Apple-specific curl code

Fixed these warnings, which allowed to stop silencing them.

b05dc7eb3592305de9fa85640767f3dd2a8d4c93 #14122 sectransp: fix `HAVE_BUILTIN_AVAILABLE` checks to not emit warnings
5fa534b0dacdc120aaab0766047e0ecac37be4b3 #14162 sectransp: fix clang compiler warnings, stop silencing them

10. CMake mis-detecting a CA bundle path on macOS

d2ef6255f4a040397d2f40ab7cbf65a203201cd9 #14182 cmake: sync CA bundle/path detection with autotools

11. Failure to build tests with LibreSSL or wolfSSL with CMake

Fixed by dropping unnecessary includes, makign test builds dependent
on dependency headers.

3765d75ce47b66289f946382b649d0e99389dc77 #14172 cmake: fix building `unit1600` due to missing `ssl/openssl.h`

12. curl tests with CMake

curl's CMake was missing bits for running the C preprocessor accurately.
It made tests 1119 and 1167 fail. I implemented the missing bits.

efc2c5184d008fe2e5910fd03263e1ab0331d4e6 #14124 tests: include current directory when running test Perl commands
c09db8b51b88ee6ad55bd637dcb4b47678e30906 #14129 cmake: create `configurehelp.pm` like autotools does
67cc1e3400b77536a3ca529c986247e1ef985e6e #14125 test1119: adapt for `.md` input

13. GCC missing `__builtin_available()` support

curl source code assumes this is available to enable certain codepaths.
It's also intermixed with monotonic timer support.

14. Monotonic timer support with GCC

Detected by GCC, while it probably shouldn't be. llvm/clang detects it
depending on target OS version. I've been playing with this, but so far
without a conclusion or fix.

15. Runtime/test failures with GCC

I couldn't find the reason for most of this. A bunch of RTSP tests fail
with GCC. SecureTransport + HTTP/2 is failing a bunch of tests. With
OpenSSL it fails two of those. SecureTransport builds also fail one DoH
test.

16. Runtime/test failure in llvm/clang

AppleIDN support received a fix with two more remaining.

fd0250869f7837e4a48d7e6f54cc0801ad3820e8 #14179 #14176 IDN: fix ß with AppleIDN

17. Other issues found and fixed while working on this:

2c15aa5765900d4351e733671a1c8c3785beee1a        GHA/macos: delete misplaced `CFLAGS`, drop redundant CMake option
80fb7c0bef209735ab352bf4afa31193a7bc65f1 #14126 configure: limit `SystemConfiguration` test to non-c-ares, IPv6 builds
cfd6f43d6ca7e57670b422bab7bbf10221a2cf3e #14127 build: tidy up `__builtin_available` feature checks (Apple)
bae555359979016999a9425a2d489f219a78abdd #14174 runtests: show name and keywords for failed tests in summary
09cdf7e5315711dea4ce7dcf5d99a4d41e7f658b #14178 cmake: delete unused `HAVE_LIBSSH2`, `HAVE_LIBSOCKET` macros
d3595c74fab829f07ef44da1b7fc2f5668767020 #14186 configure: CA bundle/path detection fixes
58772b0e082eda333e0a5fc8fb0bc7f17a3cd99c #14187 runtests: set `SOURCE_DATE_EPOCH` to fix failing around midnight
18f1cd7a77c4beecfd977d43f55634eb593ac99e #14183 tests: sync feature names with `curl -V`
4c22d97be786ed801e050da6872dd3143d6d0a59 #14181 build: use `#error` instead of invalid syntax

Pending merge:

15 months agoRELEASE-NOTES: synced
Daniel Stenberg [Thu, 18 Jul 2024 22:04:04 +0000 (00:04 +0200)] 
RELEASE-NOTES: synced

15 months agolib: send eos flag
Stefan Eissing [Thu, 18 Jul 2024 09:29:37 +0000 (11:29 +0200)] 
lib: send eos flag

Adds a `bool eos` flag to send methods to indicate that the data is the
last chunk the invovled transfer wants to send to the server.

This will help protocol filters like HTTP/2 and 3 to forward the
stream's EOF flag and also allow to EAGAIN such calls when buffers are
not yet fully flushed.

Closes #14220

15 months agombedtls: correct the error message for cert blob parsing failure
Bhanu Prakash [Thu, 18 Jul 2024 12:47:26 +0000 (18:17 +0530)] 
mbedtls: correct the error message for cert blob parsing failure

Closes #14224

15 months agocurldown: make 'added-in:' a mandatory header field
Daniel Stenberg [Wed, 17 Jul 2024 22:51:50 +0000 (00:51 +0200)] 
curldown: make 'added-in:' a mandatory header field

- generate AVAILABILITY manpage sections automatically - for consistent
  wording

- allows us to double-check against other documumentation (symbols-in-versions
  etc)

- enables proper automation/scripting based on this data

- lots of them were wrong or missing in the manpages

- several of them repeated (sometimes mismatching) backend support info

Add test 1488 to verify "added-in" version numbers against
symbols-in-versions.

Closes #14217

15 months agodoh: fix cleanup
Stefan Eissing [Wed, 17 Jul 2024 12:46:47 +0000 (14:46 +0200)] 
doh: fix cleanup

When removing an easy handle that had DoH sub-easy handles going, those
were not removed from the multi handle. Their memory was reclaimed on
curl_easy_cleanup() of the owning handle, but multi still had them in
their list.

Add `Curl_doh_close()` and `Curl_doh_cleanup()` as common point for
handling the DoH resource management. Use the `multi` present in the doh
handles (if so), for removal, as the `data->multi` might already have
been NULLed at this time.

Reported-by: 罗朝辉
Fixes #14207
Closes #14212

15 months agotests/scripts: call it 'manpage' (single word)
Daniel Stenberg [Wed, 17 Jul 2024 22:11:28 +0000 (00:11 +0200)] 
tests/scripts: call it 'manpage' (single word)

Mostly in comments

Closes #14216

15 months agohttp/3: resume upload on ack if we have more data to send
Alex Snast [Wed, 17 Jul 2024 11:06:06 +0000 (14:06 +0300)] 
http/3: resume upload on ack if we have more data to send

Currently we're waiting for sendbuf_len_in_flight to hit zero before
resuming upload which means we're blocking and waiting for _all_ acks to
arrive before sending more data. This causes significant delays especially
when ack delay is used on the server side.

The fix addresses several issues in h3 over ngtcp2:
  - On ack we now call nghttp3_conn_resume_stream() when we have more
    data to send.
  - upload_left was incorrectly computed on CF_CTRL_DATA_DONE_SEND as
    we need to subtract the ammount of data we have in flight.
  - Remove upload_blocked_len as we Curl_bufq_write call will do the
    right thing when called from cf_ngtcp2_send.

Fixes #14198
Closes #14209

15 months agoidn: make macidn fail before trying conversion if name too long
Daniel Stenberg [Tue, 16 Jul 2024 16:40:13 +0000 (18:40 +0200)] 
idn: make macidn fail before trying conversion if name too long

- double the max name length to 512 bytes

Closes #14215

15 months agoidn: tweak buffer use when converting with macidn
z2_ [Wed, 17 Jul 2024 21:48:33 +0000 (23:48 +0200)] 
idn: tweak buffer use when converting with macidn

Closes #14215

15 months agolib: add failure reason on bind errors
Orgad Shaneh [Thu, 18 Jul 2024 09:52:31 +0000 (12:52 +0300)] 
lib: add failure reason on bind errors

Closes #14221

15 months agopytests: scorecard upload tests
Stefan Eissing [Wed, 17 Jul 2024 10:26:40 +0000 (12:26 +0200)] 
pytests: scorecard upload tests

- add upload tests to scorecard, invoke with
  > python3 tests/http/scorecard.py -u h1|h2|h3
- add a reverse proxy setup from Caddy to httpd for
  upload tests since Caddy does not have other PUT/POST handling
- add caddy tests in test_08 for POST/PUT
- increase read buffer in mod_curltest for larger reads

Closes #14208

15 months agoruntests: fix newline glitch in FAIL details
Viktor Szakats [Wed, 17 Jul 2024 22:53:19 +0000 (00:53 +0200)] 
runtests: fix newline glitch in FAIL details

Follow-up to bae555359979016999a9425a2d489f219a78abdd #14174

15 months agoruntests: show name and keywords for failed tests in summary
Viktor Szakats [Sat, 13 Jul 2024 08:49:08 +0000 (10:49 +0200)] 
runtests: show name and keywords for failed tests in summary

Useful to see what the numbers listed in the `TESTFAIL:` and `IGNORED:`
lines mean. Also list test keywords to help catching failure patterns.

Example:
```
FAIL 1034: 'HTTP over proxy with malformatted IDN host name' HTTP, HTTP GET, HTTP proxy, IDN, FAILURE, config file
FAIL 1035: 'HTTP over proxy with too long IDN host name' HTTP, HTTP GET, HTTP proxy, IDN, FAILURE

TESTFAIL: These test cases failed: 1034 1035
```

Closes #14174

15 months agoGHA/windows: add MSVC wolfSSL job with test
Tal Regev [Mon, 15 Jul 2024 18:29:17 +0000 (21:29 +0300)] 
GHA/windows: add MSVC wolfSSL job with test

Fix the file of wolfssl.c because of this warning/error:
```
curl\lib\vtls\wolfssl.c(1017,42): error C2220: the following warning is treated as an error [curl\bld\lib\libcurl_object.vcxproj]
curl\lib\vtls\wolfssl.c(1017,42): warning C4267: 'function': conversion from 'size_t' to 'unsigned long', possible loss of data [curl\bld\lib\libcurl_object.vcxproj]
```

`size_t` in MSVC is different. Change it to `unsigned long` because
`wolfSSL_ERR_error_string_n` last argument is defined as
`unsigned long`.

Closes #14193

15 months agocmake: delete unused `HAVE_LIBSSH2`, `HAVE_LIBSOCKET` macros
Viktor Szakats [Sat, 13 Jul 2024 16:47:54 +0000 (18:47 +0200)] 
cmake: delete unused `HAVE_LIBSSH2`, `HAVE_LIBSOCKET` macros

- `HAVE_LIBSSH2`: unused in source. Not defined in CMake.

- `HAVE_LIBSOCKET`: unused in source. Used internally in CMake.

autotools sets them implicitly, so add them to the flag comparison
ignore-list.

Closes #14178