mirror of
https://github.com/curl/curl.git
synced 2026-08-01 16:30:32 +03:00
lib: enhance client reader resume + rewind
- update client reader documentation
- client reader, add rewind capabilities
- tell creader to rewind on next start
- Curl_client_reset() will keep reader for future rewind if requested
- add Curl_client_cleanup() for freeing all resources independent of
rewinds
- add Curl_client_start() to trigger rewinds
- move rewind code from multi.c to sendf.c and make part of
"cr-in"'s implementation
- http, move the "resume_from" handling into the client readers
- the setup of a HTTP request is reshuffled to follow:
* determine method, target, auth negotiation
* install the client reader(s) for the request, including crlf
conversions and "chunked" encoding
* apply ranges to client reader
* concat request headers, upgrades, cookies, etc.
* complete request by determining Content-Length of installed
readers in combination with method
* send
- add methods for client readers to
* return the overall length they will generate (or -1 when unknown)
* return the amount of data on the CLIENT level, so that
expect-100 can decide if it want to apply itself
* set a "resume_from" offset or fail if unsupported
- struct HTTP has become largely empty now
- rename `Client_reader_*` to `Curl_creader_*`
Closes #13026
This commit is contained in:
parent
9c7768cd88
commit
14bcea074a
15 changed files with 752 additions and 474 deletions
|
|
@ -46,7 +46,8 @@ my %wl = (
|
|||
'Curl_xfer_write_resp' => 'internal api',
|
||||
'Curl_creader_def_init' => 'internal api',
|
||||
'Curl_creader_def_close' => 'internal api',
|
||||
);
|
||||
'Curl_creader_def_total_length' => 'internal api',
|
||||
);
|
||||
|
||||
my %api = (
|
||||
'curl_easy_cleanup' => 'API',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue