mirror of
https://github.com/moparisthebest/curl
synced 2025-02-28 09:21:50 -05:00
XFERINFOFUNCTION: support CURL_PROGRESSFUNC_CONTINUE
(also for PROGRESSFUNCTION) By returning this value from the callback, the internal progress function call is still called afterward. Closes #4599
This commit is contained in:
parent
9b879160df
commit
7cf18b05e0
@ -60,8 +60,11 @@ Unknown/unused argument values passed to the callback will be set to zero
|
||||
the callback will be called one or more times first, before it knows the data
|
||||
sizes so a program must be made to handle that.
|
||||
|
||||
Returning a non-zero value from this callback will cause libcurl to abort the
|
||||
transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
|
||||
If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause
|
||||
libcurl to continue executing the default progress function.
|
||||
|
||||
Returning any other non-zero value from this callback will cause libcurl to
|
||||
abort the transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
|
||||
|
||||
If you transfer data with the multi interface, this function will not be
|
||||
called during periods of idleness unless you call the appropriate libcurl
|
||||
|
@ -57,8 +57,11 @@ Unknown/unused argument values passed to the callback will be set to zero
|
||||
the callback will be called one or more times first, before it knows the data
|
||||
sizes so a program must be made to handle that.
|
||||
|
||||
Returning a non-zero value from this callback will cause libcurl to abort the
|
||||
transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
|
||||
If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause
|
||||
libcurl to continue executing the default progress function.
|
||||
|
||||
Returning any other non-zero value from this callback will cause libcurl to
|
||||
abort the transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
|
||||
|
||||
If you transfer data with the multi interface, this function will not be
|
||||
called during periods of idleness unless you call the appropriate libcurl
|
||||
|
@ -869,6 +869,7 @@ CURL_POLL_INOUT 7.14.0
|
||||
CURL_POLL_NONE 7.14.0
|
||||
CURL_POLL_OUT 7.14.0
|
||||
CURL_POLL_REMOVE 7.14.0
|
||||
CURL_PROGRESSFUNC_CONTINUE 7.68.0
|
||||
CURL_PROGRESS_BAR 7.1.1 - 7.4.1
|
||||
CURL_PROGRESS_STATS 7.1.1 - 7.4.1
|
||||
CURL_PUSH_DENY 7.44.0
|
||||
|
@ -210,6 +210,11 @@ struct curl_httppost {
|
||||
set. Added in 7.46.0 */
|
||||
};
|
||||
|
||||
|
||||
/* This is a return code for the progress callback that, when returned, will
|
||||
signal libcurl to continue executing the default progress function */
|
||||
#define CURL_PROGRESSFUNC_CONTINUE 0x10000001
|
||||
|
||||
/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now
|
||||
considered deprecated but was the only choice up until 7.31.0 */
|
||||
typedef int (*curl_progress_callback)(void *clientp,
|
||||
|
@ -594,11 +594,13 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
||||
data->progress.size_ul,
|
||||
data->progress.uploaded);
|
||||
Curl_set_in_callback(data, false);
|
||||
if(result)
|
||||
failf(data, "Callback aborted");
|
||||
return result;
|
||||
if(result != CURL_PROGRESSFUNC_CONTINUE) {
|
||||
if(result)
|
||||
failf(data, "Callback aborted");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
if(data->set.fprogress) {
|
||||
else if(data->set.fprogress) {
|
||||
int result;
|
||||
/* The older deprecated callback is set, call that */
|
||||
Curl_set_in_callback(data, true);
|
||||
@ -608,9 +610,11 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
||||
(double)data->progress.size_ul,
|
||||
(double)data->progress.uploaded);
|
||||
Curl_set_in_callback(data, false);
|
||||
if(result)
|
||||
failf(data, "Callback aborted");
|
||||
return result;
|
||||
if(result != CURL_PROGRESSFUNC_CONTINUE) {
|
||||
if(result)
|
||||
failf(data, "Callback aborted");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if(showprogress)
|
||||
|
Loading…
x
Reference in New Issue
Block a user