]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
14 months agofixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache... ngtcp2-cache
Tatsuhiro Tsujikawa [Fri, 31 May 2024 11:30:36 +0000 (20:30 +0900)] 
fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 11:29:08 +0000 (20:29 +0900)] 
fixup! fixup! fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 11:23:14 +0000 (20:23 +0900)] 
fixup! fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 11:16:38 +0000 (20:16 +0900)] 
fixup! fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 10:28:49 +0000 (19:28 +0900)] 
fixup! fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 10:12:14 +0000 (19:12 +0900)] 
fixup! fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 09:54:54 +0000 (18:54 +0900)] 
fixup! fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! fixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 09:49:32 +0000 (18:49 +0900)] 
fixup! fixup! GHA: Make ngtcp2 cache efficient

14 months agofixup! GHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Fri, 31 May 2024 09:44:12 +0000 (18:44 +0900)] 
fixup! GHA: Make ngtcp2 cache efficient

14 months agodebug
Tatsuhiro Tsujikawa [Tue, 21 May 2024 09:51:43 +0000 (18:51 +0900)] 
debug

14 months agoGHA: Make ngtcp2 cache efficient
Tatsuhiro Tsujikawa [Tue, 21 May 2024 09:50:57 +0000 (18:50 +0900)] 
GHA: Make ngtcp2 cache efficient

14 months agocf-socket: improve SO_SNDBUF update for Winsock
Jay Satiro [Sun, 26 May 2024 18:56:24 +0000 (14:56 -0400)] 
cf-socket: improve SO_SNDBUF update for Winsock

- Rename: Curl_sndbufset => Curl_sndbuf_init

- Rename: win_update_buffer_size => win_update_sndbuf_size

- Save the last set SO_SNDBUF size to compare against so that we can
  avoid setsockopt calls every second.

This is a follow-up to 0b520e12 which moved the SO_SNDBUF update check
into cf-socket. This change improves it further by making the function
names easier to understand and reducing the amount of setsockopt calls.

Closes https://github.com/curl/curl/pull/13827

14 months agotidy-up: use consistent casing for Windows directories
Viktor Szakats [Thu, 30 May 2024 10:26:12 +0000 (12:26 +0200)] 
tidy-up: use consistent casing for Windows directories

C:\Windows\System32

Closes #13832

14 months agoGHA: use ubuntu-latest with OmniOS job
Viktor Szakats [Thu, 30 May 2024 10:00:27 +0000 (12:00 +0200)] 
GHA: use ubuntu-latest with OmniOS job

It's the same as ubuntu-22.04.

Also update OmniOS package search link.

Closes #13831

14 months agoGHA: adjust parallel job counts
Ayesh Karunaratne [Mon, 12 Feb 2024 07:05:35 +0000 (14:05 +0700)] 
GHA: adjust parallel job counts

Adjusts the `make -j` flag to match the latest GitHub-hosted runner
hardware specs[^1]:

 - `ubuntu-latest` on 4 CPU cores
 - `macos-latest` on 3 CPU cores

The processor count is ideally obtained from `nproc`, but setting env
vars from the current CI yaml files is not possible because they expect
literal strings.

[^1]: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories

Closes #12927

14 months agoget.d: clarify the explanation
pszlazak [Sun, 19 May 2024 15:35:47 +0000 (17:35 +0200)] 
get.d: clarify the explanation

Closes #13706

14 months agocurl_url_set.md: libcurl only parses :// URLs
Daniel Stenberg [Wed, 29 May 2024 09:33:41 +0000 (11:33 +0200)] 
curl_url_set.md: libcurl only parses :// URLs

Make it clearer in the documentation.

Closes #13821

14 months agomulti: fix multi_wait() timeout handling
Stefan Eissing [Wed, 29 May 2024 15:13:34 +0000 (17:13 +0200)] 
multi: fix multi_wait() timeout handling

- determine the actual poll timeout *after* all sockets
  have been collected. Protocols and connection filters may
  install new timeouts during collection.
- add debug logging to test1533 where the mistake was noticed

Reported-by: Matt Jolly
Fixes #13782
Closes #13825

14 months agolib: prefer `var = time(NULL)` over `time(&var)`
Viktor Szakats [Tue, 28 May 2024 14:16:01 +0000 (16:16 +0200)] 
lib: prefer `var = time(NULL)` over `time(&var)`

Following up on previous occurrences showing up as gcc warnings, replace
the remaining `time(&var)` calls with `var = time(NULL)`, though these
aren't specifically causing compiler warnings. These are in the TFTP
client code (`lib/tftp.c`), except one which is in a debug branch in
`lib/http_aws_sigv4.c`.

What's unexplainable is that this patch seems to mitigate TFTP tests
often hanging or going into an infinite loop on GHA windows workflows
with MSYS2, mingw-w64 and MSVC (Cygwin is unaffected):
  https://github.com/curl/curl/pull/13599#issuecomment-2119372376
TFTP hangs did not entirely disappear though, so could be unrelated.

`time()` docs:
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/time-time32-time64
https://manpages.debian.org/bookworm/manpages-dev/time.2.en.html

Follow-up to 58ca0a2f0743a586716ca357c382b29e3f08db69 #13800
Follow-up to d0728c9109629ee82b855b350a4c3f1f52ee61df #13643
Closes #13815

14 months agowinsock: move SO_SNDBUF update into cf-socket
Stefan Eissing [Fri, 24 May 2024 08:09:32 +0000 (10:09 +0200)] 
winsock: move SO_SNDBUF update into cf-socket

- Move the code that updates the SO_SNDBUF size for Windows to
  cf_socket_send.

Prior to this change the code was in readwrite_upload but the socket
filter is the more appropriate place because it applies to all sends.

Background:

For Windows users SO_SNDBUF (the total per-socket buffer size reserved
by Winsock for sends) is updated dynamically by libcurl during the
transfer. This is because Windows does not do it automatically for
non-blocking sockets and without it the performance of large transfers
may suffer.

Closes https://github.com/curl/curl/pull/13763

14 months agosectransp: use common code for cipher suite lookup
Jan Venekamp [Wed, 8 May 2024 18:40:29 +0000 (20:40 +0200)] 
sectransp: use common code for cipher suite lookup

Take advantage of the Curl_cipher_suite_walk_str() and
Curl_cipher_suite_get_str() functions introduced in commit fba9afe.

Closes #13521

14 months agoaws-sigv4: url encode the canonical path
Matthias Gatto [Mon, 27 May 2024 12:58:11 +0000 (14:58 +0200)] 
aws-sigv4: url encode the canonical path

Refactors canon_query, so it could use the encoding part of the function
to use it in the path.

As the path doesn't encode '/', but encode '=', I had to add some
conditions to know If I was doing the query or path encoding.

Also, instead of adding a `bool in_path` variable, I use `bool
*found_equals` to know if the function was called for the query or path,
as found_equals is used only in query_encoding.

Test 472 verifies.

Reported-by: Alexander Shtuchkin
Fixes #13754
Closes #13814

Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
14 months agocd2nroff: use an empty "##" to signal end of .IP sequence
Daniel Stenberg [Tue, 28 May 2024 06:32:19 +0000 (08:32 +0200)] 
cd2nroff: use an empty "##" to signal end of .IP sequence

Like when we list a series of options and then want to add "normal" text
again afterwards.

Without this, the indentation level wrongly continues even after the
final "##" header, making following text wrongly appear to belong to the
header above.

Adjusted several curldown files to use this.

Fixes #13803
Reported-by: Jay Satiro
Closes #13806

14 months agoopenssl: fix %-specifier in infof() call
vvb2060 [Tue, 28 May 2024 17:11:44 +0000 (01:11 +0800)] 
openssl: fix %-specifier in infof() call

Closes #13816

14 months agocurl: make warnings and other messages aware of terminal width
Daniel Stenberg [Tue, 28 May 2024 07:44:27 +0000 (09:44 +0200)] 
curl: make warnings and other messages aware of terminal width

This removes unnecessary line wraps when the terminal is wider than 79
columns and it also makes messages look better in narrower terminals.

The get_terminal_columns() function is not split out into its own source
file.

Suggested-by: Elliott Balsley
Fixes #13804
Closes #13808

14 months agoGHA: enable tests 1139, 1177, 1477 on Windows
Viktor Szakats [Tue, 28 May 2024 17:19:43 +0000 (19:19 +0200)] 
GHA: enable tests 1139, 1177, 1477 on Windows

These exclusions came from the AppVeyor CI config, but they do pass now
and they are static tests with no flakiness risk.

Follow-up to 0914d8aadddac0d1459673d5b7f77e8f3378b22b #13759
Closes #13817

14 months agoCI: Improve labeler tag detection
Dan Fandrich [Mon, 13 May 2024 19:58:44 +0000 (12:58 -0700)] 
CI: Improve labeler tag detection

Also, simplify patterns with a single glob.

14 months agoGHA: disable TFTP tests in Windows jobs
Viktor Szakats [Tue, 28 May 2024 11:07:34 +0000 (13:07 +0200)] 
GHA: disable TFTP tests in Windows jobs

Shot in the dark trying to find out which tests are
hanging / going to an infinite loop.

The ones failing after 45 minutes (mingw-w64) or 30 minutes (MSVC).

Ref: https://github.com/curl/curl/pull/13599#issuecomment-2119372376

14 months agoci: update vmactions/omnios-vm digest to a61ca1e
renovate[bot] [Mon, 27 May 2024 20:56:52 +0000 (20:56 +0000)] 
ci: update vmactions/omnios-vm digest to a61ca1e

Closes #13801

14 months agoopenssl/gnutls: rectify the TLS version checks for QUIC
Daniel Stenberg [Mon, 27 May 2024 21:12:27 +0000 (23:12 +0200)] 
openssl/gnutls: rectify the TLS version checks for QUIC

The versions check wrongly complained and return error if the *minimum*
version was set to something less than 1.3. QUIC is always TLS 1.3, but
that means minimum 1.2 is still fine to ask for.

This also renames the local variable to make the mistake harder to make
in the future.

Regression shipped in 8.8.0

Follow-up to 3210101088dfa3d6a125

Reported-by: fds242 on github
Fixes #13799
Closes #13802

14 months agognutls: improve TLS shutdown
Stefan Eissing [Mon, 27 May 2024 09:51:03 +0000 (11:51 +0200)] 
gnutls: improve TLS shutdown

local ftp upload tests sometimes failed with an invalid TLS record being
reported by gnutls. vsftp did log that the shutdown was not regarded as
clean, failing the control connection thereafter.

These changes make test_31_05 work reliable locally.

- on closing the SSL filter, shutdown READ *and* WRITE
- on closing, try a receive after shutdown is sent
- convert to DEBUGF to CURL_TRC_CF

Closes #13790

14 months agoRELEASE-NOTES: synced
Daniel Stenberg [Tue, 28 May 2024 08:29:05 +0000 (10:29 +0200)] 
RELEASE-NOTES: synced

14 months agotests: run with "--trace-config all" to provide even more info
Daniel Stenberg [Mon, 27 May 2024 12:06:37 +0000 (14:06 +0200)] 
tests: run with "--trace-config all" to provide even more info

in case of problems.

Closes #13791

14 months agobuild: untangle `CURLDEBUG` and `DEBUGBUILD` macros
Viktor Szakats [Mon, 20 May 2024 12:21:05 +0000 (14:21 +0200)] 
build: untangle `CURLDEBUG` and `DEBUGBUILD` macros

`CURLDEBUG` is meant to enable memory tracking, but in a bunch of cases,
it was protecting debug features that were supposed to be guarded with
`DEBUGBUILD`.

Replace these uses with `DEBUGBUILD`.

This leaves `CURLDEBUG` uses solely for its intended  purpose: to enable
the memory tracking debug feature.

Also:
- autotools: rely on `DEBUGBUILD` to enable `checksrc`.
  Instead of `CURLDEBUG`, which worked in most cases because debug
  builds enable `CURLDEBUG` by default, but it's not accurate.
- include `lib/easyif.h` instead of keeping a copy of a declaration.
- add CI test jobs for the build issues discovered.

Ref: https://github.com/curl/curl/pull/13694#issuecomment-2120311894
Closes #13718

14 months agoexamples: delete unused includes
Viktor Szakats [Fri, 24 May 2024 17:52:05 +0000 (19:52 +0200)] 
examples: delete unused includes

Delete a bunch of unnecessary-looking headers from some examples. This
is known to be tricky on AIX (perhaps also in other less-tested envs).

Let me know if any of this looks incorrect or outright fails on some
systems.

Follow-up to d4b85890555388bec212b75f47a5c1a48705b156 #13771
Closes #13785

14 months agoappveyor: fixup job name [ci skip]
Viktor Szakats [Mon, 27 May 2024 21:22:39 +0000 (23:22 +0200)] 
appveyor: fixup job name [ci skip]

Follow-up to fc8e0dee3045658f293452121f5290d81ba3aa1e #13694

