mirror of
https://github.com/curl/curl.git
synced 2026-07-28 15:43:06 +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 Closes #4833
This commit is contained in:
parent
cf1466bd47
commit
87869e38d7
13 changed files with 616 additions and 12 deletions
|
|
@ -5,7 +5,7 @@
|
|||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
|
|
@ -730,11 +730,15 @@ int curl_formget(struct curl_httppost *form, void *arg,
|
|||
|
||||
switch(nread) {
|
||||
default:
|
||||
if(append(arg, buffer, nread) != nread)
|
||||
result = CURLE_READ_ERROR;
|
||||
break;
|
||||
if(append(arg, buffer, nread) == nread)
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case CURL_READFUNC_ABORT:
|
||||
case CURL_READFUNC_PAUSE:
|
||||
result = CURLE_ABORTED_BY_CALLBACK;
|
||||
break;
|
||||
case (size_t) -1: /* Read error. */
|
||||
case CURL_READFUNC_PAUSE: /* Should not be paused. */
|
||||
result = CURLE_READ_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue