curl and libcurl 8.22.1

 Public curl releases:         276
 Command line options:         278
 curl_easy_setopt() options:   312
 Public functions in libcurl:  100
 Authors:                      1529
 Contributors:                 3804

This release includes the following changes:

 o lib: CURL_GLOBAL_WIN32 -> CURL_GLOBAL_WINSOCK [64]
 o SMB: drop support [63]
 o tool_cb_wrt: inject the no-clobber number before the extension [21]
 o tool_cb_wrt: try up to .9999 when no-clobbering [46]

This release includes the following bugfixes:

 o base64: optimize decode lookup table and quantum loop [88]
 o build: convert HAS_TIME_T_UNSIGNED to a compile-time check [65]
 o build: drop `HTTP_ONLY` option [23]
 o clang-tidy: merge nested `if()`s [39]
 o config2setopts: always set the security options for SCP/SFTP [67]
 o conncache: avoid evicting connect-only connections [79]
 o conncache: remove bundle dest [50]
 o connectdata: use less curltime [34]
 o cookie: ignore individual cookie errors when loading [6]
 o cshutdown: make it smaller [60]
 o curl_addrinfo: drop redundant parentheses [41]
 o curl_fopen: restore the uid and gid checks [70]
 o curl_formadd.md: mention the strlen() for names as well [29]
 o CURLOPT*ISSUERCERT*: not verified cryptographically [28]
 o CURLOPT_SHARE.md: remove bad explanation for cookie sharing [7]
 o CURLOPT_SSL_CTX_FUNCTION.md: client cert caveats [87]
 o cw-out: avoid O(n^2) work while buffering paused output [74]
 o digest: check peer equality for staleness [24]
 o digest: fix maximum length quoted value parsing [22]
 o digest: parse without storing 'value' in local buffer [20]
 o dnscache/conncache tweaks [75]
 o docs: add the missing .html to the url-encode book link [3]
 o doh: reject undersized HTTPS RDATA [11]
 o dynhds: grow header array geometrically [73]
 o easy: duplicating a zero byte memory area needs no malloc [91]
 o easy: make ca_cache_timeout standalone [51]
 o escape: polish encoding and decoding for speed [37]
 o fnmatch: replace recursive matcher with iterative greedy algorithm [72]
 o ftp: tighten use_ssl check for conn reuse [19]
 o ftp: URL encode file names when wildcarding [61]
 o getparam: switch off CONNECT headers when using -J [4]
 o global_init: tidy up, simplify, fix issues [43]
 o happy eyeballs: bound work from many duplicate/failing addresses [80]
 o hash: change key arguments to const [14]
 o headers: avoid O(n^2) rescans in curl_easy_nextheader() [81]
 o hsts: cap max-age to two years [47]
 o hsts: on load, only remove exact duplicates [56]
 o HTTP-CONNECT: do not react to 401 responses [31]
 o http2: changes in error handling [53]
 o http: reject resumed uploads [16]
 o imap: compare selected mailbox names case-sensitively [57]
 o lib: connection shutdown, cleanup code [92]
 o lib: make private functions static and remove unused code [83]
 o libssh2: match hashed known_hosts entries by host [30]
 o libssh2: skip repeat checkp() for already-absent hashed key types [82]
 o mbedtls: fix ticket handling [52]
 o mime: do curl_mime_free() non-recursively [48]
 o mprintf: stage output and emit it in runs [38]
 o mulit_ev: remove socket references on forget [89]
 o multi: reduce struct size with small cleanups [25]
 o multi: remove redundant completion message list [32]
 o multi: store timeout epoch as whole seconds [36]
 o multi_ntfy: replace enabled bitset with inline flags [44]
 o multihandle: some easy shrinks [33]
 o netrc: empty quoted values now produce a valid empty string [62]
 o netrc: survive comment-only .netrc file [93]
 o ngtcp2: shrink max sendbuf [13]
 o openssl/gtls: reject CRLfile with native CA store, matching rustls [27]
 o openssl: use non-deprecated API for MD5/MD4 [69]
 o os400: document curl_formadd_CCSID multi-chunk peculiarity [5]
 o ossl_verifyhost: remove assumption of null termination of ASN1_STRING. [26]
 o runtests: Added runnernums in order to have O(1) lookup [45]
 o schannel: auto_client_cert conn matching [17]
 o schannel: clear borrowed sslContext on close [15]
 o ssl: dedup ssl_fsslctx [35]
 o test 1605: move from unit to libtest [49]
 o test1399: improve reliability [9]
 o test1679: unset `SSL_CERT_FILE`, use `TESTNUMBER` [58]
 o tool: (re)set SSL verification in --libcurl output [1]
 o tool_easysrc: reset the handle between --next operations [90]
 o uint-bset: skip unused slots when counting
 o url: match connections without force reuse and candidates [95]
 o url: ntlm/negotiate, prohibit connection reuse on follows [18]
 o urlapi: run the urlparser perf test faster [54]
 o urldata: remove conn->given [40]
 o urldata: remove ssl_primary_config from easy handle [78]
 o vquic: fix preprocessor check for old Darwin versions [8]
 o vtls: fix Curl_cert_hostcheck when the pattern is not a C string [12]
 o warnless: dedupe Intel compiler warning suppression pragmas [42]
 o x509: stricter parsing [2]

This release includes the following known bugs:

 See https://curl.se/docs/knownbugs.html

