curl-curl/lib/vtls
Stefan Eissing df672695e5
shutdowns: split shutdown handling from connection pool
Further testing with timeouts in event based processing revealed that
our current shutdown handling in the connection pool was not clear
enough. Graceful shutdowns can only happen inside a multi handle and it
was confusing to track in the code which situation actually applies. It
seems better to split the shutdown handling off and have that code
always be part of a multi handle.

Add `cshutdn.[ch]` with its own struct to maintain connections being
shut down. A `cshutdn` always belongs to a multi handle and uses that
for socket/timeout monitoring.

The `cpool`, which can be part of a multi or share, either passes
connections to a `cshutdn` or terminates them with a one-time, best
effort.

Add an `admin` easy handle to each multi and share. This is used to
perform all maintenance operations where no "real" easy handle is
available. This solves the problem that the multi admin handle requires
some additional initialisation (e.g. timeout list).

The share needs its admin handle as it is often cleaned up when no other
transfer or multi handle exists any more. But we need a `data` in almost
every call.

Fix file:// handling of errors when adding a new connection to the pool.

Changes in `curl` itself:

- for parallel transfers, do not set a connection pool in the share,
  rely on the multi's connection pool instead. While not a requirement
  for the new `cshutdn` to work, this is

  a) helpful in testing to trigger graceful shutdowns
  b) a broader code coverage of libcurl via the curl tool

- on test_event with uv, cleanup the multi handle before returning from
  parallel_event(). The uv struct is on the stack, cleanup of the multi
  later will crash when it tries to register sockets. This is a "eat
  your own dogfood" related fix.

Closes #16508
2025-03-02 11:13:34 +01:00
..
.checksrc strparse: switch to curl_off_t as base data type 2025-02-15 21:58:48 +01:00
bearssl.c cfilter: remove 'blocking' connect handling 2025-02-20 11:13:51 +01:00
bearssl.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
cipher_suite.c tidy-up: use CURL_ARRAYSIZE() 2025-02-19 00:59:45 +01:00
cipher_suite.h rustls: add support for setting TLS version and ciphers 2024-08-16 09:55:02 +02:00
gtls.c gnutls: fix use of pkcs11 urls for keys/certs 2025-02-28 16:08:10 +01:00
gtls.h wolfssl: tls early data support 2025-02-24 10:01:51 +01:00
hostcheck.c code: language cleanup in comments 2024-07-01 22:58:55 +02:00
hostcheck.h code: language cleanup in comments 2024-07-01 22:58:55 +02:00
keylog.c lib: use bool/TRUE/FALSE properly 2024-10-03 09:31:56 +02:00
keylog.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
mbedtls_threadlock.c mbedtls: properly cleanup the thread-shared entropy 2024-03-12 03:09:37 -04:00
mbedtls_threadlock.h tidy-up: one comment and EOF newlines 2024-03-12 15:38:44 +00:00
mbedtls.c cfilter: remove 'blocking' connect handling 2025-02-20 11:13:51 +01:00
mbedtls.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
openssl.c openssl: check return value of X509_get0_pubkey 2025-02-25 08:10:18 +01:00
openssl.h wolfssl: tls early data support 2025-02-24 10:01:51 +01:00
rustls.c rustls: add support for CERTINFO 2025-02-25 07:59:39 +01:00
rustls.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
schannel_int.h schannel: fix TLS cert verification by IP SAN 2024-10-31 08:59:37 +01:00
schannel_verify.c build: add Windows CE / CeGCC support, with CI jobs 2025-02-21 13:56:34 +01:00
schannel.c build: set -O3 and tune WinCE in CI, fix getpart, vtls_scache fallouts 2025-02-26 21:23:11 +01:00
schannel.h msvc: add missing push/pop for warning pragmas 2025-01-27 20:59:47 +01:00
sectransp.c build: set -O3 and tune WinCE in CI, fix getpart, vtls_scache fallouts 2025-02-26 21:23:11 +01:00
sectransp.h copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
vtls_int.h vtls: move common early data code into vtls.c 2025-02-26 16:00:37 +01:00
vtls_scache.c build: set -O3 and tune WinCE in CI, fix getpart, vtls_scache fallouts 2025-02-26 21:23:11 +01:00
vtls_scache.h build: set -O3 and tune WinCE in CI, fix getpart, vtls_scache fallouts 2025-02-26 21:23:11 +01:00
vtls_spack.c vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01:00
vtls_spack.h vtls: feature ssls-export for SSL session im-/export 2025-01-08 23:32:07 +01:00
vtls.c shutdowns: split shutdown handling from connection pool 2025-03-02 11:13:34 +01:00
vtls.h lib: TLS session ticket caching reworked 2024-12-20 14:59:23 +01:00
wolfssl.c vtls: move common early data code into vtls.c 2025-02-26 16:00:37 +01:00
wolfssl.h wolfssl: tls early data support 2025-02-24 10:01:51 +01:00
x509asn1.c rustls: add support for CERTINFO 2025-02-25 07:59:39 +01:00
x509asn1.h rustls: add support for CERTINFO 2025-02-25 07:59:39 +01:00