tftp: fix progress bar for large (>32M) files. Closes 3499
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 11 Apr 2011 02:29:39 +0000 (04:29 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Mon, 11 Apr 2011 02:29:39 +0000 (04:29 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/tftp.c

index f52e49d51f07ceca64a7d504b893c4fa3b1ec513..e50d9254b5b2ae6864c7c805dd6f7424be4013fe 100644 (file)
@@ -455,6 +455,7 @@ static int tftp_protocol(
                                finished = 1;
                        }
                        cp += len;
+                       IF_FEATURE_TFTP_PROGRESS_BAR(G.pos += len;)
                }
  send_pkt:
                /* Send packet */
@@ -476,8 +477,6 @@ static int tftp_protocol(
                xsendto(socket_fd, xbuf, send_len, &peer_lsa->u.sa, peer_lsa->len);
 
 #if ENABLE_FEATURE_TFTP_PROGRESS_BAR
-               if (ENABLE_TFTP && remote_file) /* tftp */
-                       G.pos = (block_nr - 1) * (uoff_t)blksize;
                if (is_bb_progress_inited(&G.pmt))
                        tftp_progress_update();
 #endif
@@ -621,6 +620,7 @@ static int tftp_protocol(
                                if (sz != blksize) {
                                        finished = 1;
                                }
+                               IF_FEATURE_TFTP_PROGRESS_BAR(G.pos += sz;)
                                continue; /* send ACK */
                        }
 /* Disabled to cope with servers with Sorcerer's Apprentice Syndrome */