                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

                                  Changelog

Version 8.2.1 (26 Jul 2023)

Daniel Stenberg (26 Jul 2023)

- RELEASE-NOTES: synced

  curl 8.2.1 release

- THANKS: add contributors from 8.2.1

- docs: provide more see also for cipher options

  More cross references. Hide nroff errors.

  Closes #11513

- docs: mark two TLS options for TLS, not SSL

  Closes #11514

Brad Harder (25 Jul 2023)

- curl_multi_wait.3: fix arg quoting to doc macro .BR

  Closes #11511

Daniel Stenberg (24 Jul 2023)

- RELEASE-NOTES: synced

Viktor Szakats (24 Jul 2023)

- cmake: update ngtcp2 detection

  Replace `OpenSSL` with `quictls` to follow the same change
  in the v0.17.0 ngtcp2 release.

  Follow-up to e0093b4b732f6495b0fb1cd6747cbfedcdcf63ed

  Closes #11508

Stefan Eissing (24 Jul 2023)

- http: VLH, very large header test and fixes

  - adding tests using very large passwords in auth
  - fixes general http sending to treat h3 like h2, and
    not like http1.1
  - eliminate H2_HEADER max definitions and use the commmon
    DYN_HTTP_REQUEST everywhere, different limits do not help
  - fix http2 handling of requests denied by nghttp2 on send
    to immediately report the refused stream

  Closes #11509

Andrei Rybak (23 Jul 2023)

- CONTRIBUTE: drop mention of copyright year ranges

  Year ranges in copyrights were dropped in commits [1] and [2].
  Verification of year ranges in copyrights was dropped from script
  'scripts/copyright.pl' in commit [3].  However, the corresponding
  passages in file 'docs/CONTRIBUTE.md' weren't updated.

  Drop mentions of copyright year ranges from 'docs/CONTRIBUTE.md'.

  [1] 2bc1d775f (copyright: update all copyright lines and remove year
      ranges, 2023-01-02)
  [2] c46761bd8 (tests/http: remove year ranges from copyrights,
      2023-03-14)
  [3] 0e293bacb (copyright.pl: cease doing year verifications, 2023-01-28)

  Closes #11504

- CONTRIBUTE: fix syntax in commit message description

  File 'docs/CONTRIBUTE.md' includes a description of how one should write
  commit messages in the curl project.  Different possible parts of the
  message are enclosed in square brackets.  One exception is the section
  describing how the curl project doesn't use "Signed-off-by" commit
  trailers [1], which is enclosed in an opening curly brace paired with a
  closing square bracket.

  Fix the enclosing square brackets in description of "Signed-off-by"
  trailers in commit messages in file 'docs/CONTRIBUTE.md'.

  [1] See description of option '--signoff' in Git documentation:
      https://git-scm.com/docs/git-commit

  Closes #11504

Daniel Stenberg (23 Jul 2023)

- src/mkhelp: strip off escape sequences

  At some point the nroff command stopped stripping off escape sequences,
  so then this script needs to do the job instead.

  Reported-by: VictorVG on github
  Fixes #11501
  Closes #11503

- KNOWN_BUGS: building for old macOS fails with gcc

  Closes #11441

Jacob Hoffman-Andrews (22 Jul 2023)

- rustls: update rustls-ffi 0.10.0

  This brings in version 0.21.0 of the upstream rustls implementation,
  which notable includes support for IP address certificates.

  Closes #10865

Brad Harder (22 Jul 2023)

- websocket: rename arguments/variables to match docs

  Pedantry/semantic-alignment between functions, docs, comments with
  respect to websocket protocol code; No functional change intended.

  * "totalsize", "framesize" becomes "fragsize" (we deal in frame fragments).

  * "sendflags" becomes "flags"

  * use canonical CURL *handle

  Closes #11493

Jan Macku (21 Jul 2023)

- bug_report: use issue forms instead of markdown template

  Issue forms allow you to define web-like input forms using YAML
  syntax. It allows you to guide the reporter to get the required
  information.

  Signed-off-by: Jan Macku <jamacku@redhat.com>
  Closes #11474