For all changes ever done in curl:

 See https://curl.se/changes.html

Planned upcoming removals include:

 o HTTP/2 Server Push
 o local crypto implementations
 o NTLM

 See https://curl.se/dev/deprecate.html

This release would not have looked like this without help, code, reports and
advice from friends like these:

  Artem Prilutskiy, Aviv Engelberg, Bobbeh Rhino, Christian Hesse,
  Christian Ullrich, Claude, Daniel Lang, Daniel Stenberg, David Benjamin,
  Florent Castelli, Fredrik Blau, Huang Yiheng, Joshua Rogers, Martin Dukek,
  Max Dymond, Mihai-Gabriel Marin, Patrick Monnerat, rawsun007, Ray Satiro,
  renovate[bot], Ron Kuper, Roshan Ramani, Rudolf Polzer, Stanislav Fort,
  Stefan Eissing, Tyler Yankee, Un1q32, Viktor Szakats
  (28 contributors)

References to bug reports and discussions on issues:

 [1] = https://curl.se/bug/?i=22701
 [2] = https://curl.se/bug/?i=22799
 [3] = https://curl.se/bug/?i=22811
 [4] = https://curl.se/bug/?i=22838
 [5] = https://curl.se/bug/?i=22887
 [6] = https://curl.se/bug/?i=22840
 [7] = https://curl.se/bug/?i=22788
 [8] = https://curl.se/bug/?i=22797
 [9] = https://curl.se/bug/?i=22798
 [11] = https://curl.se/bug/?i=22791
 [12] = https://curl.se/bug/?i=22795
 [13] = https://curl.se/bug/?i=22786
 [14] = https://curl.se/bug/?i=22886
 [15] = https://curl.se/bug/?i=22720
 [16] = https://curl.se/bug/?i=22703
 [17] = https://curl.se/bug/?i=22827
 [18] = https://curl.se/bug/?i=22884
 [19] = https://curl.se/bug/?i=22823
 [20] = https://curl.se/bug/?i=22831
 [21] = https://curl.se/bug/?i=22787
 [22] = https://curl.se/bug/?i=22830
 [23] = https://curl.se/bug/?i=22740
 [24] = https://curl.se/bug/?i=22828
 [25] = https://curl.se/bug/?i=22807
 [26] = https://curl.se/bug/?i=22822
 [27] = https://curl.se/bug/?i=22826
 [28] = https://curl.se/bug/?i=22825
 [29] = https://curl.se/bug/?i=22926
 [30] = https://curl.se/bug/?i=22874
 [31] = https://curl.se/bug/?i=22817
 [32] = https://curl.se/bug/?i=22805
 [33] = https://curl.se/bug/?i=22801
 [34] = https://curl.se/bug/?i=22815
 [35] = https://curl.se/bug/?i=22876
 [36] = https://curl.se/bug/?i=22806
 [37] = https://curl.se/bug/?i=22780
 [38] = https://curl.se/bug/?i=22766
 [39] = https://curl.se/bug/?i=22793
 [40] = https://curl.se/bug/?i=22875
 [41] = https://curl.se/bug/?i=22810
 [42] = https://curl.se/bug/?i=22796
 [43] = https://curl.se/bug/?i=22746
 [44] = https://curl.se/bug/?i=22804
 [45] = https://curl.se/bug/?i=22753
 [46] = https://curl.se/bug/?i=22784
 [47] = https://curl.se/bug/?i=22878
 [48] = https://curl.se/bug/?i=22927
 [49] = https://curl.se/bug/?i=22928
 [50] = https://curl.se/bug/?i=22873
 [51] = https://curl.se/bug/?i=22877
 [52] = https://curl.se/bug/?i=22871
 [53] = https://curl.se/bug/?i=22870
 [54] = https://curl.se/bug/?i=22924
 [56] = https://curl.se/bug/?i=22869
 [57] = https://curl.se/bug/?i=22868
 [58] = https://curl.se/bug/?i=22866
 [60] = https://curl.se/bug/?i=22862
 [61] = https://curl.se/bug/?i=22860
 [62] = https://issues.oss-fuzz.com/issues/560352522
 [63] = https://curl.se/bug/?i=22652
 [64] = https://curl.se/bug/?i=22819
 [65] = https://curl.se/bug/?i=22849
 [67] = https://curl.se/bug/?i=22839
 [69] = https://curl.se/bug/?i=22221
 [70] = https://curl.se/bug/?i=22843
 [72] = https://curl.se/bug/?i=22911
 [73] = https://curl.se/bug/?i=22910
 [74] = https://curl.se/bug/?i=22896
 [75] = https://curl.se/bug/?i=22900
 [78] = https://curl.se/bug/?i=22901
 [79] = https://curl.se/bug/?i=22902
 [80] = https://curl.se/bug/?i=22897
 [81] = https://curl.se/bug/?i=22898
 [82] = https://curl.se/bug/?i=22905
 [83] = https://curl.se/bug/?i=22906
 [87] = https://curl.se/bug/?i=22899
 [88] = https://curl.se/bug/?i=22903
 [89] = https://curl.se/bug/?i=22895
 [90] = https://curl.se/bug/?i=22890
 [91] = https://curl.se/bug/?i=22893
 [92] = https://curl.se/bug/?i=22888
 [93] = https://curl.se/bug/?i=22889
 [95] = https://curl.se/bug/?i=22857
