]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
multi: do a final progress update on connect failure
authorDaniel Stenberg <daniel@haxx.se>
Fri, 19 Jul 2024 22:44:27 +0000 (00:44 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 20 Jul 2024 15:11:00 +0000 (17:11 +0200)
To fix timing metric etc

Co-authored-by: Justin Maggard
Fixes #14204
Closes #14239

lib/multi.c
lib/progress.c
lib/progress.h

index 521af63b90e7f9d4f84ba0dc9557a30808d6fc7f..c09503efc19ab10a954ebe9aceaddfad6bd9754b 100644 (file)
@@ -2643,6 +2643,7 @@ statemachine_end:
         else if(data->mstate == MSTATE_CONNECT) {
           /* Curl_connect() failed */
           (void)Curl_posttransfer(data);
+          Curl_pgrsUpdate_nometer(data);
         }
 
         multistate(data, MSTATE_COMPLETED);
index 0f747b122c76dcbf32148c09cfbb384f433d7b96..34c29a2701de5d156fee68318ef4b13c53bcb279 100644 (file)
@@ -587,10 +587,8 @@ static void progress_meter(struct Curl_easy *data)
  * Curl_pgrsUpdate() returns 0 for success or the value returned by the
  * progress callback!
  */
-int Curl_pgrsUpdate(struct Curl_easy *data)
+static int pgrsupdate(struct Curl_easy *data, bool showprogress)
 {
-  struct curltime now = Curl_now(); /* what time is it */
-  bool showprogress = progress_calc(data, now);
   if(!(data->progress.flags & PGRS_HIDE)) {
     if(data->set.fxferinfo) {
       int result;
@@ -631,3 +629,19 @@ int Curl_pgrsUpdate(struct Curl_easy *data)
 
   return 0;
 }
+
+int Curl_pgrsUpdate(struct Curl_easy *data)
+{
+  struct curltime now = Curl_now(); /* what time is it */
+  bool showprogress = progress_calc(data, now);
+  return pgrsupdate(data, showprogress);
+}
+
+/*
+ * Update all progress, do not do progress meter/callbacks.
+ */
+void Curl_pgrsUpdate_nometer(struct Curl_easy *data)
+{
+  struct curltime now = Curl_now(); /* what time is it */
+  (void)progress_calc(data, now);
+}
index 73749419adda5635a884255f8115ff3a061c589c..860257425bf53d49ad22db0fe0c8728d7cd40dc6 100644 (file)
@@ -54,6 +54,8 @@ CURLcode Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size);
 void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size);
 void Curl_ratelimit(struct Curl_easy *data, struct curltime now);
 int Curl_pgrsUpdate(struct Curl_easy *data);
+void Curl_pgrsUpdate_nometer(struct Curl_easy *data);
+
 void Curl_pgrsResetTransferSizes(struct Curl_easy *data);
 struct curltime Curl_pgrsTime(struct Curl_easy *data, timerid timer);
 timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize,