]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
better fix for the dl/ul counters
authorDaniel Stenberg <daniel@haxx.se>
Fri, 18 May 2007 10:40:43 +0000 (10:40 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 18 May 2007 10:40:43 +0000 (10:40 +0000)
lib/tftp.c

index 9104d605c4c5dac56f042a7e7dcae7b1b2baa75b..d63ad773b4f658358c19ee17843d89f73b016348 100644 (file)
@@ -431,6 +431,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
   int sbytes;
   int rblock;
   CURLcode res = CURLE_OK;
+  struct Curl_transfer_keeper *k = &data->reqdata.keep;
 
   switch(event) {
 
@@ -485,6 +486,9 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
       failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO));
       return CURLE_SEND_ERROR;
     }
+    /* Update the progress meter */
+    k->writebytecount += state->sbytes;
+    Curl_pgrsSetUploadCounter(data, k->writebytecount);
     break;
 
   case TFTP_EVENT_TIMEOUT:
@@ -508,6 +512,8 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
         failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO));
         return CURLE_SEND_ERROR;
       }
+      /* since this was a re-send, we remain at the still byte position */
+      Curl_pgrsSetUploadCounter(data, k->writebytecount);
     }
     break;
 
@@ -520,9 +526,6 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
     break;
   }
 
-  /* Update the progress meter */
-  Curl_pgrsSetUploadCounter(data, (curl_off_t) state->block*TFTP_BLOCKSIZE);
-
   return res;
 }
 
@@ -667,6 +670,7 @@ CURLcode Curl_tftp(struct connectdata *conn, bool *done)
   struct Curl_sockaddr_storage fromaddr;
   socklen_t             fromlen;
   int                   check_time = 0;
+  struct Curl_transfer_keeper *k = &data->reqdata.keep;
 
   *done = TRUE;
 
@@ -739,8 +743,8 @@ CURLcode Curl_tftp(struct connectdata *conn, bool *done)
                                      state->rbytes-4);
             if(code)
               return code;
-            Curl_pgrsSetDownloadCounter(data,
-                                        (curl_off_t) state->rbytes-4);
+            k->bytecount += state->rbytes-4;
+            Curl_pgrsSetDownloadCounter(data, (curl_off_t) k->bytecount);
           }
           break;
         case TFTP_EVENT_ERROR: