curl/tests
Stefan Eissing 88fc6c491f
threaded-resolver: fix shutdown
Changed strategy to start up and terminate resolver thread.

When starting up:

Start the thread with mutex acquired, wait for signal from thread that
it started and has incremented the ref counter. Thread set
pthread_cancel() to disabled before that and only enables cancelling
during resolving itself. This assure that the ref counter is correct and
the unlinking of the resolve context always happens.

When shutting down resolving:

If ref counting shows thread has finished, join it, free everything. If
thread has not finished, try pthread_cancel() (non Windows), but keep
the thread handle around.

When destroying resolving:

Shutdown first, then, if the thread is still there and 'quick_exit' is
not set, join it and free everything. This might occur a delay if
getaddrinfo() hangs and cannot be interrupted by pthread_cancel().

Destroying resolving happens when another resolve is started on an
easy handle or when the easy handle is closed.

Add test795 to check that connect timeout triggers correctly
when resolving is delayed. Add debug env var `CURL_DNS_DELAY_MS`
to simulate delays in resolving.

Fix test1557 to set `quick_exit` and use `xxx.invalid` as domain
instead of `nothing` that was leading to hangers in CI.

Closes #18263
2025-08-21 09:26:49 +02:00
..
certs configure: if no perl, disable unity and shell completion, related tidy ups 2025-08-04 14:55:10 +02:00
cmake cmake: ExternalProject test tidy-ups 2025-08-07 10:37:10 +02:00
data threaded-resolver: fix shutdown 2025-08-21 09:26:49 +02:00
http websocket: support CURLOPT_READFUNCTION 2025-08-11 23:28:54 +02:00
libtest threaded-resolver: fix shutdown 2025-08-21 09:26:49 +02:00
server hostip: cache negative name resolves 2025-08-05 08:05:31 +02:00
tunit tests: constify command-line arguments 2025-07-29 13:44:50 +02:00
unit lib: replace getsock() logic with pollsets 2025-08-04 23:43:13 +02:00
.gitignore tidy-up: .gitignore lines mostly 2025-01-27 20:59:46 +01:00
allversions.pm scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
appveyor.pm tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
azure.pm runtests: fix quoting in Appveyor and Azure test integration 2023-04-22 11:50:03 -07:00
CMakeLists.txt cmake: honor CMAKE_C_FLAGS in test 1119 and 1167 2025-08-18 11:08:53 +02:00
config.in copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
configurehelp.pm.in build: use configurehelp.pm.in with autotools and cmake 2024-09-21 12:21:14 +02:00
devtest.pl tidy-up: whitespace 2025-07-11 13:32:54 +02:00
dictserver.py tidy-up: align MSYS2/Cygwin codepaths, follow Cygwin MAX_PID bump 2025-02-21 11:58:05 +01:00
directories.pm scripts: fix perl indentation, whitespace, semicolons 2025-04-29 19:35:55 +02:00
ech_combos.py tidy-up: whitespace [ci skip] 2024-04-16 09:53:39 +02:00
ech_tests.sh tests/ech_tests.sh: indent, if/for style, inline ifs 2025-08-06 15:07:04 +02:00
ftpserver.pl runtests: assume Time::HiRes, drop Perl Win32 dependency 2025-08-14 16:34:06 +02:00
getpart.pm tidy-up: whitespace 2025-07-11 13:32:54 +02:00
globalconfig.pm runtests: add --ci option, show Env: only when non-empty 2025-08-04 14:55:10 +02:00
http-server.pl runtests: support multi-target cmake, drop workarounds from CI 2025-02-24 21:00:30 +01:00
http2-server.pl tests: fix perl warnings in http2-server, http3-server 2025-07-30 14:21:17 +02:00
http3-server.pl tests: fix perl warnings in http2-server, http3-server 2025-07-30 14:21:17 +02:00
Makefile.am runtests: add --ci option, show Env: only when non-empty 2025-08-04 14:55:10 +02:00
memanalyze.pl memanalyze: fix warnings 2025-07-28 12:43:02 +02:00
negtelnetserver.py tidy-up: align MSYS2/Cygwin codepaths, follow Cygwin MAX_PID bump 2025-02-21 11:58:05 +01:00
nghttpx.conf copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
pathhelp.pm tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
processhelp.pm processhelp.pm: use Win32::Process* perl modules if available 2025-08-18 23:46:56 +02:00
requirements.txt tests/http: more tests with specific clients 2023-04-26 23:24:46 +02:00
rtspserver.pl runtests: support multi-target cmake, drop workarounds from CI 2025-02-24 21:00:30 +01:00
runner.pm runtests: assume Time::HiRes, drop Perl Win32 dependency 2025-08-14 16:34:06 +02:00
runtests.pl runtests: assume Time::HiRes, drop Perl Win32 dependency 2025-08-14 16:34:06 +02:00
secureserver.pl tests: Add https-mtls server to force client auth 2025-04-07 08:46:56 +02:00
serverhelp.pm runtests: assume Time::HiRes, drop Perl Win32 dependency 2025-08-14 16:34:06 +02:00
servers.pm runtests: assume Time::HiRes, drop Perl Win32 dependency 2025-08-14 16:34:06 +02:00
smbserver.py GHA/checksrc: expand spellcheck, fix issues found 2025-07-21 16:09:01 +02:00
sshhelp.pm runtests: fix test key format for libssh2 WinCNG (and others) 2025-03-23 20:26:26 +01:00
sshserver.pl tidy-up: whitespace 2025-07-11 13:32:54 +02:00
test745.pl tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
test971.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
test1119.pl docs: add CURLOPT type change history, drop casts where present 2025-08-02 00:05:33 +02:00
test1132.pl tests: rename tests scripts to the test number 2023-12-08 12:53:17 +01:00
test1135.pl tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
test1139.pl tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
test1140.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
test1165.pl tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
test1167.pl tidy-up: whitespace (more in Perl) 2025-07-12 08:59:44 +02:00
test1173.pl GHA/checksrc: expand spellcheck, fix issues found 2025-07-21 16:09:01 +02:00
test1175.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
test1177.pl NTLM_WB: drop support 2024-04-08 13:58:58 +02:00
test1222.pl test1222: fix for out-of-tree and no-libcurl-manual builds 2025-07-11 12:28:46 +02:00
test1275.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
test1276.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
test1477.pl test1175: fix to run, and fix documentation issues detected 2025-07-11 12:28:46 +02:00
test1486.pl writeout: add %time{} 2025-08-04 23:45:48 +02:00
test1488.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
test1544.pl scripts: fix perl indentation, whitespace, semicolons 2025-04-29 19:35:55 +02:00
test1707.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
testcurl.pl scripts: enable strict warnings in Perl where missing, fix fallouts 2025-07-27 22:35:18 +02:00
testutil.pm tidy-up: whitespace 2025-07-11 13:32:54 +02:00
tftpserver.pl tests: Remove unused variables 2025-03-22 11:12:29 -07:00
util.py tests: enable additional ruff Python lint options 2024-10-04 14:03:17 -07:00
valgrind.pm tests/valgrind.pm: fix warnings with no valgrind report to show 2024-09-20 15:40:07 +02:00
valgrind.supp hyper: drop support 2024-12-21 11:33:05 +01:00