Commit Graph

35764 Commits

Author SHA1 Message Date
Ethan Alker
73ad54f7b0
docs: fix docs for CURLOPT_PREQUOTE after #17616
Closes #17690
2025-06-21 10:26:41 +02:00
Daniel Stenberg
0d647a8a76
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 2c27a67daa #17590

Closes #17623
2025-06-21 01:31:57 +02:00
renovate[bot]
657e0240f5
GHA: update rojopolis/spellcheck-github-actions digest to 35a02ba
Closes #17686
2025-06-20 23:36:07 +02:00
Daniel Stenberg
3b4e84c44f
ftplistparser: split parse_unix into sub functions
Closes #17608
2025-06-20 23:30:04 +02:00
Stefan Eissing
4a686ee6b0
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
2025-06-20 23:24:37 +02:00
Bartosz Ruszczak
fdf50d64b8
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
2025-06-20 23:22:24 +02:00
Daniel Stenberg
149d436457
test1599: verify a bad FTP password with no user
Verifies the fix from #17659

Closes #17687
2025-06-20 23:14:14 +02:00
z2_
f9548bf20e
url: fix NULL deref with bad password when no user is provided
Closes #17659
2025-06-20 23:13:49 +02:00
Daniel Stenberg
aaebb45f58
tests: drop useless "nodist_SOURCES" assignments
They cause automake warnings and have no effect.

Closes #17688
2025-06-20 23:12:51 +02:00
Stefan Eissing
0d70dfb79b
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
2025-06-20 22:59:08 +02:00
Daniel Stenberg
e60103cbb8
http: explicitly ignore parsing errors for Retry-After
Add (void) and explain in comment.

Closes #17682
2025-06-20 21:54:27 +02:00
Daniel Stenberg
b2eb444922
RELEASE-NOTES: synced 2025-06-20 13:08:55 +02:00
Stefan Eissing
63381421f5
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
2025-06-20 12:54:36 +02:00
Viktor Szakats
8d270732b6
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
2025-06-20 10:15:59 +02:00
Viktor Szakats
726e7bba4c
cmake: simplify handling generated lib1521.c in libtests
Also unfold line and sync with other tests.

Closes #17676
2025-06-20 08:59:01 +02:00
Viktor Szakats
11c211c33c
build: sync curlx build variables and script
Between src and tests, both in autotools and cmake.

Closes #17675
2025-06-19 20:56:20 +02:00
Viktor Szakats
614febca51
lib530, 582: smoothen out minor differences
Fix indentation, casts, a few other minor difference between these tests
that share a common codebase.

Closes #17649
2025-06-19 20:53:30 +02:00
Viktor Szakats
171b623759
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 56d949d31a #1687

Closes #17653
2025-06-19 20:41:54 +02:00
Bernhard M. Wiedemann
879b6075a1
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
2025-06-19 19:50:09 +02:00
bch
9edd968792
easy: fix comment-documentation
-> easy_perform() is the INTERNAL interface that performs a blocking[...]

Closes #17664
2025-06-19 19:50:09 +02:00
Viktor Szakats
0042770157
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 2f312a14da #17619
Follow-up to 84338c4de2 #12331
Follow-up to 6239146e93

Closes #17673
2025-06-19 17:09:43 +02:00
Viktor Szakats
6c1a7541fb
tftpd: use CURLMIN() macro
Closes #17674
2025-06-19 15:57:37 +02:00
Viktor Szakats
916f241f2f
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
2025-06-19 15:57:37 +02:00
Viktor Szakats
35d0c047ce
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
2025-06-19 15:57:37 +02:00
Viktor Szakats
9fc05357ef
tests/server: make all global vars/funcs static
Also merge `util.h` into `util.c`.

Closes #17671
2025-06-19 13:28:45 +02:00
Viktor Szakats
8e47c8a764
build: tidy up header paths, use srcdir where possible
To improve readability.

Also add more comments on why each is necessary.

