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
..
2024-03-07 10:24:27 +01:00
2024-03-08 13:11:17 +01:00
2021-09-09 07:53:42 +02:00
2023-07-20 23:41:47 +02:00
2023-08-31 23:02:10 +00:00
2024-03-07 16:47:36 +01:00
2024-03-18 12:41:56 +01:00
2024-03-18 12:41:56 +01:00
2024-03-01 09:59:48 +01:00
2023-10-27 00:37:34 +00:00
2023-09-28 22:58:36 +02:00
2023-05-23 10:42:09 +02:00
2023-07-31 11:51:34 +02:00
2024-03-01 09:59:48 +01:00
2024-02-01 13:04:56 +01:00
2023-12-18 10:34:22 +01:00
2024-02-27 08:58:10 +01:00
2024-02-20 14:01:59 +01:00
2024-02-20 14:01:59 +01:00
2024-02-20 14:01:59 +01:00
2024-02-20 14:01:59 +01:00
2023-10-21 14:36:51 +02:00
2023-10-21 14:36:51 +02:00
2023-09-30 11:45:39 +02:00
2023-09-30 11:45:39 +02:00
2024-03-09 23:24:58 +01:00
2023-04-14 09:26:26 +02:00
2023-09-20 13:38:42 +02:00
2023-10-28 00:27:20 -04:00
2024-03-01 09:59:48 +01:00
2023-09-25 20:12:18 +02:00
2023-09-25 20:12:18 +02:00
2023-12-11 23:29:02 +01:00
2024-03-18 12:41:56 +01:00
2023-09-25 20:12:18 +02:00
2024-03-18 12:41:56 +01:00
2024-03-18 12:41:56 +01:00
2024-03-06 00:17:37 +01:00
2023-12-18 14:56:57 +00:00
2024-03-09 23:24:58 +01:00
2023-07-29 23:42:53 +02:00
2023-07-29 23:42:53 +02:00
2024-02-27 08:58:10 +01:00
2023-12-16 13:12:22 +00:00
2024-03-18 12:41:56 +01:00
2024-03-06 00:17:37 +01:00
2024-03-01 09:59:48 +01:00
2024-02-27 08:58:10 +01:00
2024-03-05 13:30:16 +01:00
2024-02-27 08:58:10 +01:00
2024-02-27 08:58:10 +01:00
2023-12-27 09:28:48 +01:00
2023-12-27 09:28:48 +01:00
2024-03-18 12:41:56 +01:00
2024-03-18 12:41:56 +01:00
2024-03-18 12:41:56 +01:00
2023-10-21 14:38:21 +02:00
2024-03-18 12:41:56 +01:00
2024-03-18 12:41:56 +01:00
2023-08-30 11:38:27 +02:00
2024-03-04 08:42:56 +01:00
2024-03-04 08:42:56 +01:00
2024-03-18 12:41:56 +01:00
2023-12-18 14:56:57 +00:00
2024-03-01 09:59:48 +01:00
2024-03-09 23:24:58 +01:00
2024-03-18 12:41:56 +01:00
2024-03-18 12:41:56 +01:00
2024-03-09 23:24:58 +01:00
2024-03-18 12:41:56 +01:00
2024-03-08 13:11:17 +01:00
2024-03-08 13:11:17 +01:00