Daniel Stenberg (21 Jul 2023)

- TODO: Obey Retry-After in redirects

  (remove "Set custom client ip when using haproxy protocol" which was
  shipped in 8.2.0)

  Mentioned-by: Yair Lenga
  Closes #11447

- RELEASE-NOTES: synced

Oliver Roberts (21 Jul 2023)

- amissl: fix AmiSSL v5 detection

  Due to changes in the AmiSSL SDK, the detection needed adjusting.

  Closes #11477

Alois Klink (21 Jul 2023)

- unittest/makefile: remove unneeded unit1621_LDADD

  The `unit1621_LDADD` variable has the exact same value as the `LDADD`
  flag in `Makefile.am`, except without `@LDFLAGS@ @LIBCURL_LIBS@`.

  This was originally added by [98e6629][], but I can't see any reason
  why it exists, so we should remove it to clean things up.

  [98e6629]: https://github.com/curl/curl/commit/98e6629154044e4ab1ee7cff8351c7
  ebcb131e88

  Closes #11494

- unittest/makefile: remove unneeded unit1394_LDADD

  These custom `unit1394_LDADD` and similar automake overrides are no
  longer neded. They were originally added by added by [8dac7be][] for
  metalink support, but are no longer after [265b14d][] removed metalink.

  [8dac7be]: https://github.com/curl/curl/commit/8dac7be438512a8725d3c71e9139bd
  fdcac1ed8c
  [265b14d]: https://github.com/curl/curl/commit/265b14d6b37c4298bd5556fabcbc37
  d36f911693

  Closes #11494

- cmake: add `libcurlu`/`libcurltool` for unit tests

  Add a `libcurlu`/`libcurltool` static library that is compiled only for
  unit tests. We use `EXCLUDE_FROM_ALL` to make sure that they're not
  built by default, they're only built if unit tests are built.

  These libraries allow us to compile every unit test with CMake.

  Closes #11446

Daniel Stenberg (21 Jul 2023)

- test979: test -u with redirect to (the same) absolute host

  Verifies #11492

- transfer: do not clear the credentials on redirect to absolute URL

  Makes test 979 work. Regression shipped in 8.2.0 from commit
  dd4d1a26959f63a2c

  Fixes #11486
  Reported-by: Cloudogu Siebels
  Closes #11492

Jon Rumsey (20 Jul 2023)

- os400: correct EXPECTED_STRING_LASTZEROTERMINATED

  Correct EXPECTED_STRING_LASTZEROTERMINATED to account for
  CURLOPT_HAPROXY_CLIENT_IP which requires EBCDIC to ASCII conversion when
  passed into curl_easy_setopt().

  Closes #11476

Oliver Roberts (20 Jul 2023)

- amissl: add missing signal.h include

  In some environments, signal.h is already included, but not in others
  which cause compilation to fail, so explictly include it.

  Closes #11478

- amigaos: fix sys/mbuf.h m_len macro clash

  The updated Curl_http_req_make and Curl_http_req_make2 functions spawned
  a parameter called m_len. The AmigaOS networking headers, derived from
  NetBSD, contain "#define m_len m_hdr.mh_len" which clashes with
  this. Since we do not actually use mbuf, force the include file to be
  ignored, removing the clash.

  Closes #11479

Daniel Stenberg (20 Jul 2023)

- socks: print ipv6 address within brackets

  Fixes #11483
  Closes #11484

Christian Schmitz (20 Jul 2023)

- libcurl-errors.3: add CURLUE_OK

  Closes #11488

Oliver Roberts (20 Jul 2023)

- cfilters: rename close/connect functions to avoid clashes

  Rename `close` and `connect` in `struct Curl_cftype` for
  consistency and to avoid clashes with macros of the same name
  (the standard AmigaOS networking connect() function is implemented
  via a macro).

  Closes #11491

Stefan Eissing (20 Jul 2023)

- http2: fix regression on upload EOF handling

  - a regression introduced by c9ec85121110d7cbbbed2990024222c8f5b8afe5
    where optimization of small POST bodies leads to a new code path
    for such uploads that did not trigger the "done sending" event
  - add triggering this event for early "upload_done" situations

  Fixes #11485
  Closes #11487
  Reported-by: Aleksander Mazur

Daniel Stenberg (19 Jul 2023)

- configure: check for nghttp2_session_get_stream_local_window_size

  The http2 code uses it now. Introduced in nghttp2 1.15.0 (Sep 2016)

  Fixes #11470
  Reported-by: Paul Howarth
  Closes #11473

Stefan Eissing (19 Jul 2023)

- quiche: fix segfault and other things

  - refs #11449 where a segfault is reported when IP Eyeballing did
    not immediately connect but made several attempts
  - The transfer initiating the eyeballing was initialized  too early,
    leadding to references to the filter instance that was then
    replaced in the subsequent eyeball attempts. That led to a use
    after free in the buffer handling for the transfer
  - transfers are initiated now more lazy (like in the ngtcp2 filter),
    when the stream is actually opened
  - suppress reporting on quiche event errors for "other" transfers
    than the current one to not fail a transfer due to faults in
    another one.
  - revert recent return value handling for quiche_h3_recv_body()
    to not indicate an error but an EAGAIN situation. We wish quiche
    would document what functions return.

  Fixes #11449
  Closes #11469
  Reported-by: ウさん

Daniel Stenberg (19 Jul 2023)

- hostip: return IPv6 first for localhost resolves

  Fixes #11465
  Reported-by: Chilledheart on github
  Closes #11466

Harry Sintonen (19 Jul 2023)

- tool: fix tool_seek_cb build when SIZEOF_CURL_OFF_T > SIZEOF_OFF_T

  - a variable was renamed, and some use of it wasn't. this fixes the
    build.

  Closes #11468

Stefan Eissing (19 Jul 2023)

- quiche: fix lookup of transfer at multi

  - refs #11449 where weirdness in quiche multi connection tranfers was
    observed
  - fixes lookup of transfer for a quiche event to take the connection
    into account
  - formerly, a transfer with the same stream_id, but on another connection
    could be found

  Closes #11462

Daniel Stenberg (19 Jul 2023)

- RELEASE-NOTES: synced

  bump to 8.2.1

John Haugabook (19 Jul 2023)

- ciphers.d: put URL in first column

  This makes the URL turn into a link properly when "webified".

  Fixes https://github.com/curl/curl-www/issues/270
  Closes #11464

Version 8.2.0 (19 Jul 2023)

Daniel Stenberg (19 Jul 2023)

- RELEASE-NOTES: synced

  8.2.0 release

- THANKS-filter: strip out "GitHub"

- THANKS: add contributors from 8.2.0

- RELEASE-PROCEDURE.md: adjust the release dates

Stefan Eissing (17 Jul 2023)

- quiche: fix defects found in latest coverity report

  Closes #11455

Daniel Stenberg (17 Jul 2023)

- quiche: avoid NULL deref in debug logging

  Coverity reported "Dereference after null check"

  If stream is NULL and the function exits, the logging must not deref it.

  Closes #11454

Stefan Eissing (17 Jul 2023)

- http2: treat initial SETTINGS as a WINDOW_UPDATE

  - refs #11426 where spurious stalls on large POST requests
    are reported
  - the issue seems to involve the following
    * first stream on connection adds up to 64KB of POST
      data, which is the max default HTTP/2 stream window size
      transfer is set to HOLD
    * initial SETTINGS from server arrive, enlarging the stream
      window. But no WINDOW_UPDATE is received.
    * curl stalls
  - the fix un-HOLDs a stream on receiving SETTINGS, not
    relying on a WINDOW_UPDATE from lazy servers

  Closes #11450

Daniel Stenberg (17 Jul 2023)

- ngtcp2: assigning timeout, but value is overwritten before used

  Reported by Coverity

  Closes #11453

- krb5: add typecast to please Coverity

Derzsi Dániel (16 Jul 2023)

- wolfssl: support setting CA certificates as blob

  Closes #11445

- wolfssl: detect when TLS 1.2 support is not built into wolfssl

  Closes #11444

Graham Campbell (15 Jul 2023)

- CI: bump nghttp2 from 1.55.0 to 1.55.1

  Closes #11442

Daniel Stenberg (15 Jul 2023)

- curl: return error when asked to use an unsupported HTTP version

  When one of the following options are used but the libcurl in use does
  not support it:

  --http2
  --http2-prior-knowledge
  --proxy-http2

  Closes #11440

Chris Paulson-Ellis (14 Jul 2023)

- cf-socket: don't bypass fclosesocket callback if cancelled before connect

  After upgrading to 8.1.2 from 7.84.0, I found that sockets were being
  closed without calling the fclosesocket callback if a request was
  cancelled after the associated socket was created, but before the socket
  was connected. This lead to an imbalance of fopensocket & fclosesocket
  callbacks, causing problems with a custom event loop integration using
  the multi-API.

  This was caused by cf_socket_close() calling sclose() directly instead
  of calling socket_close() if the socket was not active. For regular TCP
  client connections, the socket is activated by cf_socket_active(), which
  is only called when the socket completes the connect.

  As far as I can tell, this issue has existed since 7.88.0. That is,
  since the code in question was introduced by:
      commit 71b7e0161032927cdfb4e75ea40f65b8898b3956
      Author: Stefan Eissing <stefan@eissing.org>
      Date:   Fri Dec 30 09:14:55 2022 +0100

          lib: connect/h2/h3 refactor

  Closes #11439

Daniel Stenberg (13 Jul 2023)

- tool_parsecfg: accept line lengths up to 10M

  Bumped from 100K set in 47dd957daff9

  Reported-by: Antoine du Hamel
  Fixes #11431
  Closes #11435

Stefan Eissing (13 Jul 2023)

- CI: brew fix for openssl in default path

  If brew install/update links openssl into /usr/local, it will be found
  before anything we add with `-isystem path` to CPP/LDLFAGS.  Get rid of
  that by unlinking the keg.

  Fixes #11413
  Closes #11436

Daniel Stenberg (13 Jul 2023)

- RELEASE-NOTES: synced

Ondřej Koláček (13 Jul 2023)

- sectransp: fix EOF handling

  Regression since the large refactor from 2022

  Closes #11427

Daniel Stenberg (13 Jul 2023)

- checksrc: quote the file name to work with "funny" letters

  Closes #11437

Karthikdasari0423 (13 Jul 2023)

- HTTP3.md: ngtcp2 updated to v0.17.0 and nghttp3 to v0.13.0

  Follow-up to e0093b4b732f6

  Closes #11433

Daniel Stenberg (13 Jul 2023)

- CURLOPT_MIMEPOST.3: clarify what setting to NULL means

  Follow-up to e08382a208d4e480

  Closes #11430

Tatsuhiro Tsujikawa (12 Jul 2023)

- ngtcp2: build with 0.17.0 and nghttp3 0.13.0

  - ngtcp2_crypto_openssl was renamed to ngtcp2_crypto_quictls.

  Closes #11428

- CI: Bump ngtcp2, nghttp3, and nghttp2

  Closes #11428

James Fuller (11 Jul 2023)

- example/maxconnects: set maxconnect example

  Closes #11343

Pontakorn Prasertsuk (11 Jul 2023)

- http2: send HEADER & DATA together if possible

  Closes #11420

Daniel Stenberg (11 Jul 2023)

- CI: use wolfSSL 5.6.3 in builds

  No using master anymore

  Closes #11424

SaltyMilk (11 Jul 2023)

- fopen: optimize

  Closes #11419

Daniel Stenberg (11 Jul 2023)