Closes #17630
2025-06-19 13:27:17 +02:00
Viktor Szakats
548873921c
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
2025-06-19 13:02:37 +02:00
Viktor Szakats
69642330a3
cmake: sync target_link_libraries() order in tests more
Closes #17669
2025-06-19 12:14:55 +02:00
Viktor Szakats
6ef7696d12
tests/client: drop autotools logic no longer necessary
Not necessary now that test clients #include `curl_setup.h`.

Follow-up to 539d11297d #17642

Closes #17668
2025-06-19 11:46:12 +02:00
Viktor Szakats
d9b89d4fa9
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
2025-06-19 11:27:02 +02:00
Viktor Szakats
ea782134e5
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
2025-06-19 09:06:56 +02:00
Viktor Szakats
af309fb17b
tests/client: use curl_mfprintf()
Replacing `fprintf()`. `curl_mfprintf()` is a public libcurl API.

Following the same change made for libtests.

Follow-up to 255aac56f9 #17253

Closes #17651
2025-06-19 09:06:55 +02:00
Viktor Szakats
a4a13c96ca
build: sync build scripts between client/libtest
Closes #17660
2025-06-18 11:33:54 +02:00
Viktor Szakats
eb01ac3fc8
cmake: move OUTPUT argument in the add_custom_command() line
For greppability.

Closes #17658
2025-06-18 10:17:04 +02:00
Viktor Szakats
a282d89a8a
cmake: drop redundant macro from test clients
Not necessary now that test clients #include `curl_setup.h`.

Follow-up to 539d11297d #17642

Closes #17657
2025-06-18 10:17:04 +02:00
Viktor Szakats
9e3492690b
cmake: drop passing redundant CURL_STATICLIB in examples and clients
It's set implicitly via libcurl.

Closes #17655
2025-06-17 20:57:23 +02:00
Viktor Szakats
9b7c488f17
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
2025-06-17 19:39:36 +02:00
renovate[bot]
260ec730c2
GHA: update rojopolis/spellcheck-github-actions digest to 63aba94
Closes #17643
2025-06-17 12:22:02 +02:00
Stefan Eissing
3135ed0d84
tests: make sshserver less verbose
Only display top of key files in verbose mode.

Follow-up to 89f306ae40 #16781

Closes #17647
2025-06-17 12:20:10 +02:00
Stefan Eissing
6270b41f92
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 62349e45a8 #17636

Closes #17639
2025-06-17 12:07:01 +02:00
Stefan Eissing
1454aa17d6
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
2025-06-17 11:57:56 +02:00
Viktor Szakats
539d11297d
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 739c09c8a4 #17627

Closes #17642
2025-06-16 22:25:57 +02:00
Viktor Szakats
6d00b06e16
GHA/windows: avoid libtool wrapper for tunits
To sync it with other test binaries.

Closes #17640
2025-06-16 14:13:40 +02:00
Stefan Eissing
62349e45a8
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
2025-06-16 13:04:03 +02:00
Viktor Szakats
739c09c8a4
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:
  4e618ef782/getopt.h
  Credits-to: Christopher Wellons
  Thanks!

Closes #17627
2025-06-16 12:29:05 +02:00
Viktor Szakats
6828009695
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 cde81e4398,
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 cde81e4398 #17631

Closes #16747
2025-06-16 12:29:05 +02:00
Viktor Szakats
cde81e4398
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
2025-06-16 09:35:01 +02:00
Viktor Szakats
2ac18d7ae4
mk-unity: include the embedded source name in the output
Closes #17634
2025-06-16 09:12:59 +02:00
Viktor Szakats
bb9955c865
tests/libtest: merge MEMPTR into UTILS
Follow-up to ee06673296 #17628

Closes #17633
2025-06-16 09:12:58 +02:00
Viktor Szakats
253e1e94c6
autotools: drop no longer necessary --srcdir unity options
Follow-up to ee06673296 #17628

Closes #17632
2025-06-16 02:48:17 +02:00