Commit 40c349ad authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

done: make sure the final progress update is made

It would previously be skipped if an existing error was returned, but
would lead to a previous value being left there and later used.
CURLINFO_TOTAL_TIME for example.

Still it avoids that final progress update if we reached DONE as the
result of a callback abort to avoid another callback to be called after
an abort-by-callback.

Reported-by: Lukas Ruzicka

Closes #538
parent bb9ec5eb
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -6088,8 +6088,13 @@ CURLcode Curl_done(struct connectdata **connp,
  else
    result = status;

  if(!result && Curl_pgrsDone(conn))
  if(CURLE_ABORTED_BY_CALLBACK != result) {
    /* avoid this if we already aborted by callback to avoid this calling
       another callback */
    CURLcode rc = Curl_pgrsDone(conn);
    if(!result && rc)
      result = CURLE_ABORTED_BY_CALLBACK;
  }

  if((conn->send_pipe->size + conn->recv_pipe->size != 0 &&
      !data->set.reuse_forbid &&