mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
progress callback: skip last callback update on errors
When an error has been detected, skip the final forced call to the progress callback by making sure to pass the current return code variable in the Curl_done() call in the CURLM_STATE_DONE state. This avoids the "extra" callback that could occur even if you returned error from the progress callback. Bug: http://curl.haxx.se/mail/lib-2014-06/0062.html Reported by: Jonathan Cardoso Machado
This commit is contained in:
parent
1c1d9a3a86
commit
907520c4b9
@ -1610,7 +1610,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
||||
Curl_multi_process_pending_handles(multi);
|
||||
|
||||
/* post-transfer command */
|
||||
res = Curl_done(&data->easy_conn, CURLE_OK, FALSE);
|
||||
res = Curl_done(&data->easy_conn, data->result, FALSE);
|
||||
|
||||
/* allow a previously set error code take precedence */
|
||||
if(!data->result)
|
||||
|
@ -5796,9 +5796,9 @@ CURLcode Curl_done(struct connectdata **connp,
|
||||
if(conn->handler->done)
|
||||
result = conn->handler->done(conn, status, premature);
|
||||
else
|
||||
result = CURLE_OK;
|
||||
result = status;
|
||||
|
||||
if(Curl_pgrsDone(conn) && !result)
|
||||
if(!result && Curl_pgrsDone(conn))
|
||||
result = CURLE_ABORTED_BY_CALLBACK;
|
||||
|
||||
/* if the transfer was completed in a paused state there can be buffered
|
||||
|
Loading…
Reference in New Issue
Block a user