14 months agocmake: fix `-Wredundant-decls` in unity/mingw-w64/gcc/curldebug/DLL builds
Viktor Szakats [Sun, 19 May 2024 14:55:45 +0000 (16:55 +0200)] 
cmake: fix `-Wredundant-decls` in unity/mingw-w64/gcc/curldebug/DLL builds

It affected cmake-unity shared-curltool curldebug mingw-w64 gcc builds
when building the `testdeps` target.

Apply the solution already used in `lib/base64.c` and `lib/dynbuf.c`
to fix it.

Also update an existing GHA CI job to test the issue fixed.

```
In file included from curl/lib/version_win32.c:35,
                 from curl/_bld/src/CMakeFiles/curl.dir/Unity/unity_0_c.c:145:
curl/lib/memdebug.h:52:14: error: redundant redeclaration of 'curl_dbg_logfile' [-Werror=redundant-decls]
   52 | extern FILE *curl_dbg_logfile;
      |              ^~~~~~~~~~~~~~~~
In file included from curl/src/slist_wc.c:32,
                 from curl/_bld/src/CMakeFiles/curl.dir/Unity/unity_0_c.c:4:
curl/lib/memdebug.h:52:14: note: previous declaration of 'curl_dbg_logfile' with type 'FILE *' {aka 'struct _iobuf *'}
   52 | extern FILE *curl_dbg_logfile;
      |              ^~~~~~~~~~~~~~~~
curl/lib/memdebug.h:55:44: error: redundant redeclaration of 'curl_dbg_malloc' [-Werror=redundant-decls]
   55 | CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size,
      |                                            ^~~~~~~~~~~~~~~
curl/lib/memdebug.h:55:44: note: previous declaration of 'curl_dbg_malloc' with type 'void *(size_t,  int,  const char *)' {aka 'void *(long long unsigned int,  int,  const char *)'}
   55 | CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size,
      |                                            ^~~~~~~~~~~~~~~
[...]
curl/lib/memdebug.h:110:17: error: redundant redeclaration of 'curl_dbg_fclose' [-Werror=redundant-decls]
  110 | CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);
      |                 ^~~~~~~~~~~~~~~
curl/lib/memdebug.h:110:17: note: previous declaration of 'curl_dbg_fclose' with type 'int(FILE *, int,  const char *)' {aka 'int(struct _iobuf *, int,  const char *)'}
  110 | CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);
      |                 ^~~~~~~~~~~~~~~
```
Ref: https://ci.appveyor.com/project/curlorg/curl/builds/49840554/job/a4aoet17e9qnqx1a#L362

After: https://ci.appveyor.com/project/curlorg/curl/builds/49843735/job/hbo2uah2vj0ns523

Ref: #13689 (CI testing this PR with `DEBUGBUILD`/`CURLDEBUG`/shared-static combinations)
Depends-on: #13694
Depends-on: #13800
Closes #13705

14 months agolib: fix gcc warning in certain debug builds
Viktor Szakats [Mon, 20 May 2024 12:21:05 +0000 (14:21 +0200)] 
lib: fix gcc warning in certain debug builds

```
curl/lib/http_aws_sigv4.c:536:10: error: 'clock' may be used uninitialized [-Werror=maybe-uninitialized]
  536 |   time_t clock;
      |          ^~~~~
```
Ref: https://github.com/curl/curl/actions/runs/9158755123/job/25177765000#step:13:79

Cherry-picked from #13718
Closes #13800

14 months agocmake: always build unit tests with the `testdeps` target
Viktor Szakats [Sat, 18 May 2024 00:15:32 +0000 (02:15 +0200)] 
cmake: always build unit tests with the `testdeps` target

Before this patch, the `testdeps` build target required `-DCURLDEBUG`
be set either via `ENABLE_DEBUG=ON` or `ENABLE_CURLDEBUG=ON` to build
the curl unit tests.

After fixing build issues in #13694, we can drop this requirement and
build unit tests unconditionally.

Depends-on: #13694
Depends-on: #13697 (fix unit test issue revealed by Old Linux CI job)
Follow-up to 39e7c22bb459c2e818f079984989a26a09741860 #11446
Closes #13698

14 months agoCI: disable dependency tracking in most autotools builds
Viktor Szakats [Mon, 27 May 2024 13:19:35 +0000 (15:19 +0200)] 
CI: disable dependency tracking in most autotools builds

For better build performance. Dependency tracking causes a build
overhead while compiling to help a subsequent build, but in CI there is
never one and the extra work is discarded.

Closes #13794

14 months agobuild: untangle `UNITTESTS` and `DEBUGBUILD` macros
Viktor Szakats [Thu, 16 May 2024 11:49:22 +0000 (13:49 +0200)] 
build: untangle `UNITTESTS` and `DEBUGBUILD` macros

- fix `DEBUGBUILD` guards that should be `UNITTESTS`, in libcurl code
  used by unit tests.
- fix guards for libcurl functions used in unit tests only.
- sync `UNITTEST` attribute between declarations and definitions.
- drop `DEBUGBUILD` guard from test `unit2600`.
- fix guards for libcurl HSTS code used by both a unit test (`unit1660`)
  and `test0446`.
- update an existing AppVeyor CI job to test the issues fixed.

This fixes building tests with `CURLDEBUG` enabled but `DEBUGBUILD`
disabled. This can happen when building tests with CMake with
`ENABLE_DEBUG=ON` in Release config, or with `ENABLE_CURLDEBUG=ON`
and _without_ `ENABLE_DEBUG=ON`. Possibly also with autotools
when using `--enable-curldebug` without `--enable-debug`.

Test results:
- before:
  https://ci.appveyor.com/project/curlorg/curl/builds/49835609
  https://ci.appveyor.com/project/curlorg/curl/builds/49898529/job/k8qpbs8idby70smw
  https://github.com/curl/curl/actions/runs/9259078835/job/25470318167?pr=13798#step:13:821
