summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorperter lee <liyang1025@gmail.com>2020-01-13 17:16:19 +0800
committerAndreas Rumpf <rumpf_a@web.de>2020-01-13 10:16:19 +0100
commit1f27a2f8ab696bbbfcf4d8f0bf2748dfc1cc86ad (patch)
tree28a3ed0dfa60333c79ac942ae710e25b08105164 /lib/pure
parentee1563ef33795b5ccac37921e3e4771c47c5d3fa (diff)
downloadNim-1f27a2f8ab696bbbfcf4d8f0bf2748dfc1cc86ad.tar.gz
fix the ftp store function read the local file bug (#13108) [backport]
* Update asyncftpclient.nim

When use newStringOfCap function not have assign memory for the string data,so if use this address the fault is rasise.

* complelete the bugfix
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/asyncftpclient.nim8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/pure/asyncftpclient.nim b/lib/pure/asyncftpclient.nim
index ce31542b1..c1cfc6cc6 100644
--- a/lib/pure/asyncftpclient.nim
+++ b/lib/pure/asyncftpclient.nim
@@ -351,15 +351,13 @@ proc doUpload(ftp: AsyncFtpClient, file: File,
   assert ftp.dsockConnected
 
   let total = file.getFileSize()
-  var data = newStringOfCap(4000)
+  var data = newString(4000)
   var progress = 0
   var progressInSecond = 0
   var countdownFut = sleepAsync(1000)
   var sendFut: Future[void] = nil
   while ftp.dsockConnected:
-    if sendFut == nil or sendFut.finished:
-      progress.inc(data.len)
-      progressInSecond.inc(data.len)
+    if sendFut == nil or sendFut.finished: 
       # TODO: Async file reading.
       let len = file.readBuffer(addr(data[0]), 4000)
       setLen(data, len)
@@ -370,6 +368,8 @@ proc doUpload(ftp: AsyncFtpClient, file: File,
 
         assertReply(await(ftp.expectReply()), "226")
       else:
+        progress.inc(len)
+        progressInSecond.inc(len)
         sendFut = ftp.dsock.send(data)
 
     if countdownFut.finished: