]> git.ipfire.org Git - thirdparty/curl.git/log
thirdparty/curl.git
5 weeks agotests/server: drop `memdebug.h`
Viktor Szakats [Sat, 21 Jun 2025 22:56:10 +0000 (00:56 +0200)] 
tests/server: drop `memdebug.h`

It's no longer used in any build configuration.

Follow-up to fffec3d7e90b032a03eee2192e68f8baf913b3b4 #17629

Closes #17700

5 weeks agodocs: mention that the netrc file works without port numbers
Daniel Stenberg [Sat, 21 Jun 2025 21:34:52 +0000 (23:34 +0200)] 
docs: mention that the netrc file works without port numbers

Closes #17698

5 weeks agotests/server/util.c: include netinet/in6.h
Daniel Stenberg [Sat, 21 Jun 2025 15:12:14 +0000 (17:12 +0200)] 
tests/server/util.c: include netinet/in6.h

for sockaddr_in6

Reported-by: Randall S. Becker
Bug: https://curl.se/mail/lib-2025-06/0016.html
Closes #17695

5 weeks agocf: replace the method get_host with query
Stefan Eissing [Thu, 22 May 2025 13:09:58 +0000 (15:09 +0200)] 
cf: replace the method get_host with query

Connection filters had a method `get_host()` which had not really been
documented. Since then, the cf had the `query()` method added. Replace
the separate get_host with query.

Add `CF_QUERY_HOST_PORT` as query to connection filters to retrieve
which remote hostname and port the filter (or its sub-filter) is talking
to. The query is implemented by HTTP and SOCKS filters, all others pass
it through.

Add `Curl_conn_get_current_host()` to retrieve the remote host and port
for a connection. During connect, this will return the host the
connection is talking to right now. Before/After connect, this will
return `conn->host.name`.

This is used by SASL authentication.

Closes #17419

5 weeks agomulti: add dirty bitset
Stefan Eissing [Wed, 18 Jun 2025 10:34:43 +0000 (12:34 +0200)] 
multi: add dirty bitset

Add a bitset `dirty` to the multi handle. The presence of a transfer int
he "dirty" set means: this transfer has something to do ASAP.

"dirty" is set by multiplexing protocols like HTTP/2 and 3 when
encountering response data for another transfer than the current one.
"dirty" is set by protocols that want to be called.

Implementation:

* just an additional `uint_bset` in the multi handle
* `Curl_multi_mark_dirty()` to add a transfer to the dirty set.
* `multi_runsingle()` clears the dirty bit of the transfer at
   start. Without new dirty marks, this empties the set after
   al dirty transfers have been run.
* `multi_timeout()` immediately gives the current time and
   timeout_ms == 0 when dirty transfers are present.
* multi_event: marks all transfers tracked for a socket as dirty.
  Then marks all expired transfers as dirty. Then it runs
  all dirty transfers.

With this mechanism:

* Most uses of `EXPIRE_RUN_NOW` are replaced by `Curl_multi_mark_dirty()`
* `Curl_multi_mark_dirty()` is cheaper than querying if a transfer is
  already dirty or set for timeout. There is no need to check, just do it.
* `data->state.select_bits` is eliminated. We need no longer to
  simulate a poll event to make a transfer run.

Closes #17662

5 weeks agobuild: tidy up `Makefile.inc` use in lib and src
Viktor Szakats [Sat, 21 Jun 2025 09:03:54 +0000 (11:03 +0200)] 
build: tidy up `Makefile.inc` use in lib and src

- cmake: use `CURL_RCFILES` instead of literal.
- cmake: use `LIB_RCFILES` instead of literal.
- cmake: fix comments.
- autotools: use `CURL_RCFILES` in `EXTRA_DIST`.
- autotools: use `LIB_RCFILES` in `EXTRA_DIST`.
- autotools: fix comments.
- autotools: fix indentation.

Closes #17694

5 weeks agoRELEASE-NOTES: synced rc-8_15_0-1
Daniel Stenberg [Sat, 21 Jun 2025 09:10:05 +0000 (11:10 +0200)] 
RELEASE-NOTES: synced

5 weeks agocurl: implement non-blocking STDIN read on Windows
DoI [Tue, 10 Jun 2025 11:13:35 +0000 (23:13 +1200)] 
curl: implement non-blocking STDIN read on Windows

Implements a seperate read thread for STDIN on Windows when curl is run
with -T/--upload-file .

This uses a similar technique to the nmap/ncat project, spawning a
seperate thread which creates a loop-back bound socket, sending STDIN
into this socket, and reading from the other end of said TCP socket in a
non-blocking way in the rest of curl.

Fixes #17451
Closes #17572

5 weeks agotop-complexity: lower max allowed complexity threshold to 90
Daniel Stenberg [Fri, 20 Jun 2025 21:31:33 +0000 (23:31 +0200)] 
top-complexity: lower max allowed complexity threshold to 90

Down from 100. Also make it show all functions with complexity > 65
(down from 70).

Closes #17689

5 weeks agolibssh: fix incorrect return value in myssh_in_AUTH_PKEY_INIT
Joel Depooter [Fri, 20 Jun 2025 22:44:02 +0000 (15:44 -0700)] 
libssh: fix incorrect return value in myssh_in_AUTH_PKEY_INIT

In the unlikely case that no SSH auth methods are supported, the
previous code would return 0 from myssh_in_AUTH_PKEY_INIT. However,
following the code path, it seems like it should be returning SSH_ERROR,
as set in myssh_to_ERROR (through myssh_to_GSSAPI_AUTH,
myssh_to_KEY_AUTH and myssh_to_PASSWD_AUTH).

In actuality, this is unlikely to occur, as the similar code in
myssh_in_AUTHLIST would have already returned an error in this scenario.
However setting a return value and then ignoring it is a bit fishy and
should be documented if this is intended.

I believe this used to return an error, but was changed in the recent
re-factoring of this code.

Closes #17691

5 weeks agotests: drop `BUNDLE_SRC` variable
Viktor Szakats [Sat, 21 Jun 2025 00:22:04 +0000 (02:22 +0200)] 
tests: drop `BUNDLE_SRC` variable

Derive it from `$BUNDLE` instead. autotools seems to be already relying
on `$BUNDLE_SRC` being equal to `$BUNDLE.c`. (I haven't realized this
before aaebb45f58b3f62876a68c17c71ac37d98f1b3bb.)

Also drop redundant `nodist_<target>_SOURCE` lines in tunits and units.

Follow-up to aaebb45f58b3f62876a68c17c71ac37d98f1b3bb #17688
Follow-up to 2c27a67daa1b76859c18d63e4e1f528db05b5e13 #17590

Closes #17692

5 weeks agocmake: omit clang-tidy on internal libs curlu and curltool
Viktor Szakats [Sat, 21 Jun 2025 08:00:22 +0000 (10:00 +0200)] 
cmake: omit clang-tidy on internal libs curlu and curltool

Skip clang-tidy while compiling curlu and curltool internal libraries.
To save about 1 minute per run. These libraries compile the lib and src
sources a second time, with the `UNITTESTS` macro enabled, which makes
tiny difference, for internal use. I figure it's not worth the extra CI
(and local) time because finding extra issues in these passes is
unlikely, and if found, not critical.

autotools also doesn't check curlu and curltool with clang-tidy.

Ref: https://github.com/curl/curl/pull/17680#issuecomment-2991730158
Ref: https://stackoverflow.com/questions/61867616/ignore-certain-files-when-using-clang-tidy
Ref: https://cmake.org/cmake/help/latest/prop_tgt/LANG_CLANG_TIDY.html

Follow-up to fabfa8e4024473035b3e5c3c30c330be726d9bb4 #15825

Closes #17693

5 weeks agovtls: change send/recv signatures of tls backends
Stefan Eissing [Wed, 11 Jun 2025 12:50:15 +0000 (14:50 +0200)] 
vtls: change send/recv signatures of tls backends

Similar to connection filter changes, return a CURLcode and the
read/written amount as size_t *.

Closes #17593

5 weeks agodocs: fix broken link in CODE_REVIEW.md
Fabrício Canedo [Tue, 17 Jun 2025 18:51:57 +0000 (15:51 -0300)] 
docs: fix broken link in CODE_REVIEW.md

In CODE_REVIEW.md file, the link that points to CONTRIBUTE was broken,
so I fixed this issue changing the link from only "CONTRIBUTE.md" to
"https://curl.se/dev/contribute.html".

Closes #17656

5 weeks agodocs: fix broken link in INSTALL.md
Fabrício Canedo [Tue, 17 Jun 2025 17:46:23 +0000 (14:46 -0300)] 
docs: fix broken link in INSTALL.md

In INSTALL.md file, the link that points to CURL-DISABLE was broken,
so I fixed this issue changing the link from only "CURL-DISABLE.md" to
"https://github.com/curl/curl/blob/master/docs/CURL-DISABLE.md".

Fixes https://github.com/curl/curl-www/issues/427
Closes #17654

5 weeks agodocs: fix docs for CURLOPT_PREQUOTE after #17616
Ethan Alker [Fri, 20 Jun 2025 21:50:49 +0000 (17:50 -0400)] 
docs: fix docs for CURLOPT_PREQUOTE after #17616

Closes #17690

5 weeks agotests: make `Makefile.inc` files 80 columns
Daniel Stenberg [Sun, 15 Jun 2025 10:53:43 +0000 (12:53 +0200)] 
tests: make `Makefile.inc` files 80 columns

Since all code fits within that, it is more convenient.

Co-authored-by: Viktor Szakats
Follow-up to 2c27a67daa1b76859c18d63e4e1f528db05b5e13 #17590

Closes #17623

5 weeks agoGHA: update rojopolis/spellcheck-github-actions digest to 35a02ba
renovate[bot] [Fri, 20 Jun 2025 19:55:50 +0000 (19:55 +0000)] 
GHA: update rojopolis/spellcheck-github-actions digest to 35a02ba

Closes #17686

5 weeks agoftplistparser: split parse_unix into sub functions
Daniel Stenberg [Thu, 12 Jun 2025 11:42:28 +0000 (13:42 +0200)] 
ftplistparser: split parse_unix into sub functions

Closes #17608

5 weeks agodocs: fix documentation of connect_only 2
Stefan Eissing [Mon, 16 Jun 2025 07:54:20 +0000 (09:54 +0200)] 
docs: fix documentation of connect_only 2

Setting CURLOPT_CONNECT_ONLY with value 2 is only defined
for WebSocket and the effect on other protocols is undetermined.
That includes the HTTP urls.

Fixes #17621
Reported-by: Kirill Obukhov
Closes #17635

5 weeks agoftp: fix prequotes for a directory in URL
Bartosz Ruszczak [Fri, 14 Mar 2025 20:53:42 +0000 (21:53 +0100)] 
ftp: fix prequotes for a directory in URL

Allow prequotes to be sent after curl has changed the working directory,
just before the listing command if the URL is a directory.

FTP state machine is updated with the new FTP_LIST_PREQUOTE state and
FTP_RETR_LIST_TYPE type.

Test 754 verifies

Fixes #8602
Closes #17616

5 weeks agotest1599: verify a bad FTP password with no user
Daniel Stenberg [Fri, 20 Jun 2025 20:13:42 +0000 (22:13 +0200)] 
test1599: verify a bad FTP password with no user

Verifies the fix from #17659

Closes #17687

5 weeks agourl: fix NULL deref with bad password when no user is provided
z2_ [Wed, 18 Jun 2025 02:27:05 +0000 (04:27 +0200)] 
url: fix NULL deref with bad password when no user is provided

Closes #17659

5 weeks agotests: drop useless "nodist_SOURCES" assignments
Daniel Stenberg [Fri, 20 Jun 2025 20:51:41 +0000 (22:51 +0200)] 
tests: drop useless "nodist_SOURCES" assignments

They cause automake warnings and have no effect.

Closes #17688

5 weeks agoxfer: manage pause bits
Stefan Eissing [Tue, 17 Jun 2025 11:13:26 +0000 (13:13 +0200)] 
xfer: manage pause bits

Concentrate the handling of KEEP_RECV_PAUSE and KEEP_SEND_PAUSE into
common transfer functions. Setting or clearing these bits requires
subsequent actions involving connection events and client reader/writer
notifications. Have it in one place.

Closes #17650

5 weeks agohttp: explicitly ignore parsing errors for Retry-After
Daniel Stenberg [Fri, 20 Jun 2025 11:38:22 +0000 (13:38 +0200)] 
http: explicitly ignore parsing errors for Retry-After

Add (void) and explain in comment.

Closes #17682

5 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Fri, 20 Jun 2025 11:08:55 +0000 (13:08 +0200)] 
RELEASE-NOTES: synced

5 weeks agoconnection: eliminate member `remote_addr`
Stefan Eissing [Mon, 19 May 2025 12:38:22 +0000 (14:38 +0200)] 
connection: eliminate member `remote_addr`