- after: https://ci.appveyor.com/project/curlorg/curl/builds/49839255
  (the two failures are unrelated, subject to PR #13705)

Ref: #13592 (issue discovery)
Ref: #13689 (CI testing this PR with `DEBUGBUILD`/`CURLDEBUG` combinations)
Closes #13694

14 months agoGHA: ignore flaky MQTT and FTP test results [ci skip]
Viktor Szakats [Mon, 27 May 2024 17:55:20 +0000 (19:55 +0200)] 
GHA: ignore flaky MQTT and FTP test results [ci skip]

MQTT / OmniOS:
```
TESTFAIL: These test cases failed: 1190 1198 3017
```
Ref: https://github.com/curl/curl/actions/runs/9258522297/job/25468730731?pr=13694#step:3:10251

MQTT / OmniOS:
```
TESTFAIL: These test cases failed: 1194 2200 2203 2205
```
Ref: https://github.com/curl/curl/actions/runs/9150523540/job/25155409832#step:3:10233

FTP / OmniOS:
```
TESTFAIL: These test cases failed: 1096
```
Ref: https://github.com/curl/curl/actions/runs/9150702711/job/25155793948#step:3:10247

FTP / OmniOS:
```
TESTFAIL: These test cases failed: 381
```
Ref: https://github.com/curl/curl/actions/runs/9163863822/job/25193897640#step:3:10230

FTP / OmniOS:
```
TESTFAIL: These test cases failed: 340
```
Ref: https://github.com/curl/curl/actions/runs/9233804752/job/25406671742?pr=13771#step:3:10245

Ref: https://github.com/curl/curl/pull/13583#issuecomment-2119376898

14 months agoCI: tidy up skipping tests build/run in Windows jobs
Viktor Szakats [Mon, 27 May 2024 16:48:32 +0000 (18:48 +0200)] 
CI: tidy up skipping tests build/run in Windows jobs

Simplify controlling whether to build and/run tests in a CI job.

Apply the TFLAGS='skipall' (do not build nor run tests) or
'skiprun' (build, but do not run) method already used with old-mingw-w64
and msvc jobs to existing Windows jobs in GHA and AppVeyor.

Also:
- add Cygwin/cmake test build and run steps while here.
- replace `DISABLED_TESTS` with `TFLAGS` in AppVeyor.

Closes #13796

14 months agocmake: use `APPLE` instead of `CMAKE_SYSTEM_NAME` string
Viktor Szakats [Sun, 19 May 2024 16:42:11 +0000 (18:42 +0200)] 
cmake: use `APPLE` instead of `CMAKE_SYSTEM_NAME` string

Follow-up to a86254b39307af1a53735b065a382567805cd9b8 #12515
Closes #13713

14 months agocmake: whitespace, formatting/tidy-up in comments
Viktor Szakats [Sun, 19 May 2024 16:49:42 +0000 (18:49 +0200)] 
cmake: whitespace, formatting/tidy-up in comments

Also correct casing in a few option descriptions.

Closes #13711

14 months agocmake: allow `ENABLE_CURLDEBUG=OFF` with `ENABLE_DEBUG=ON`
Viktor Szakats [Mon, 27 May 2024 12:33:54 +0000 (14:33 +0200)] 
cmake: allow `ENABLE_CURLDEBUG=OFF` with `ENABLE_DEBUG=ON`

Before this patch, `ENABLE_CURLDEBUG` (memory tracking) was
unconditionally enabled when `ENABLE_DEBUGBUILD` was set. This made
testing some build configurations complicated. To fix it, this patch
makes `ENABLE_CURLDEBUG` to receive the value of `ENABLE_DEBUG` by
default, while allowing free override by the user.

This allows to use the config:
`ENABLE_DEBUGBUILD=ON ENABLE_CURLDEBUG=OFF`
to enable debug features, without also enabling memory tracking.

This is important because some other build methods allow to set one of
these features but not the other. This patch allows to test any
combination with CMake.

This makes it unnecessary to use the workaround of passing
`-DDEBUGBUILD` via `CMAKE_C_FLAGS`. Which has the disadvantage that our
CMake logic cannot easily detect it, e.g. for disabling symbol hiding on
Windows for `ENABLE_DEBUG`/`DEBUGBUILD` builds.

Cherry-picked from #13718
Closes #13792

14 months agocmake: `ENABLE_DEBUG=ON` to always set `-DDEBUGBUILD`
Viktor Szakats [Sat, 11 May 2024 00:44:10 +0000 (02:44 +0200)] 
cmake: `ENABLE_DEBUG=ON` to always set `-DDEBUGBUILD`

Before this patch `ENABLE_DEBUG=ON` always enabled the TrackMemory
(aka `ENABLE_CURLDEBUG=ON`) feature, but required the `Debug` CMake
configration to actually enable curl debug features
(aka `-DDEBUGBUILD`).

Curl debug features do not require compiling with C debug options. This
also made enabling debug features unintuitive and complicated to use.
Due to other issues (subject to PR #13694) it also caused an error in
default (and `Release`/`MinSizeRel`/`RelWithDebInfo`) configs, when
building the `testdeps` target:
```
ld: CMakeFiles/unit1395.dir/unit1395.c.o: in function `test':
unit1395.c:(.text+0x1a0): undefined reference to `dedotdotify'
```
Ref: https://github.com/curl/curl/actions/runs/9037287098/job/24835990826#step:3:2483

Fix it by always defining `DEBUGBUILD` when setting `ENABLE_DEBUG=ON`.
Decoupling this option from the selected CMake configuration.

Note that after this patch `ENABLE_DEBUG=ON` unconditionally enables
curl debug features. These features are insecure and unsuited for
production. Make sure to omit this option when building for production
in default, `Release` (and other not-`Debug`) modes.

Also delete a workaround no longer necessary in GHA CI jobs.

Ref: 1a62b6e68c08c7e471ff22dd92932aba7e026817 (2015-03-03)
Ref: #13583
Closes #13592

14 months agoGHA: add autotools mingw-64, build-only job
Viktor Szakats [Mon, 27 May 2024 13:07:23 +0000 (15:07 +0200)] 
GHA: add autotools mingw-64, build-only job

Cherry-picked from #13718
Closes #13793

14 months agoGHA: add three MSVC jobs
Viktor Szakats [Fri, 24 May 2024 15:53:27 +0000 (17:53 +0200)] 
GHA: add three MSVC jobs

Continuing the theme, add 3 MSVC jobs with tests, matching
configurations used on AppVeyor. MSVC versions are identical:
19.39.33523.0 + Windows SDK 10.0.22621.0.

Also enable websockets, and build examples. Tests are run in parallel
(`-j14`), with improved performance.

Job performance:
```
                                                       AppVeyor  GHA
                                                                 w/examples
                                                       --------  ----------
CMake, VS2022, Debug, x64, Schannel, Static, Unicode   38m 4s    11m57s
CMake, VS2022, Debug, x64, no SSL, Static              35m15s    12m 6s
CMake, VS2022, Debug, x64, no SSL, Static, HTTP only   25m25s    10m36s
```
Based on these runs:
https://ci.appveyor.com/project/curlorg/curl/builds/49884748
https://github.com/curl/curl/actions/runs/9229448468

This is the first time examples are built in CI with MSVC: Fix all
warnings and errors that came up via
d4b85890555388bec212b75f47a5c1a48705b156 #13771.

Closes #13766

14 months agoGHA: add three old (gcc 6, 7, 9) mingw-w64 jobs
Viktor Szakats [Thu, 23 May 2024 12:54:49 +0000 (14:54 +0200)] 
GHA: add three old (gcc 6, 7, 9) mingw-w64 jobs

Re-implement old mingw-w64 jobs in GHA. This allows to use the latest
Windows runners, replacing Windows Server 2012 R2 (gcc 6) and Windows
Server 2016 (gcc 7, 9) with Windows Server 2022.

GHA runners are also significantly faster, and allow running tests in
parallel (`-j14`). It also offloads 3 more long-running jobs from
AppVeyor CI.

These jobs download (then cache) the mingw-w64 packages from their
original location, which allows flexibility in choosing which versions
and flavours (win32/POSIX, SEH/DWARF, 64/32-bit) we want to test in CI.
The new jobs use these distros:
- https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/ (for gcc 7, same as on AppVeyor)
- https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/ (for gcc 6, same as on AppVeyor)
- https://winlibs.com/ (for gcc 9)

I matched existing AppVeyor job configs, with these differences:
- gcc 6.4.0 instead of 6.3.0.
  (same distro as on AppVeyor, but the latest bugfix release)
- gcc 9.5.0 instead of 9.1.0 and a different (but compatible) binary distro.
  (in AppVeyor this relies on an old MSYS2 pre-installed on the runner)
- using win32 builds instead of posix for gcc 6.4.0 and 7.3.0.
- websockets enabled.
- always build examples.
- always build tests (this wasn't done for 6.4.0 with AppVeyor CI).

I did not replicate existing test exclusions, and oddly enough the few
failures (so far) were different from MSYS2 jobs and also from their
AppVeyor CI counterparts.

Also:
- delete redundant (default) `-u` option from `cygpath` calls.
- allow matrix options to override default ones in CMake.
- detect and use Windows-supplied curl for `TFLAGS` `-ac` option.
  (it's available in modern runners.)
- delete the 3 AppVeyor CI jobs now replicated in GHA.
- appveyor: prefer `SYSTEMROOT` over `WINDIR`.
- tidy-up quotes.

Job performance:
```
                                                                 AppVeyor  GHA
                                                                           w/examples
                                                                           w/tests
                                                                 --------  ----------
CMake, mingw-w64, gcc 6, Debug, x86, Schannel, Static, no-unity   1m25s     8m50s
CMake, mingw-w64, gcc 7, Debug, x64, Schannel, Static, Unicode   31m45s     9m39s
CMake, mingw-w64, gcc 9, Debug, x64, Schannel, Static            28m25s    13m38s
```
Based on these runs:
https://ci.appveyor.com/project/curlorg/curl/builds/49880799
https://github.com/curl/curl/actions/runs/9218292508

Notice that building examples and tests is time consuming.

We can tweak any build parameter as necessary to make them more useful
and/or without clogging the job queue or introducing flakiness.

Closes #13759

14 months agoTODO: remove some old, clarify, add something
Daniel Stenberg [Mon, 27 May 2024 08:38:43 +0000 (10:38 +0200)] 
TODO: remove some old, clarify, add something

Closes #13788

14 months agoTODO: Add "Share CA cache" + "CA caching to more TLS backends"
Daniel Stenberg [Mon, 27 May 2024 08:13:40 +0000 (10:13 +0200)] 
TODO: Add "Share CA cache" + "CA caching to more TLS backends"

Closes #13787

14 months agoruntests: sort test IDs in summary lines
Viktor Szakats [Sat, 25 May 2024 06:54:27 +0000 (08:54 +0200)] 
runtests: sort test IDs in summary lines

Changing this output:
```
TESTFAIL: These test cases failed: 2301 2303 2302 2307
```
Ref: https://github.com/curl/curl/actions/runs/9228638364/job/25393106631#step:6:21181

To:
```
TESTFAIL: These test cases failed: 2301 2302 2303 2307
```

Cherry-picked from #13766
Closes #13774

14 months agoexamples: fix compiling with MSVC
Viktor Szakats [Fri, 24 May 2024 16:38:32 +0000 (18:38 +0200)] 
examples: fix compiling with MSVC

- `websocket.c`: use `Sleep()` on Windows.
  `sleep()` and `unistd.h` are not available in MSVC.

- `http2-upload.c`: use local `gettimeofday()` implementation when
  compiled with MSVC.
  (Alternate solution is to disable the trace function for MSVC.)
  Public domain code copied and adapted from libssh2:
  https://github.com/libssh2/libssh2/blob/e973493f992313b3be73f51d3f7ca6d52e288558/src/misc.c#L719-L743

- silence compiler warning for deprecated `inet_addr()`.
  Also drop duplicate winsock2 include.
  ```
  curl\docs\examples\externalsocket.c(125,32): error C2220: the following warning is treated as an error [curl\bld\docs\examples\curl-example-externalsocket.vcxproj]
  curl\docs\examples\externalsocket.c(125,32): warning C4996: 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings [curl\bld\docs\examples\curl-example-e
  ```
  Ref: https://github.com/curl/curl/actions/runs/9227337318/job/25389073450#step:4:95

- silence an MSVC compiler warning. This is in conflict with `checksrc`
  rules, so silence the rule in favour of the warning-free C syntax.
  ```
  curl\docs\examples\multi-legacy.c(152,1): error C2220: the following warning is treated as an error [curl\bld\docs\examples\curl-example-multi-legacy.vcxproj]
  curl\docs\examples\multi-legacy.c(152,1): warning C4706: assignment within conditional expression [curl\bld\docs\examples\curl-example-multi-legacy.vcxproj]
  ```
  Ref: https://github.com/curl/curl/actions/runs/9227337318/job/25389073450#step:4:226

- do not use `sys/time.h` and `unistd.h` in Windows builds.
  Some of these includes look unnecessary. Subject to another PR.

Cherry-picked from #13766
Closes #13771

14 months agodocs/cmdline-opts: fix mail-auth example TLD typo
Jonathan Matthews [Sun, 26 May 2024 18:50:44 +0000 (19:50 +0100)] 
docs/cmdline-opts: fix mail-auth example TLD typo

Closes: #13784
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
14 months agolibssh: remove CURLOPT_SSL_VERIFYHOST check
Daniel Stenberg [Sat, 25 May 2024 21:30:51 +0000 (23:30 +0200)] 
libssh: remove CURLOPT_SSL_VERIFYHOST check

It was never meant for SSH: it should rely on the knownhosts file (if
set) in the same way libssh2 already does.

Reported-by: James Abbatiello
Fixes #13767
Closes #13781

14 months agomulti: add multi->proto_hash, a key-value store for protocol data
Stefan Eissing [Thu, 11 Apr 2024 10:34:40 +0000 (12:34 +0200)] 
multi: add multi->proto_hash, a key-value store for protocol data

- add `Curl_hash_add2()` that passes a destructor function for
  the element added. Call element destructor instead of hash
  destructor if present.
- multi: add `proto_hash` for protocol related information,
  remove `struct multi_ssl_backend_data`.
- openssl: use multi->proto_hash to keep x509 shared store
- schannel: use multi->proto_hash to keep x509 shared store
- vtls: remove Curl_free_multi_ssl_backend_data() and its
  equivalents in the TLS backends

Closes #13345

14 months agotests: add pytest for --ciphers and --tls13-ciphers options
Jan Venekamp [Sat, 25 May 2024 12:56:53 +0000 (14:56 +0200)] 
tests: add pytest for --ciphers and --tls13-ciphers options

Closes #13530

14 months agotool_operate: avoid explicitly setting verifypeer to 1
Orgad Shaneh [Sun, 19 May 2024 08:58:44 +0000 (11:58 +0300)] 
tool_operate: avoid explicitly setting verifypeer to 1

Also for the proxy verison. It is the default, just like verifyhost,
since a long time.

Closes #13704

14 months agotests: extend user/password parsing test1620
Orgad Shaneh [Thu, 23 May 2024 07:01:38 +0000 (10:01 +0300)] 
tests: extend user/password parsing test1620

Closes #13756

14 months agoconfigure: use `$EGREP` in place of `grep -E`
Alejandro R. Sedeño [Sat, 25 May 2024 16:04:18 +0000 (12:04 -0400)] 
configure: use `$EGREP` in place of `grep -E`

`$EGREP` is set based on an earlier test in configure so that we can
work with systems that have `egrep` and a `grep` that does not support
`-E`.

Closes #13780

14 months agoci: update dependency awslabs/aws-lc to v1.28.0
renovate[bot] [Fri, 24 May 2024 19:22:28 +0000 (19:22 +0000)] 
ci: update dependency awslabs/aws-lc to v1.28.0

Closes #13770

14 months agotests: test_17_ssl_use.py clarify mbedtls TLSv1.3 support
Jan Venekamp [Sat, 25 May 2024 13:07:58 +0000 (15:07 +0200)] 
tests: test_17_ssl_use.py clarify mbedtls TLSv1.3 support

Closes #13779

14 months agohttp: write last header line late
Stefan Eissing [Thu, 23 May 2024 10:21:46 +0000 (12:21 +0200)] 
http: write last header line late

- HEADERFUNCTIONS might inspect response properties like
  CURLINFO_CONTENT_LENGTH_DOWNLOAD_T on seeing the last header line. If
  the line is being written before this is initialized, values are not
  available.

- write the last header line late when analyzing a HTTP response so that
  all information is available at the time of the writing.

- add test1485 to verify that CURLINFO_CONTENT_LENGTH_DOWNLOAD_T works
  on seeing the last header.

Fixes #13752
Reported-by: Harry Sintonen
Closes #13757

14 months agotests: use exec when spawning nghttpx
Dan Fandrich [Fri, 24 May 2024 21:46:19 +0000 (14:46 -0700)] 
tests: use exec when spawning nghttpx

This stops keeping perl and shell processes around that are no longer
needed, plus it eliminates an unneeded shell message when the server is
later terminated.

Closes #13772

14 months agoGHA: ignore flaky test 3017 (MQTT) on OpenBSD
Viktor Szakats [Fri, 24 May 2024 21:47:15 +0000 (23:47 +0200)] 
GHA: ignore flaky test 3017 (MQTT) on OpenBSD

```
TESTFAIL: These test cases failed: 3017
```
Ref: https://github.com/curl/curl/actions/runs/9223543272/job/25376999226?pr=13759#step:3:16326
Ref: https://github.com/curl/curl/actions/runs/9230183764/job/25397883193?pr=13766#step:3:16345

Ref: https://github.com/curl/curl/pull/13583#issuecomment-2119376898

14 months agobuild: add more supported attributes to the IAR compiler
Joseph Chen [Wed, 22 May 2024 07:35:31 +0000 (15:35 +0800)] 
build: add more supported attributes to the IAR compiler

Closes #13744

14 months agocmake: fix test 1013 with websockets enabled and no TLS
Viktor Szakats [Fri, 24 May 2024 18:51:23 +0000 (20:51 +0200)] 
cmake: fix test 1013 with websockets enabled and no TLS

test 1013 is 'Compare curl --version with curl-config --protocols'.

Ref: https://github.com/curl/curl/actions/runs/9228363859/job/25392251955

Closes #13769

14 months agoGHA: stop deleting curl in non-native workflows
Viktor Szakats [Thu, 23 May 2024 12:54:49 +0000 (14:54 +0200)] 
GHA: stop deleting curl in non-native workflows

We do it in Cirrus CI, but for some platforms it's not possible to
delete it and tests work anyway.

The test runner also runs `../src/curl` by default, which is always the
one freshly built. The runner may also need the system curl to talk to
APIs when needed.

Also:
- stop setting `CURL` env. This isn't picked up by the runners,
  and works out of the box anyway.
- quote an option just in case.

Follow-up to 90e644f944969bb11c6448bf50c6d441b5c0b1e6 #13583
Closes #13765

14 months agoopenssl: stop duplicate ssl key logging for legacy OpenSSL
Jay Satiro [Fri, 17 May 2024 08:01:35 +0000 (04:01 -0400)] 
openssl: stop duplicate ssl key logging for legacy OpenSSL

- Don't call the keylog function if it has already logged the key.

For old OpenSSL versions and its forks that do not have support for
OpenSSL's keylog callback, libcurl has its own legacy key logging
function that logs the TLS 1.2 (and earlier) key (client random + master
key) on a single line.

Prior to this change, since e7de80e8 (precedes 8.8.0), the legacy key
logging function could write the same key line more than once (usually
twice) due to some incorrect logic.

Closes https://github.com/curl/curl/pull/13683

14 months agotransfer: remove curl_upload_refill_watermark, no longer used
Stefan Eissing [Fri, 24 May 2024 10:13:16 +0000 (12:13 +0200)] 
transfer: remove curl_upload_refill_watermark, no longer used

the define applied to upload buffers which we removed

Closes #13764

14 months agoRELEASE-NOTES: synced
Daniel Stenberg [Fri, 24 May 2024 11:33:15 +0000 (13:33 +0200)] 
RELEASE-NOTES: synced

14 months agocmake: fix brotli lib order
Viktor Szakats [Thu, 23 May 2024 14:44:40 +0000 (16:44 +0200)] 
cmake: fix brotli lib order

Fix root cause that caused missing symbols when linking brotli
statically with e.g. binutils `ld` (and any other "picky" linker,
or "traditional" linker as CMake now calls them).

Also drop existing workaround that added brotli libs twice to the lib
list.

```
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(decode.c.obj):decode.c:(.text$ProcessCommands[ProcessCommands]+0xbb5): undefined reference to `BrotliTransformDictionaryWord'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(decode.c.obj):decode.c:(.text$SafeProcessCommands[SafeProcessCommands]+0xe8a): undefined reference to `BrotliTransformDictionaryWord'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(decode.c.obj):decode.c:(.rdata$.refptr._kBrotliContextLookupTable[.refptr._kBrotliContextLookupTable]+0x0): undefined reference to `_kBrotliContextLookupTable'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(decode.c.obj):decode.c:(.rdata$.refptr._kBrotliPrefixCodeRanges[.refptr._kBrotliPrefixCodeRanges]+0x0): undefined reference to `_kBrotliPrefixCodeRanges'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(state.c.obj):state.c:(.text$BrotliDecoderStateInit[BrotliDecoderStateInit]+0x21): undefined reference to `BrotliDefaultAllocFunc'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(state.c.obj):state.c:(.text$BrotliDecoderStateInit[BrotliDecoderStateInit]+0x2f): undefined reference to `BrotliDefaultFreeFunc'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(state.c.obj):state.c:(.text$BrotliDecoderStateInit[BrotliDecoderStateInit]+0x10e): undefined reference to `BrotliSharedDictionaryCreateInstance'
x86_64-w64-mingw32-ld: .../curl/brotli/_bld/usr/lib/libbrotlidec.a(state.c.obj):state.c:(.text$BrotliDecoderStateCleanup[BrotliDecoderStateCleanup]+0xf4): undefined reference to `BrotliSharedDictionaryDestroyInstance'
collect2: error: ld returned 1 exit status
```

Breakage reproducible with curl-for-win config "`win-gcc`" and deleting
the `LDFLAGS+=' -Wl,--start-group'` line from its `curl.sh` script.
(Above line still required for some non-brotli cases, e.g. libssh2 and
zlib.)

Assisted-by: Kai Pastor
Ref: https://github.com/curl/curl/pull/10857#discussion_r1611714989
Follow-up to 1e3319a167d2f32d295603167486e9e88af9bb4e #10857
Closes #13761

14 months agocmake: fix building in unity mode
Pavel P [Wed, 22 May 2024 15:32:43 +0000 (17:32 +0200)] 
cmake: fix building in unity mode

- Fix sha256 and sha512 duplicate macro names (eg function-like macro Ch
  is now Sha256_Ch and Sha512_Ch).

- Avoid defining short defines like R, S. (eg S is now Sha256_S).

Closes https://github.com/curl/curl/pull/13751

14 months agowinbuild: remove outdated WIN32 defines
Jay Satiro [Wed, 22 May 2024 06:46:13 +0000 (02:46 -0400)] 
winbuild: remove outdated WIN32 defines

- Remove all instances in the makefile of compiler option /DWIN32.

This is a follow-up to e9a7d4a1 which replaced all defined(WIN32) checks
with defined(_WIN32) in the codebase, since only the latter is
automatically defined by all compilers for Windows builds.

Bug: https://github.com/curl/curl/pull/13739#issuecomment-2123937859
Reported-by: Viktor Szakats
Closes https://github.com/curl/curl/pull/13742

14 months agoci: update github/codeql-action digest to 9fdb3e4
renovate[bot] [Mon, 20 May 2024 19:21:13 +0000 (19:21 +0000)] 
ci: update github/codeql-action digest to 9fdb3e4

Closes #13726

14 months agoasyn-thread: avoid using GetAddrInfoExW with impersonation
Pavel P [Tue, 21 May 2024 23:23:34 +0000 (01:23 +0200)] 
asyn-thread: avoid using GetAddrInfoExW with impersonation

Multiple reports suggest that GetAddrInfoExW fails when impersonation is
used. This PR checks if thread is impersonating and avoids using
GetAddrInfoExW api.

Reported-by: Keerthi Timmaraju
Assisted-by: edmcln on github
Fixes #13612
Closes #13738

14 months agotransfer: conn close on paused upload
Stefan Eissing [Wed, 22 May 2024 14:52:16 +0000 (16:52 +0200)] 
transfer: conn close on paused upload

- add 2 variations on test_07_42 which PAUSEs uploads
  and response connections terminating either right away
  or after the 100-continue response
- when detecting the connection being closed in transfer.c
  readwrite_data(), clear ALL send bits in data->req.keepon.
  It no longer makes send to wait for a KEEP_SEND_PAUSE or HOLD.
- in the protocol client writer add the check for incomplete
  response bodies. When an EOS is seen and the length is known,
  check that and fail if bytes are missing.

Reported-by: Sergey Bronnikov
Fixes #13740
Closes #13750

14 months agoCI GHA: add vsftpd to ngtcp2-linux runs
Stefan Eissing [Thu, 23 May 2024 12:58:37 +0000 (14:58 +0200)] 
CI GHA: add vsftpd to ngtcp2-linux runs

- not using HTTP/3, but gnutls does not seem to run
  somewhere else right now

Closes #13760

14 months agoGHA: increase timeout for Cygwin autotools build tests step
Orgad Shaneh [Wed, 22 May 2024 19:37:35 +0000 (22:37 +0300)] 
GHA: increase timeout for Cygwin autotools build tests step

Apparently 10 minutes are not (always) enough:
https://github.com/curl/curl/actions/runs/9197003907/job/25296439556#step:8:1936

Closes #13753

14 months agombedtls: send close-notify on close
Stefan Eissing [Wed, 22 May 2024 08:35:51 +0000 (10:35 +0200)] 
mbedtls: send close-notify on close

- send the TLS close notify message when cloding down
  the mbedtls connection filter
- this is a "least" effort version and, as other TLS filters,
  is lacking a graceful send/receive/timeout for a really
  clean shutdown.

Closes #13745

14 months agombedtls: check version for cipher id
Stefan Eissing [Wed, 22 May 2024 12:44:56 +0000 (14:44 +0200)] 
mbedtls: check version for cipher id

mbedtls_ssl_get_ciphersuite_id_from_ssl() seems to have been added in
mbedtls 3.2.0. Check for that version.

Closes #13749

14 months agocmake: fix building with both md4 and md5 in unity mode
Viktor Szakats [Tue, 21 May 2024 20:31:12 +0000 (22:31 +0200)] 
cmake: fix building with both md4 and md5 in unity mode

Macro and static function names were colliding between
`lib/md4.c` and
`lib/md5.c`.

Fix it by namespacing these symbols.

Seen with a basic macOS build using these options:
`-DCMAKE_UNITY_BUILD=ON -DCURL_USE_SECTRANSP=ON`

Closes #13737

14 months agodocs/Makefile.am: make curl-config.1 install
Daniel Stenberg [Wed, 22 May 2024 06:43:43 +0000 (08:43 +0200)] 
docs/Makefile.am: make curl-config.1 install

on "make install" like it should

Follow-up to 60971d665b9b1df87082

Closes #13741

14 months agoGHA: bump actions/checkout from 4.1.4 to 4.1.6
dependabot[bot] [Mon, 20 May 2024 14:25:03 +0000 (14:25 +0000)] 
GHA: bump actions/checkout from 4.1.4 to 4.1.6

Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/0ad4b8fadaa221de15dcec353f45205ec38ea70b...a5ac7e51b41094c92402da3b24376905380afc29)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

14 months agopytest: add ftp upload tests
Stefan Eissing [Tue, 21 May 2024 10:17:33 +0000 (12:17 +0200)] 
pytest: add ftp upload tests

- refs #13556
- allow anon uploads on vsftpd test server
- add test_30_05 for plain upload of 1k, 100k, 1m
- add test_31_05 for SSL upload of 1k, 100k, 1m
- verify file size and contents

Closes #13734

14 months agotest: add test1546, chunked not last transfer encoding
Stefan Eissing [Tue, 21 May 2024 13:51:51 +0000 (15:51 +0200)] 
test: add test1546, chunked not last transfer encoding

with more than one transfer-encoding, 'chunked' must be the last added
to the writer stack (and therefore the first to decode). RFC 9112, ch.
6.1.

Closes #13736

14 months agotest: add test1484, for HEAD with content
Stefan Eissing [Tue, 21 May 2024 13:22:47 +0000 (15:22 +0200)] 
test: add test1484, for HEAD with content

- test HEAD request with 'Transfer-Encoding:chunked' and
  non-encoded response content
- verifies #13725

Closes #13735

14 months agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 22 May 2024 06:53:19 +0000 (08:53 +0200)] 
RELEASE-NOTES: synced

bump to 8.8.1 for now

14 months ago(lib)curl.rc: set debug flag also for `CURLDEBUG` and `UNITTESTS`
Viktor Szakats [Tue, 21 May 2024 08:34:04 +0000 (10:34 +0200)] 
(lib)curl.rc: set debug flag also for `CURLDEBUG` and `UNITTESTS`

These macros also enable debug features in both libcurl and curl.
Enable `VS_FF_DEBUG` version resource flag when they are set.

Closes #13730

14 months agowinbuild: fix PE version info debug flag
Jay Satiro [Wed, 22 May 2024 05:39:44 +0000 (01:39 -0400)] 
winbuild: fix PE version info debug flag

- Only set PE file flag VS_FF_DEBUG if curl.exe and libcurl.dll were
  built with winbuild option DEBUG=yes which builds with debug info.

VS_FF_DEBUG is a PE flag (Portable Executable file flag - dll, exe, etc)
that indicates the file contains or was built with debug info.

Prior to this change when winbuild was used to build curl, curl.exe
and libcurl.dll always had VS_FF_DEBUG set, regardless of build option
DEBUG=yes/no, due to some bad logic.

Closes https://github.com/curl/curl/pull/13739

14 months agoRELEASE-NOTES: synced curl-8_8_0
Daniel Stenberg [Wed, 22 May 2024 05:51:13 +0000 (07:51 +0200)] 
RELEASE-NOTES: synced

14 months agoTHANKS: add contributors from 8.8.0
Daniel Stenberg [Wed, 22 May 2024 05:54:14 +0000 (07:54 +0200)] 
THANKS: add contributors from 8.8.0

14 months agourl: remove duplicate call to Curl_conncache_remove_conn when pruning
Nathan Moinvaziri [Sun, 19 May 2024 19:33:21 +0000 (12:33 -0700)] 
url: remove duplicate call to Curl_conncache_remove_conn when pruning

- remove unnecessary prunedead struct from prune_dead_connections
- rename extract_if_dead to prune_if_dead for clarity

Closes #13710

14 months agocurl_setup.h: add support for IAR compiler
Joseph Chen [Tue, 21 May 2024 07:30:23 +0000 (15:30 +0800)] 
curl_setup.h: add support for IAR compiler

Closes #13728

14 months agodocs/ECH: typo/clarification
Stephen Farrell [Mon, 20 May 2024 20:53:01 +0000 (21:53 +0100)] 
docs/ECH: typo/clarification

Closes #13727

14 months agohash: delete unused debug function
Viktor Szakats [Tue, 21 May 2024 08:14:17 +0000 (10:14 +0200)] 
hash: delete unused debug function

It had no use in the curl codebase and was also protected by the macro
`AGGRESSIVE_TEST` (renamed in 2020), also with no local reference.

Added in ca6e77083768858aa34207f8c5dce38b3c05336d (2002-11-11)

Closes #13729

14 months agocontent_encoding: reject transfer-encoding after chunked
Stefan Eissing [Tue, 21 May 2024 09:38:47 +0000 (11:38 +0200)] 
content_encoding: reject transfer-encoding after chunked

reject a response that applies a transfer-encoding after a 'chunked'
encoding. RFC 9112 ch. 6.1 required chunked to be the final encoding.

Closes #13733

14 months agohttp: HEAD response body tolerance
Stefan Eissing [Tue, 21 May 2024 09:21:14 +0000 (11:21 +0200)] 
http: HEAD response body tolerance

- as reported in #13725, some servers wrongly send body bytes in
  responses to a HEAD request. This used to be tolerated in curl
  8.4 and before and leads to failed transfers in newer versions.
- restore previous behaviour for HTTP/1.1 and HTTP/2:
  * 1.1: do not add 'Transfer-Encoding' writers from HEAD
    responses. RFC 9112 says they do not apply.
  * 2: when the transfer expects 'no_body', to not report stream
    resets as error when all response headers have been received.

Reported-by: Jeroen Ooms
Fixes #13725
Closes #13732

14 months agotests: fix TFTP test 2305 on Windows
Viktor Szakats [Mon, 20 May 2024 17:13:26 +0000 (19:13 +0200)] 
tests: fix TFTP test 2305 on Windows

Ref: #13692
Closes #13724