- cmake: make use of snprintf

  Follow-up to 935b1bd4544a23a91d68

  Closes #11423

Stefan Eissing (11 Jul 2023)

- macOS: fix taget detection

  - TARGET_OS_OSX is not always defined on macOS
  - this leads to missing symbol Curl_macos_init()
  - TargetConditionals.h seems to define these only when
    dynamic targets are enabled (somewhere?)
  - this PR fixes that on my macOS 13.4.1
  - I have no clue why CI builds worked without it

  Follow-up to c7308592fb8ba213fc2c1
  Closes #11417

Stan Hu (9 Jul 2023)

- hostip.c: Move macOS-specific calls into global init call

  https://github.com/curl/curl/pull/7121 introduced a macOS system call
  to `SCDynamicStoreCopyProxies`, which is invoked every time an IP
  address needs to be resolved.

  However, this system call is not thread-safe, and macOS will kill the
  process if the system call is run first in a fork. To make it possible
  for the parent process to call this once and prevent the crash, only
  invoke this system call in the global initialization routine.

  In addition, this change is beneficial because it:

  1. Avoids extra macOS system calls for every IP lookup.
  2. Consolidates macOS-specific initialization in a separate file.

  Fixes #11252
  Closes #11254

Daniel Stenberg (9 Jul 2023)

- docs: use a space after RFC when spelling out RFC numbers

  Closes #11382

Margu (9 Jul 2023)

- imap-append.c: update to make it more likely to work

  Fixes #10300
  Closes #11397

Emanuele Torre (9 Jul 2023)

- tool_writeout_json: fix encoding of control characters

  Control characters without a special escape sequence e.g. %00 or %06
  were being encoded as "u0006" instead of "\u0006".

  Ref: https://github.com/curl/trurl/pull/214#discussion_r1257487858
  Closes #11414

Stefan Eissing (9 Jul 2023)

- http3/ngtcp2: upload EAGAIN handling

  - refs #11389 where IDLE timeouts on upload are reported
  - reword ngtcp2 expiry handling to apply to both send+recv
    calls into the filter
  - EAGAIN uploads similar to the recent changes in HTTP/2, e.g.
    report success only when send data was ACKed.
  - HOLD sending of EAGAINed uploads to avoid cpu busy loops
  - rename internal function for consistency with HTTP/2
    implementation

  Fixes #11389
  Closes #11390

Brian Nixon (9 Jul 2023)

- tool_easysrc.h: correct `easysrc_perform` for `CURL_DISABLE_LIBCURL_OPTION`

  Closes #11398

Daniel Stenberg (9 Jul 2023)

- RELEASE-NOTES: synced

- transfer: clear credentials when redirecting to absolute URL

  Make sure the user and password for the second request is taken from the
  redirected-to URL.

  Add test case 899 to verify.

  Reported-by: James Lucas
  Fixes #11410
  Closes #11412

Stefan Eissing (8 Jul 2023)

- hyper: fix EOF handling on input

  We ran out of disc space due to an infinite loop with debug logging

  Fixes #11377
  Closes #11385
  Reported-by: Dan Fandrich

- http2: raise header limitations above and beyond

  - not quite to infinity
  - rewrote the implementation of our internal HTTP/1.x request
    parsing to work with very large lines using dynbufs.
  - new default limit is `DYN_HTTP_REQUEST`, aka 1MB, which
    is also the limit of curl's general HTTP request processing.

  Fixes #11405
  Closes #11407

Juan Cruz Viotti (8 Jul 2023)

- curl_easy_nextheader.3: add missing open parenthesis examples

  Closes #11409
  Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>

Dan Fandrich (7 Jul 2023)

- CI: enable verbose test output on pytest

  This shows individual pass/fail status on tests and makes this output
  consistent with other jobs' pytest invocations.

Stefan Eissing (28 Jun 2023)

- http2: fix crash in handling stream weights

  - Delay the priority handling until the stream has been opened.

  - Add test2404 to reproduce and verify.

  Weights may change "on the run", which is why there are checks in
  general egress handling. These must not trigger when the stream has not
  been opened yet.

  Reported-by: jbgoog@users.noreply.github.com

  Fixes https://github.com/curl/curl/issues/11379
  Closes https://github.com/curl/curl/pull/11384

- tests/http: Add mod_h2 directive `H2ProxyRequests`

  master of mod_h2 now requires H2ProxyRequests directives for forward
  proxying with HTTP/2 to work.

  Ref: https://github.com/icing/mod_h2/commit/3897a7086

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

Dan Fandrich (28 Jun 2023)

- CI: make Appveyor job names unique

  Two otherwise identical mingw-w64 jobs now have their differing compiler
  versions mentioned in their names.

Sheshadri.V (25 Jun 2023)

- curl.h: include <sys/select.h> for vxworks

  Closes #11356

Dan Fandrich (24 Jun 2023)

- CI: enable parallel make in more builds

  Most CI services provide at least two cores, so enable parallel make
  jobs to take advantage of that for builds. Some dependencies aren't safe
  to build in parallel so leave those as-is.  Also, rename a few
  workflows to eliminate duplicate names and provide a better idea what
  they're about.

- CI: don't install impacket if tests are not run

  It just wastes time and bandwidth and isn't even used.

divinity76 (24 Jun 2023)

- configure: the --without forms of the options are also gone

  --without-darwin-ssl and --without-metalink

  Closes #11378

Daniel Stenberg (23 Jun 2023)

- configure: add check for ldap_init_fd

  ... as otherwise the configure script will say it is OpenLDAP in the
  summary, but not set the USE_OPENLDAP define, therefor not using the
  intended OpenLDAP code paths.

  Regression since 4d7385446 (7.85.0)
  Fixes #11372
  Closes #11374
  Reported-by: vlkl-sap on github

Michał Petryka (23 Jun 2023)

- cmake: stop CMake from quietly ignoring missing Brotli

  The CMake project was set to `QUIET` for Brotli instead of
  `REQUIRED`. This makes builds unexpectedly ignore missing Brotli even
  when `CURL_BROTLI` is enabled.

  Closes #11376

Emanuele Torre (22 Jun 2023)

- docs: add more .IP after .RE to fix indentation of generate paragraphs

  follow-up from 099f41e097c030077b8ec078f2c2d4038d31353b

  I just thought of checking all the other files with .RE, and I found 6
  other files that were missing .IP at the end.

  Closes #11375

Stefan Eissing (22 Jun 2023)

- http2: h2 and h2-PROXY connection alive check fixes

  - fix HTTP/2 check to not declare a connection dead when
    the read attempt results in EAGAIN
  - add H2-PROXY alive check as for HTTP/2 that was missing
    and is needed
  - add attach/detach around Curl_conn_is_alive() and remove
    these in filter methods
  - add checks for number of connections used in some test_10
    proxy tunneling tests

  Closes #11368

- http2: error stream resets with code CURLE_HTTP2_STREAM

  - refs #11357, where it was reported that HTTP/1.1 downgrades
    no longer works
  - fixed with suggested change
  - added test_05_03 and a new handler in the curltest module
    to reproduce that downgrades work

  Fixes #11357
  Closes #11362
  Reported-by: Jay Satiro

Daniel Stenberg (22 Jun 2023)

- connect-timeout.d: mention that the DNS lookup is included

  Closes #11370

Emanuele Torre (22 Jun 2023)

- quote.d: fix indentation of generated paragraphs

  quote.d was missing a .IP at the end which caused the paragraphs
  generated for See-also, Multi, and Example to not be indented correctly.

  I also remove a redundant "This option can be used multiple times.", and
  replaced .IP "item" with .TP .B "item" to make more clear which lines
  are part of the list of commands and which aren't.

  Closes #11371

Paul Wise (22 Jun 2023)

- checksrc: modernise perl file open

  Use regular variables and separate file open modes from filenames.

  Suggested by perlcritic

  Copied from https://github.com/curl/trurl/commit/f2784a9240f47ee28a845

  Closes #11358

Dan Fandrich (21 Jun 2023)

- runtests: work around a perl without SIGUSR1

  At least msys2 perl v5.32.1 doesn't seem to define this signal. Since
  this signal is only used for debugging, just ignore if setting it fails.

  Reported-by: Marcel Raad
  Fixes #11350
  Closes #11366

- runtests: include missing valgrind package

  use valgrind was missing which caused torture tests with valgrind
  enabled to fail.

  Reported-by: Daniel Stenberg
  Fixes #11364
  Closes #11365

- runtests: use more consistent failure lines

  After a test failure log a consistent log message to make it easier to
  parse the log file.  Also, log a consistent message with "ignored" for
  failures that cause the test to be not considered at all. These should
  perhaps be counted in the skipped category, but this commit does not
  change that behaviour.

- runtests: consistently write the test check summary block

  The memory check character was erroneously omitted if the memory
  checking file was not available for some reason, making the block of
  characters an inconsistent length.

- test2600: fix the description

  It looks like it was cut-and-pasted.

  Closes #11354

Daniel Stenberg (21 Jun 2023)

- TODO: "Support HTTP/2 for HTTP(S) proxies" *done*

humbleacolyte (21 Jun 2023)

- cf-socket: move ctx declaration under HAVE_GETPEERNAME

  Closes #11352

Daniel Stenberg (20 Jun 2023)

- RELEASE-NOTES: synced

- example/connect-to: show CURLOPT_CONNECT_TO

  Closes #11340

Stefan Eissing (20 Jun 2023)

- hyper: unslow

  - refs #11203 where hyper was reported as being slow
  - fixes hyper_executor_poll to loop until it is out of
    tasks as advised by @seanmonstar in https://github.com/hyperium/hyper/issue
  s/3237
  - added a fix in hyper io handling for detecting EAGAIN
  - added some debug logs to see IO results
  - pytest http/1.1 test cases pass
  - pytest h2 test cases fail on connection reuse. HTTP/2
    connection reuse does not seem to work. Hyper submits
    a request on a reused connection, curl's IO works and
    thereafter hyper declares `Hyper: [1] operation was canceled: connection cl
  osed`
    on stderr without any error being logged before.

  Fixes #11203
  Reported-by: Gisle Vanem
  Advised-by: Sean McArthur
  Closes #11344

- HTTP/2: upload handling fixes

  - fixes #11242 where 100% CPU on uploads was reported
  - fixes possible stalls on last part of a request body when
    that information could not be fully send on the connection
    due to an EAGAIN
  - applies the same EGAIN handling to HTTP/2 proxying

  Reported-by: Sergey Alirzaev
  Fixed #11242
  Closes #11342

Daniel Stenberg (20 Jun 2023)

- example/opensslthreadlock: remove

  This shows how to setup OpenSSL mutex callbacks, but this is not
  necessary since OpenSSL 1.1.0 - meaning that no currently supported
  OpenSSL version requires this anymore

  Closes #11341

Dan Fandrich (19 Jun 2023)

- libtest: display the times after a test timeout error

  This is to help with test failure debugging.

  Ref: #11328
  Closes #11329

- test2600: bump a test timeout

  Case 1 failed at least once on GHA by going 30 msec too long.

  Ref: #11328

- runtests: better detect and handle pipe errors in the controller

  Errors reading and writing to the pipes are now better detected and
  propagated up to the main test loop so it can be cleanly shut down. Such
  errors are usually due to a runner dying so it doesn't make much sense
  to try to continue the test run.

- runtests: cleanly abort the runner if the controller dies

  If the controller dies unexpectedly, have the runner stop its servers
  and exit cleanly. Otherwise, the orphaned servers will stay running in
  the background.

- runtests: improve error logging

  Give more information about test harness error conditions to help figure
  out what might be wrong. Print some internal test state when SIGUSR1 is
  sent to runtests.pl.