Used to be a pointer set (and cleared) by the socket connection filters
to a struct in their contexts. Instead, add a filter query method to
obtain the pointer when needed.

Closes #17385

5 weeks agoautotools: drop `$top_builddir/src` from src header path
Viktor Szakats [Fri, 20 Jun 2025 07:40:21 +0000 (09:40 +0200)] 
autotools: drop `$top_builddir/src` from src header path

There is no generated header or source in `$top_builddir/src`, that src
would #include. Also syncing with cmake.

Closes #17679

5 weeks agocmake: simplify handling generated `lib1521.c` in libtests
Viktor Szakats [Thu, 19 Jun 2025 18:58:31 +0000 (20:58 +0200)] 
cmake: simplify handling generated `lib1521.c` in libtests

Also unfold line and sync with other tests.

Closes #17676

5 weeks agobuild: sync curlx build variables and script
Viktor Szakats [Thu, 19 Jun 2025 15:14:47 +0000 (17:14 +0200)] 
build: sync curlx build variables and script

Between src and tests, both in autotools and cmake.

Closes #17675

5 weeks agolib530, 582: smoothen out minor differences
Viktor Szakats [Tue, 17 Jun 2025 08:50:43 +0000 (10:50 +0200)] 
lib530, 582: smoothen out minor differences

Fix indentation, casts, a few other minor difference between these tests
that share a common codebase.

Closes #17649

6 weeks agocmake: build `stubgss` library for libtests to match autotools
Viktor Szakats [Tue, 17 Jun 2025 18:10:28 +0000 (20:10 +0200)] 
cmake: build `stubgss` library for libtests to match autotools

Used by test 2056 and 2057, in a way that's Linux- & autotools-specific.
This patch builds it for all Unix, syncing cmake with autotools.

Adapt the two tests to find the library in CMake builds as well.

Tested OK on Linux. (CI does not test this. The corresponding jobs build
in debug mode, while the `LD_PRELOAD` feature is locked to non-debug.)

On macOS it didn't load without building everything for aarch64e arch:
"../bld/tests/libtest/libstubgss.dylib' (mach-o file, but is
an incompatible architecture (have 'arm64', need 'arm64e'))"
With that fixed it still did not load correctly and/or the tests did not
pass. So, for macOS these tests remain disabled.

Also:
- GHA/macos: build for aarch64e. (recognized by Apple clang as of this
  patch. llvm and gcc fall back to aarch64.)

Follow-up to 56d949d31ad182a22bd3bad25b1a902b635d549d #1687

Closes #17653

6 weeks agotest1596: let test pass after year 2036
Bernhard M. Wiedemann [Thu, 19 Jun 2025 07:10:50 +0000 (09:10 +0200)] 
test1596: let test pass after year 2036

Background:
As part of my work on reproducible builds for openSUSE, I check that
software still gives identical build results in the future. The usual
offset is +16 years, because that is how long I expect some software
will be used in some places. This showed up failing tests in our package
build. See https://reproducible-builds.org/ for why this matters.

I tested that it passes on x86_64 in year 2041 and i586 in year 2037.

(but on i586, I got `TESTFAIL: These test cases failed: 31 46 61 1415`)

Closes #17665

6 weeks agoeasy: fix comment-documentation
bch [Wed, 18 Jun 2025 23:54:03 +0000 (16:54 -0700)] 
easy: fix comment-documentation

-> easy_perform() is the INTERNAL interface that performs a blocking[...]

Closes #17664

6 weeks agowarnless: drop parts of the `read`/`write` preprocessor hack (Windows)
Viktor Szakats [Thu, 19 Jun 2025 12:41:34 +0000 (14:41 +0200)] 
warnless: drop parts of the `read`/`write` preprocessor hack (Windows)

The `#undef` hack is no longer necessary after changing the redifitions
to not map back to the original symbols.

This makes it unnecessary to repeat the redefinitions after compiling
`warnless.c` itself (in unity mode).

Which in turns makes it unnecessary to include `warnless.h` again, to
trigger such redefinition.

This also means that `read`/`write` are now redefined on Windows from
the first inclusion of `warnless.h`.

Also:
- tests/server: drop a repeat `warnless.h` include, that is unnecessary
  after this patch.
- tests/unit: drop repeat `warnless.h` include.
- tests/libtest: drop repeat `warnless.h` includes.
- tests/libtest: formatting.

Follow-up to 2f312a14da94068d58b6a39f79f82acd0bf82149 #17619
Follow-up to 84338c4de2d7c798e3c270c9610d51a4ad18a90b #12331
Follow-up to 6239146e931fd3127f6994975a56d1b4884a708a

Closes #17673

6 weeks agotftpd: use `CURLMIN()` macro
Viktor Szakats [Thu, 19 Jun 2025 13:24:16 +0000 (15:24 +0200)] 
tftpd: use `CURLMIN()` macro

Closes #17674

6 weeks agolib: make `CURLX_SET_BINMODE()` and use it
Viktor Szakats [Thu, 19 Jun 2025 12:05:25 +0000 (14:05 +0200)] 
lib: make `CURLX_SET_BINMODE()` and use it

Use it from libtests' `first.c` and thus also from units, and tunits.

Also:
- cmake: drop stray `curltool` lib dependency for units.
- units: stop depending on `src` headers.
- tests/server: drop depending on `src` headers.
  (the remaining one listed in the comments, `tool_xattr.h`, was not
  actually used from servers.)
- tests/server: drop duplicate curlx headers.
  (Except `warnless.h`, which is tricky on Windows.)

Closes #17672

6 weeks agolib: make `curlx_wait_ms()` and use it
Viktor Szakats [Mon, 16 Jun 2025 13:20:17 +0000 (15:20 +0200)] 
lib: make `curlx_wait_ms()` and use it

Move function to curlx/, change all callers.

Also:
- src: replace local implementation.
- tests/client: replace local ad-hoc sleep code.
- tests/libtest: replace local `wait_ms()` implementation.
- lib1531: replace local ad-hoc sleep code.
- tests/server: replace local, simplified copy.
- tests/server: formatting, drop some unused headers.

Closes #17641

6 weeks agotests/server: make all global vars/funcs static
Viktor Szakats [Thu, 19 Jun 2025 10:28:49 +0000 (12:28 +0200)] 
tests/server: make all global vars/funcs static

Also merge `util.h` into `util.c`.

Closes #17671

6 weeks agobuild: tidy up header paths, use srcdir where possible
Viktor Szakats [Sat, 14 Jun 2025 15:06:58 +0000 (17:06 +0200)] 
build: tidy up header paths, use srcdir where possible

To improve readability.

Also add more comments on why each is necessary.

Closes #17630

6 weeks agocmake: use `target_link_options()` when available
Viktor Szakats [Thu, 19 Jun 2025 09:54:47 +0000 (11:54 +0200)] 
cmake: use `target_link_options()` when available

To pass `-municode` to the linker. Before this patch we passed this via
`target_link_libraries()` which is designed to pass libraries. Keep
using it for old CMake versions, where no better alternative existed.

https://cmake.org/cmake/help/latest/command/target_link_options.html

Also:
- also pass `-municode` as `PRIVATE` for old cmake versions.
  (it should not make a difference because no target depends on the curl
  tool, but this seem to be the modern, non-ambiguous syntax.)
- unfold a bunch of split lines for greppability of `add_library()` and
  `add_executable()` commands.
- quote a string.

Closes #17670

6 weeks agocmake: sync `target_link_libraries()` order in tests more
Viktor Szakats [Thu, 19 Jun 2025 09:52:50 +0000 (11:52 +0200)] 
cmake: sync `target_link_libraries()` order in tests more

Closes #17669

6 weeks agotests/client: drop autotools logic no longer necessary
Viktor Szakats [Thu, 19 Jun 2025 09:28:39 +0000 (11:28 +0200)] 
tests/client: drop autotools logic no longer necessary

Not necessary now that test clients #include `curl_setup.h`.

Follow-up to 539d11297d36cff0bca7dda1f217186f060d577d #17642

Closes #17668

6 weeks agocmake: sync tests scripts by using the variable `BUNDLE`
Viktor Szakats [Thu, 19 Jun 2025 08:22:27 +0000 (10:22 +0200)] 
cmake: sync tests scripts by using the variable `BUNDLE`

To reduce the diff between tests CMakeFiles.txt, and syncing with
autotools, which already used the `BUNDLE` variable like this.

Also:
- fold lines that went over 132 chars after this change.
- autotools: sync order of macros with cmake.

Closes #17667

6 weeks agoautotools: simplify configuration in tests, examples
Viktor Szakats [Wed, 18 Jun 2025 08:33:15 +0000 (10:33 +0200)] 
autotools: simplify configuration in tests, examples

- GHA/windows: make a mingw autotools build static only.
- GHA/windows: fix a CI script issue with the build above.
- src: fix to pass `LIBCURL_PC_LIBS_PRIVATE` instead of `LINKFLAGS`.
  This makes the libs propagate to tunits, making the local hack there
  unnecessary. `LINKFLAGS` had this single use in the repo, and it was
  empty in local tests.
- tests: drop passing redundant `LIBCURL_PC_LDFLAGS_PRIVATE`.
- tests: drop redundant target name from config variables.
- examples, tests/client: drop `LIBDIR` temp variables with single uses.
- examples, tests: formatting to sync `Makefile.am` scripts with each
  other.

Closes #17661

6 weeks agotests/client: use `curl_mfprintf()`
Viktor Szakats [Tue, 17 Jun 2025 17:57:28 +0000 (19:57 +0200)] 
tests/client: use `curl_mfprintf()`

Replacing `fprintf()`. `curl_mfprintf()` is a public libcurl API.

Following the same change made for libtests.

Follow-up to 255aac56f9773d7c138816bfe0390293f7da33a5 #17253

Closes #17651

6 weeks agobuild: sync build scripts between client/libtest
Viktor Szakats [Wed, 18 Jun 2025 08:26:42 +0000 (10:26 +0200)] 
build: sync build scripts between client/libtest

Closes #17660

6 weeks agocmake: move `OUTPUT` argument in the `add_custom_command()` line
Viktor Szakats [Tue, 17 Jun 2025 19:08:02 +0000 (21:08 +0200)] 
cmake: move `OUTPUT` argument in the `add_custom_command()` line

For greppability.

Closes #17658

6 weeks agocmake: drop redundant macro from test clients
Viktor Szakats [Tue, 17 Jun 2025 18:58:35 +0000 (20:58 +0200)] 
cmake: drop redundant macro from test clients

Not necessary now that test clients #include `curl_setup.h`.

Follow-up to 539d11297d36cff0bca7dda1f217186f060d577d #17642

Closes #17657

6 weeks agocmake: drop passing redundant `CURL_STATICLIB` in examples and clients
Viktor Szakats [Tue, 17 Jun 2025 18:30:06 +0000 (20:30 +0200)] 
cmake: drop passing redundant `CURL_STATICLIB` in examples and clients

It's set implicitly via libcurl.

Closes #17655

6 weeks agotests/http/clients: move to tests/client
Viktor Szakats [Mon, 16 Jun 2025 10:42:19 +0000 (12:42 +0200)] 
tests/http/clients: move to tests/client

To have all the tests binaries directly under the tests directory.

There seems to be no issue adding non-http test clients to this subdir.

Closes #17637

6 weeks agoGHA: update rojopolis/spellcheck-github-actions digest to 63aba94
renovate[bot] [Mon, 16 Jun 2025 20:27:00 +0000 (20:27 +0000)] 
GHA: update rojopolis/spellcheck-github-actions digest to 63aba94

Closes #17643

6 weeks agotests: make sshserver less verbose
Stefan Eissing [Tue, 17 Jun 2025 06:53:32 +0000 (08:53 +0200)] 
tests: make sshserver less verbose

Only display top of key files in verbose mode.

Follow-up to 89f306ae40b678bd91595ba41fe5f9d5ed374897 #16781

Closes #17647

6 weeks agomulti: do no expire a blocked transfer
Stefan Eissing [Mon, 16 Jun 2025 11:40:15 +0000 (13:40 +0200)] 
multi: do no expire a blocked transfer

When checking to expire a transfer with input data pending, also assess
the blocked status and do not EXPIRE_RUN_NOW a transfer that is blocked
on READ/WRITE.

Follow-up to 62349e45a818e50b5cdcd017c149f9dc87fce9fe #17636

Closes #17639

6 weeks agohttp2: do not delay RST send on aborted transfer
Stefan Eissing [Mon, 16 Jun 2025 11:05:20 +0000 (13:05 +0200)] 
http2: do not delay RST send on aborted transfer

When a transfer is done prematurely, a RST is generated to the server,
but was not send right away due to send buffering.

Flush the send buffer in a best effort when transfer is done.

Reported-by: Michael Kaufmann
Fixes #17611
Closes #17638

6 weeks agotests/http/clients: drop hack and use `curl_setup.h` again
Viktor Szakats [Mon, 16 Jun 2025 14:04:22 +0000 (16:04 +0200)] 
tests/http/clients: drop hack and use `curl_setup.h` again

Sync build properties with libtests.

This allows accessing macros from `curl_config.h`, for feature flags.
Smoothens out platform bumps, allowing to drop local replicas from
client sources. It enables using Windows wrappers, e.g. for `fopen()`.

Also fix client sources to use `curl_mfprintf()` where curl format
strings are used. (To avoid build failure with older mingw-w64, e.g.
6.4.0 in CI.)

Follow-up to 739c09c8a4111b3ee00b0004f5a3f67e00ba3aeb #17627

Closes #17642

6 weeks agoGHA/windows: avoid libtool wrapper for `tunits`
Viktor Szakats [Mon, 16 Jun 2025 11:54:28 +0000 (13:54 +0200)] 
GHA/windows: avoid libtool wrapper for `tunits`

To sync it with other test binaries.

Closes #17640

6 weeks agomulti: fix polling with pending input
Stefan Eissing [Mon, 16 Jun 2025 10:19:52 +0000 (12:19 +0200)] 
multi: fix polling with pending input

When multi creates the pollset of a transfer, it checks now if
a connection (FIRST/SECONDARY) socket waits on POLLIN and has input data
pending in filters (relevant to OpenSSL's new read ahead). If so, it
triggers a timeout on the transfer via EXPIRE_RUN_NOW.

This fixes sporadic stalls in test 988 when running event based.

Closes #17636

6 weeks agotests: bundle http clients, de-dupe, enable for MSVC
Viktor Szakats [Sun, 15 Jun 2025 12:48:46 +0000 (14:48 +0200)] 
tests: bundle http clients, de-dupe, enable for MSVC

To make building the http client tests faster, with no duplication, by
using the build method that other test binaries already use.

The difference compared to other tests is that these don't use internal
libcurl headers or code. With the exception of `curl_config.h`, for
a feature macro.

Before this patch, these tests were built like examples.

Also:
- de-duplicate code and give unique names to colliding symbols.
- add local getopt implementation and enable all code for MSVC.
  Adapted for curl via Public Domain source:
  https://github.com/skeeto/getopt/blob/4e618ef782dc80b2cf0307ea74b68e6a62b025de/getopt.h
Credits-to: Christopher Wellons
  Thanks!

Closes #17627

6 weeks agowindows: fixup `fopen()` in `CURLDEBUG` builds
Viktor Szakats [Mon, 16 Jun 2025 08:16:17 +0000 (10:16 +0200)] 
windows: fixup `fopen()` in `CURLDEBUG` builds

Introduce an immutable `CURL_FOPEN()` macro to store the `fopen()`
mapping on Windows. Then use that instead `(fopen)` from `memdebug.c`.
It makes CURLDEBUG builds use the correct `fopen` wrapper on Windows.
This macro is only defined on Windows, as of this patch.

This is necessary after cde81e4398f2944e60c73f38823dafa305a5a2f4,
which no longer applies the default `fopen()` override to `memdebug.c`.

Also:
- curl_setup.h: de-dupe, simplify Windows file I/O function overrides.
- curl_memory.h: fix to reset `fopen` to `curlx_win32_fopen()` on
  Windows. Before this patch it reset it to stock `fopen()`.

Follow-up to cde81e4398f2944e60c73f38823dafa305a5a2f4 #17631

Closes #16747

6 weeks agomemdebug: include in unity batch
Viktor Szakats [Mon, 16 Jun 2025 00:07:31 +0000 (02:07 +0200)] 
memdebug: include in unity batch

Before this patch `memdebug.c` was compiled as a separate source in
unity builds. This was necessary because `memdebug.c` failed to compile
if `memdebug.h` was included before it, in `CURLDEBUG` mode. This patch
fixes this issue and allows to compile `memdebug.c` as part of the unity
source batch. This removes an exception and makes builds perform a notch
better.

- introduce `CURL_SCLOSE()` macro as an immutable synonym of `sclose()`.
- memdebug: replace `sclose()` reference with `CURL_SCLOSE()` to compile
  as expected when `sclose()` is overridden by `memdebug.h`.
- memdebug: make it not break when including `memdebug.h` before it in
  `CURLDEBUG` mode. Do this by calling low-level functions as
  `(function)`.
- autotools, cmake: drop memdebug exception, include it like any other
  source file. This is now possible because `memdebug.c` doesn't break
  if `memdebug.h` was included before it, in `CURLDEBUG` builds.
- mk-unity: drop `--exclude` option. No longer used after this patch.
- drop `MEMDEBUG_NODEFINES` macro hack. No longer necessary.

Ref: #16747
Closes #16746
Closes #16738
Closes #17631

6 weeks agomk-unity: include the embedded source name in the output
Viktor Szakats [Mon, 16 Jun 2025 06:57:45 +0000 (08:57 +0200)] 
mk-unity: include the embedded source name in the output

Closes #17634

6 weeks agotests/libtest: merge `MEMPTR` into `UTILS`
Viktor Szakats [Mon, 16 Jun 2025 06:51:52 +0000 (08:51 +0200)] 
tests/libtest: merge `MEMPTR` into `UTILS`

Follow-up to ee066732963b7051a8d2fd56fa91a4ce0b444bd5 #17628

Closes #17633

6 weeks agoautotools: drop no longer necessary `--srcdir` unity options
Viktor Szakats [Mon, 16 Jun 2025 00:23:27 +0000 (02:23 +0200)] 
autotools: drop no longer necessary `--srcdir` unity options

Follow-up to ee066732963b7051a8d2fd56fa91a4ce0b444bd5 #17628

Closes #17632

6 weeks agobuild: drop unused variables in tests
Viktor Szakats [Sun, 15 Jun 2025 23:47:28 +0000 (01:47 +0200)] 
build: drop unused variables in tests

Follow-up to fffec3d7e90b032a03eee2192e68f8baf913b3b4 #17629
Follow-up to ee066732963b7051a8d2fd56fa91a4ce0b444bd5 #17628

6 weeks agotests/server: drop memdebug option
Viktor Szakats [Sun, 15 Jun 2025 21:28:08 +0000 (23:28 +0200)] 
tests/server: drop memdebug option

I added it just in case when removing enabled-by-default memdebug
from test servers. Apparently it broke after recent changes. It's
probably not a widely used feature and does not seem to be worth fixing.
It creates odd dependencies as the error message indicates:

```
[28/54] Building C object tests/server/CMakeFiles/servers.dir/__/__/lib/memdebug.c.obj
FAILED: tests/server/CMakeFiles/servers.dir/__/__/lib/memdebug.c.obj
[...]
lib/memdebug.c: In function 'curl_dbg_log':
lib/memdebug.c:465:12: error: implicit declaration of function 'mvsnprintf'; did you mean 'vsnprintf'? [-Wimplicit-function-declaration]
  465 |   nchars = mvsnprintf(buf, sizeof(buf), format, ap);
      |            ^~~~~~~~~~
      |            vsnprintf
lib/memdebug.c:465:12: warning: nested extern declaration of 'mvsnprintf' [-Wnested-externs]
```

This patch is dropping these build options:
- cmake: `ENABLE_SERVER_DEBUG`
- autotools: `--enable-server-debug` / `--disable-server-debug`

Follow-up to a16485a42ea5dabe6c327179a1678ad04d1c6b2f #16705

Closes #17629

6 weeks agobuild: sync tests unity builds between cmake and autotools
Viktor Szakats [Sun, 15 Jun 2025 19:54:20 +0000 (21:54 +0200)] 
build: sync tests unity builds between cmake and autotools

Instead of relying on CMake's built-in unity feature, use `mk-unity.pl`,
as already done with autotools. It simplified the build, shortens logs
and makes debugging easier because of the fewer build variations.
It also allows testing / fixing with cmake and those automatically apply
to autotools builds too. cmake builds can be much-much faster, esp.
when working the builds themselves.

It also enables "unity" in old cmake versions. Basically every test
target is a single generated .c source.

Also:
- drop a `lib` unity workaround for libtests with autotools after fixing
  the issue in libtests itself. It drops a few exceptions and makes
  libcurl build faster (in autotools unity).
- fix another `lib` autotools unity issue and drop the workaround for it
  from `mk-unity.pl`. `srcdir` was missing from the header path.
- simplify `mk-unity.pl` command-lines, drop exclusions.

Follow-up to 2c27a67daa1b76859c18d63e4e1f528db05b5e13 #17590

Closes #17628

6 weeks agobuild: drop `HAVE_SYS_SOCKET_H` and `HAVE_SYS_TIME_H` macros
Viktor Szakats [Wed, 11 Jun 2025 05:32:16 +0000 (07:32 +0200)] 
build: drop `HAVE_SYS_SOCKET_H` and `HAVE_SYS_TIME_H` macros

Both are available with well-known conditions, under non-Windows, and
`curl/curl.h` already uses them. `sys/time.h` is also necessary for
mingw-w64 for `gettimeofday()`.

Follow-up to 56d5982312f8360b020738cbfeefe7990991550e #17522

Closes #17581

6 weeks agotests: tidy up server main function, whitespace and README
Viktor Szakats [Sun, 15 Jun 2025 11:21:22 +0000 (13:21 +0200)] 
tests: tidy up server main function, whitespace and README

Follow-up to 2c27a67daa1b76859c18d63e4e1f528db05b5e13 #17590

Closes #17625

6 weeks agotidy-up: two comments
Viktor Szakats [Sat, 14 Jun 2025 23:21:14 +0000 (01:21 +0200)] 
tidy-up: two comments

Follow-up to 2c27a67daa1b76859c18d63e4e1f528db05b5e13 #17590
Follow-up to df1ff17f88a623b12c13ffd893ca4ac47c5f04d1 #17418

Closes #17624

6 weeks agodigest: fix build with disabled digest auth
Stefan Eissing [Fri, 13 Jun 2025 11:29:17 +0000 (13:29 +0200)] 
digest: fix build with disabled digest auth

Fix building with `--disable-digest-auth`. Make test cases run in such
a build. Add such a build to our CI jobs.

Reported-by: Tristan Perrault
Fixes #17612
Closes #17614

6 weeks agolib: avoid reusing unclean connection
Stefan Eissing [Fri, 13 Jun 2025 07:43:40 +0000 (09:43 +0200)] 
lib: avoid reusing unclean connection

When `curl_easy_cleanup()` is invoked while still being part
of a multi handle, the code will auto-remove it. But since the
connection was detached first, the code in
`curl_multi_remove_handle()` that invalidates dirty connections
did not bite.

Attach the connection *after* the possible remove from a multi
handle, so that connection reuse can be prevented.

Add test753 to reproduce and verify the fix. This required adding
the new debug env var CURL_FTP_PWD_STOP, to have a transfer return
from multi_perform() early with a connection that does not show
and pending input.

Reported-by: Brian Harris
Fixes https://github.com/curl/curl/issues/17578
Closes https://github.com/curl/curl/pull/17607

6 weeks agoopenssl: Fix openssl engines
Theodore A. Roth [Thu, 12 Jun 2025 17:36:02 +0000 (11:36 -0600)] 
openssl: Fix openssl engines

- Return CURLE_OK if the engine successfully loaded.

Prior to this change:

When loading an openssl engine, the result code is initialized to
CURLE_SSL_ENGINE_NOTFOUND, but is never set to CURLE_OK when the engine
was successfully loaded. This causes curl to error out, falsely stating
engine not found when it actually was.

Broken since f2ce6c46 (precedes 8.14.0) which added support for using
engines and providers at the same time.

Fixes https://github.com/curl/curl/issues/17617
Closes https://github.com/curl/curl/pull/17618

6 weeks agowarnless: replace `read()`/`write()` wrapper functions with macros (Windows)
Viktor Szakats [Sat, 14 Jun 2025 10:43:20 +0000 (12:43 +0200)] 
warnless: replace `read()`/`write()` wrapper functions with macros (Windows)

Map them to `_read()`/`_write()` (with underscore) to avoid recursive
mapping and to use the non-compatibility naming on Windows.

https://learn.microsoft.com/cpp/c-runtime-library/reference/read
https://learn.microsoft.com/cpp/c-runtime-library/reference/write

Follow-up to 6239146e931fd3127f6994975a56d1b4884a708a

Closes #17619

6 weeks agotidy-up: update deprecated status of some symbols/options
Viktor Szakats [Thu, 12 Jun 2025 10:09:09 +0000 (12:09 +0200)] 
tidy-up: update deprecated status of some symbols/options

`CURLOPT_SSL_FALSESTART` / `--false-start`, Secure Transport, BearSSL,
GSKit, MesaLink, NSS.

Follow-up to 1e2e808defe6850295baa002d07cde9a129ec791 #17595
Follow-up to 08a3e8e19a59d1530bfb208e187ac7c34c978dfd #16677

Closes #17605

6 weeks agolib: remove superfluous setopt break for CURLOPT_SSL_FALSESTART
Daniel McCarney [Fri, 13 Jun 2025 14:33:51 +0000 (10:33 -0400)] 
lib: remove superfluous setopt break for CURLOPT_SSL_FALSESTART

Reported-by: 4lan.m
Ref: https://github.com/curl/curl/commit/1e2e808defe6850295baa002d07cde9a129ec791#r159957160
Follow-up to 1e2e808defe6850295baa002d07cde9a129ec791 #17595

Closes #17615

6 weeks agoGHA/windows: enable H3 in the MSVC OpenSSL job
Viktor Szakats [Tue, 10 Jun 2025 15:21:56 +0000 (17:21 +0200)] 
GHA/windows: enable H3 in the MSVC OpenSSL job

Requires windows-runner 20250602.1 for ngtcp2 1.13.0.

Follow-up to c129d0b1a8769b352a3cf906fa0d3919b4a8ea3d #17561
Ref: https://github.com/curl/curl/pull/17561#issuecomment-2959583138

Closes #17577

6 weeks agoschannel: allow partial chains for manual peer verification
Rod Widdowson [Wed, 21 May 2025 19:10:36 +0000 (20:10 +0100)] 
schannel: allow partial chains for manual peer verification

- Align --cacert behaviour with OpenSSL and LibreSSL.

This changes the default behavior of Schannel manual certificate
verification, which is used when the user provides their own CA
certificates for verification, to accept partial chains. In other words,
the user may provide an intermediate certificate without having to
provide the root CA.

Win8/Server2012 widened the PKIX chain traversal API to allow
certificate traversal to terminate at an intermediate.

This behaviour (terminate at the fist matching intermediate) is the
default for LibreSSL and OpenSSL (with OpenSSL allowing control via
CURLSSLOPT_NO_PARTIALCHAIN).

This change uses the new API if it is available, and also allows the
behaviour to revert legacy if CURLSSLOPT_NO_PARTIALCHAIN is present.

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

6 weeks agocmake: make docs depend on support files
Viktor Szakats [Sat, 14 Jun 2025 13:40:04 +0000 (15:40 +0200)] 
cmake: make docs depend on support files

As in autotools.

Closes #17620

6 weeks agotests: always make bundles, adapt build and tests
Viktor Szakats [Wed, 11 Jun 2025 09:31:14 +0000 (11:31 +0200)] 
tests: always make bundles, adapt build and tests

Make test bundles the default. Drop non-bundle build mode.
Also do all the optimizations and tidy-ups this allows, simpler builds,
less bundle exceptions, streamlined build mechanics.

Also rework the init/deinit macro magic for unit tests. The new method
allows using unique init/deinit function names, and calling them with
arguments. This is in turn makes it possible to reduce the use of global
variables.

Note this drop existing build options `-DCURL_TEST_BUNDLES=` from cmake
and `--enable-test-bundles` / `--disable-test-bundles` from autotools.

Also:
- rename test entry functions to have unique names: `test_<testname>`
  This removes the last exception that was handled in the generator.
- fix `make dist` to not miss test sources with test bundles enabled.
- sync and merge `tests/mk-bundle.pl` into `scripts/mk-unity.pl`.
- mk-unity.pl: add `--embed` option and use it when `CURL_CLANG_TIDY=ON`
  to ensure that `clang-tidy` does not miss external test C sources.
  (because `clang-tidy` ignores code that's #included.)
- tests/unit: drop no-op setup/stop functions.
- tests: reduce symbol scopes, global macros, other fixes and tidy-ups.
- tool1621: fix to run, also fix it to pass.
- sockfilt: fix Windows compiler warning in certain unity include order,
  by explicitly including `warnless.h`.

Follow-up to 6897aeb10561b55c6659866fc0518dd67422f267 #17468

Closes #17590

6 weeks agoopenssl: fix handling of buffered data
Stefan Eissing [Thu, 12 Jun 2025 06:45:20 +0000 (08:45 +0200)] 
openssl: fix handling of buffered data

`SSL_pending()` only checks if the *current* TLS packet has more data.
There might be more data in SSL's buffers.

`SSL_has_pending()` only checks if there is data in buffers, but does
*not* check if there is a complete TLS packet that can be decoded.

If we only check the first, we will poll on socket events without having
processed all data and may stall. If we only check the second, we would
busy loop without SSL_read() ever giving something.

Add the flag `connssl->input_pending` that is set on incoming data in
the BIO receive. Clear the flag when encountering a CURLE_AGAIN on
the filters receive (via SSL_read()) or see an EOF.

Ref: #17596
Closes #17601

7 weeks agohttp: split http_header into sub functions
Daniel Stenberg [Thu, 12 Jun 2025 09:36:14 +0000 (11:36 +0200)] 
http: split http_header into sub functions

Closes #17603

7 weeks agoasyn-thrdd: free the previous name before strdup'ing the new
Daniel Stenberg [Thu, 12 Jun 2025 09:46:51 +0000 (11:46 +0200)] 
asyn-thrdd: free the previous name before strdup'ing the new

Fixes #17602
Reported-by: hiimmat on github
Closes #17604

7 weeks agoGHA/non-native: skip test 2707 instead of all WebSocket tests on OpenBSD
Viktor Szakats [Wed, 11 Jun 2025 09:17:55 +0000 (11:17 +0200)] 
GHA/non-native: skip test 2707 instead of all WebSocket tests on OpenBSD

Narrowing down the test which may be causing the flaky 6-minute long
delays and CI failures.

Suggested-by: Calvin Ruocco
Ref: https://github.com/curl/curl/pull/17562#issuecomment-2961629713

Follow-up to 05db18e0541851a6fa71fb61e9c37bba4f56bce8 #17562
Follow-up to d3594be6531df3d5eafcdd09f84ad9dee1777028 #17136

Closes #17588

7 weeks agotls: remove Curl_ssl false_start
Daniel McCarney [Wed, 11 Jun 2025 12:59:11 +0000 (08:59 -0400)] 
tls: remove Curl_ssl false_start

The secure transport vTLS backend was the only Curl_ssl struct instance
that populated the false_start field. Since its removed, we can now
remove that field entirely. This was a protocol feature specific to TLS
1.2 that has been replaced by the more widely adopted TLS 1.3 early data
mechanisms.

--false-start is now deprecated

Closes #17595

7 weeks agotests/libtest: simplify Makefile.inc
Daniel Stenberg [Wed, 11 Jun 2025 12:30:22 +0000 (14:30 +0200)] 
tests/libtest: simplify Makefile.inc

Remove all custom LDADD lines

Plus: a few minor tidy-ups in libtest code.

Closes #17594

7 weeks agohttp_ntlm: remove unreachable code
Daniel Stenberg [Wed, 11 Jun 2025 09:14:15 +0000 (11:14 +0200)] 
http_ntlm: remove unreachable code

Since the code now checks for NULL and returns before this point, 'ntlm'
cannot be NULL at this point in the code. Pointed out by Coverity.

Follow-up to 55865207457ba860956aea7a31a

Closes #17587

7 weeks agolibtests: stop building the sames source multiple times
Viktor Szakats [Wed, 11 Jun 2025 14:28:42 +0000 (16:28 +0200)] 
libtests: stop building the sames source multiple times

After this patch there is no more double/multiple compile of the same
libtest source under a different libtest ID. Each libtest is compiled
once, and changing behavior at runtime based on test ID.

- drop recently added physical clones for two prevously multi-compiled
  tests:
  - merge lib587 into lib554 again, branch at runtime.
  - merge lib645 into lib643 again, branch at runtime.

- replace existing dynamic branching to use `testnum` instead of
  a manually rolled `testno` based on an extra command-line argument.
  lib1571, lib1576.

- mk-bundle.pl: stop defining `LIB*` macros. No longer used.

- libtests: drop all `LIB*_C` guards.

- Make these tests branch at runtime, stop building copies:
  - lib585, based on lib500
  - lib565, based on lib510
  - lib529, based on lib525
  - lib527, lib532, based on lib526
  - lib545, based on lib544
  - lib548, based on lib547
  - lib696, based on lib556
  - lib584, based on lib589
  - lib1539, based on lib1514
  - lib1543, based on lib1518
  - lib1917, based on lib1916
  - lib1946, based on lib1940
  - lib671, 672, 673, based on lib670

Follow-up to 02dd471bbf8e04fc595ad0f28c965c278ffcefd0 #17591
Follow-up to 6897aeb10561b55c6659866fc0518dd67422f267 #17468

Closes #17598

7 weeks agolibtests: make test 1503,1504,1505 use the 1502 binary
Daniel Stenberg [Wed, 11 Jun 2025 09:58:27 +0000 (11:58 +0200)] 
libtests: make test 1503,1504,1505 use the 1502 binary

Adjust the differences at runtime instead of build-time, to avoid
extra buillds.

Set the `CURL_TESTNUM` env variable to pass test numbers to tests.

Make libtest/first.c use that env variable to set the `testnum` global
variable to allow tests to differ based on which test that runs it.

Closes #17591

7 weeks agoopenssl: enable readahead
Edwin Török [Fri, 6 Jun 2025 15:23:29 +0000 (16:23 +0100)] 
openssl: enable readahead

Speeds up TLS operations up to ~%13.

Closes #17548

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
7 weeks agolib: unify recv/send function signatures
Stefan Eissing [Wed, 11 Jun 2025 08:18:15 +0000 (10:18 +0200)] 
lib: unify recv/send function signatures

cfilter/conn: change send/recv function signatures. Unify the
calling/return conventions in our send/receive handling.

Curl_conn_recv(), adjust pnread type

Parameter `pnread` was a `ssize_t *`, but `size_t *` is better since the
function returns any error in its `CURLcode` return value.

Closes #17546

7 weeks agotidy-up: drop BearSSL and Secure Transport reference remains
Viktor Szakats [Wed, 11 Jun 2025 06:16:33 +0000 (08:16 +0200)] 
tidy-up: drop BearSSL and Secure Transport reference remains

Follow-up to 08a3e8e19a59d1530bfb208e187ac7c34c978dfd #16677

Closes #17582

7 weeks agoopenssl: error on SSL_ERROR_SYSCALL
Stefan Eissing [Wed, 4 Jun 2025 09:12:28 +0000 (11:12 +0200)] 
openssl: error on SSL_ERROR_SYSCALL

Convert the debug-only handling of SSL_ERROR_SYSCALL so that it is
enabled in all builds with openssl. This should not make a difference in
supported OpenSSL versions, but if whatever version or fork we link
against *does* return SSL_ERROR_SYSCALL, handle this as a fatal error.

Fixes #17471
Reported-by: Michael Kaufmann
Closes #17531

7 weeks agohttp_ntlm: protect against null deref
Daniel Stenberg [Wed, 11 Jun 2025 07:33:04 +0000 (09:33 +0200)] 
http_ntlm: protect against null deref

Closes #17585

7 weeks agopytest test_07_70, weaken early data check
Stefan Eissing [Tue, 10 Jun 2025 15:14:00 +0000 (17:14 +0200)] 
pytest test_07_70, weaken early data check

Since the amount of early data sent in the upload test_07_70 varies
much with how fast the server respondes and completes the handshake,
assert that we did sent at least *some* early data instead of relying
on a specific amount.

Closes #17575

7 weeks agoRELEASE-NOTES: synced
Daniel Stenberg [Wed, 11 Jun 2025 07:25:01 +0000 (09:25 +0200)] 
RELEASE-NOTES: synced

Bump to 8.15.0

7 weeks agoRELEASE-PROCEDURE.md: update docs/VERSIONS
Daniel Stenberg [Wed, 11 Jun 2025 06:56:12 +0000 (08:56 +0200)] 
RELEASE-PROCEDURE.md: update docs/VERSIONS

Add it as an item to fix in each release

Closes #17584

7 weeks agoVERSIONS.md: update
Orgad Shaneh [Wed, 11 Jun 2025 06:38:59 +0000 (09:38 +0300)] 
VERSIONS.md: update

Closes #17583

7 weeks agourl: fix connection lifetime checks
Stefan Eissing [Tue, 10 Jun 2025 08:11:40 +0000 (10:11 +0200)] 
url: fix connection lifetime checks

The checks for a connection being "too long idle" or "too old" where
rounding down the elapsed time to seconds before comparing to the
configured max values. This caused connections to be reused for up to
999ms longer than intended.

Change the compares to scale the configured seconds up to ms, so
connection will properly be "too old" 1 ms after the coonfigured values.

Fixes sporadic failures of test1542 on platforms where "sleep(2)"
returnes before 2 full seconds on the internal clock where passed.

Reported-by: Christian Weisgerber
URL: https://curl.se/mail/lib-2025-06/0004.html
Closes #17571