curl/tests/http/testenv
Stefan Eissing 80a3b830cc
http: expect 100 rework
Move all handling of HTTP's `Expect: 100-continue` feature into a client
reader. Add sending flag `KEEP_SEND_TIMED` that triggers transfer
sending on general events like a timer.

HTTP installs a `CURL_CR_PROTOCOL` reader when announcing `Expect:
100-continue`. That reader works as follows:

- on first invocation, records time, starts the `EXPIRE_100_TIMEOUT`
  timer, disables `KEEP_SEND`, enables `KEEP_SEND_TIMER` and returns 0,
  eos=FALSE like a paused upload.

- on subsequent invocation it checks if the timer has expired. If so, it
  enables `KEEP_SEND` and switches to passing through reads to the
  underlying readers.

Transfer handling's `readwrite()` will be invoked when a timer expires
(like `EXPIRE_100_TIMEOUT`) or when data from the server arrives. Seeing
`KEEP_SEND_TIMER`, it will try to upload more data, which triggers
reading from the client readers again. Which then may lead to a new
pausing or cause the upload to start.

Flags and timestamps connected to this have been moved from
`SingleRequest` into the reader's context.

Closes #13110
2024-03-18 12:41:56 +01:00
..
mod_curltest http: expect 100 rework 2024-03-18 12:41:56 +01:00
__init__.py pytest: Scorecard tracking CPU and RSS 2024-01-25 09:16:23 +01:00
caddy.py
certs.py https-proxy: use IP address and cert with ip in alt names 2024-02-06 10:10:14 +01:00
client.py websocket: fix curl_ws_recv() 2024-02-20 13:57:58 +01:00
curl.py https-proxy: use IP address and cert with ip in alt names 2024-02-06 10:10:14 +01:00
env.py mbedtls: fix pytest for newer versions 2024-03-18 12:37:00 +01:00
httpd.py vtls: revert "receive max buffer" + add test case 2024-02-07 14:46:41 +01:00
nghttpx.py http3: initial support for OpenSSL 3.2 QUIC stack 2024-01-22 16:15:45 +01:00
ports.py
ws_echo_server.py