mirror of
https://github.com/curl/curl.git
synced 2026-08-24 11:13:39 +03:00
mime: latch last read callback status.
In case a read callback returns a status (pause, abort, eof, error) instead of a byte count, drain the bytes read so far but remember this status for further processing. Takes care of not losing data when pausing, and properly resume a paused mime structure when requested. New tests 670-673 check unpausing cases, with easy or multi interface and mime or form api. Fixes #4813 Reported-by: MrdUkk on github
This commit is contained in:
parent
3dce9849be
commit
96972ec1c0
13 changed files with 628 additions and 13 deletions
|
|
@ -1003,6 +1003,14 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
|
|||
return CURLE_OK;
|
||||
}
|
||||
|
||||
/* Unpause parts in active mime tree. */
|
||||
if((k->keepon & ~newstate & KEEP_SEND_PAUSE) &&
|
||||
(data->mstate == CURLM_STATE_PERFORM ||
|
||||
data->mstate == CURLM_STATE_TOOFAST) &&
|
||||
data->state.fread_func == (curl_read_callback) Curl_mime_read) {
|
||||
Curl_mime_unpause(data->state.in);
|
||||
}
|
||||
|
||||
/* put it back in the keepon */
|
||||
k->keepon = newstate;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue