mirror of
https://github.com/moparisthebest/curl
synced 2025-02-28 17:31:46 -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
|
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.
|
sizes so a program must be made to handle that.
|
||||||
|
|
||||||
Returning a non-zero value from this callback will cause libcurl to abort the
|
If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause
|
||||||
transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
|
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
|
If you transfer data with the multi interface, this function will not be
|
||||||
called during periods of idleness unless you call the appropriate libcurl
|
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
|
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.
|
sizes so a program must be made to handle that.
|
||||||
|
|
||||||
Returning a non-zero value from this callback will cause libcurl to abort the
|
If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause
|
||||||
transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP.
|
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
|
If you transfer data with the multi interface, this function will not be
|
||||||
called during periods of idleness unless you call the appropriate libcurl
|
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_NONE 7.14.0
|
||||||
CURL_POLL_OUT 7.14.0
|
CURL_POLL_OUT 7.14.0
|
||||||
CURL_POLL_REMOVE 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_BAR 7.1.1 - 7.4.1
|
||||||
CURL_PROGRESS_STATS 7.1.1 - 7.4.1
|
CURL_PROGRESS_STATS 7.1.1 - 7.4.1
|
||||||
CURL_PUSH_DENY 7.44.0
|
CURL_PUSH_DENY 7.44.0
|
||||||
|
@ -210,6 +210,11 @@ struct curl_httppost {
|
|||||||
set. Added in 7.46.0 */
|
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
|
/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now
|
||||||
considered deprecated but was the only choice up until 7.31.0 */
|
considered deprecated but was the only choice up until 7.31.0 */
|
||||||
typedef int (*curl_progress_callback)(void *clientp,
|
typedef int (*curl_progress_callback)(void *clientp,
|
||||||
|
@ -594,11 +594,13 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
|||||||
data->progress.size_ul,
|
data->progress.size_ul,
|
||||||
data->progress.uploaded);
|
data->progress.uploaded);
|
||||||
Curl_set_in_callback(data, false);
|
Curl_set_in_callback(data, false);
|
||||||
if(result)
|
if(result != CURL_PROGRESSFUNC_CONTINUE) {
|
||||||
failf(data, "Callback aborted");
|
if(result)
|
||||||
return result;
|
failf(data, "Callback aborted");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(data->set.fprogress) {
|
else if(data->set.fprogress) {
|
||||||
int result;
|
int result;
|
||||||
/* The older deprecated callback is set, call that */
|
/* The older deprecated callback is set, call that */
|
||||||
Curl_set_in_callback(data, true);
|
Curl_set_in_callback(data, true);
|
||||||
@ -608,9 +610,11 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
|||||||
(double)data->progress.size_ul,
|
(double)data->progress.size_ul,
|
||||||
(double)data->progress.uploaded);
|
(double)data->progress.uploaded);
|
||||||
Curl_set_in_callback(data, false);
|
Curl_set_in_callback(data, false);
|
||||||
if(result)
|
if(result != CURL_PROGRESSFUNC_CONTINUE) {
|
||||||
failf(data, "Callback aborted");
|
if(result)
|
||||||
return result;
|
failf(data, "Callback aborted");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(showprogress)
|
if(showprogress)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user