From 4656580b54dd6e7cc063003d65841d9f3d9a009e Mon Sep 17 00:00:00 2001 From: hlaaftana <10591326+hlaaftana@users.noreply.github.com> Date: Fri, 24 Jan 2020 02:18:16 +0300 Subject: Fixes asyncftpclient multiline reading, fixes #4684 (#13242) Previously, the 4th character of `result` was checked for `'-'` every time, instead of each new line. Also made it work for taint mode. --- lib/pure/asyncftpclient.nim | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'lib/pure') diff --git a/lib/pure/asyncftpclient.nim b/lib/pure/asyncftpclient.nim index c1cfc6cc6..7bbfc2a35 100644 --- a/lib/pure/asyncftpclient.nim +++ b/lib/pure/asyncftpclient.nim @@ -131,12 +131,13 @@ type const multiLineLimit = 10000 proc expectReply(ftp: AsyncFtpClient): Future[TaintedString] {.async.} = - result = await ftp.csock.recvLine() + var line = await ftp.csock.recvLine() + result = TaintedString(line) var count = 0 - while result[3] == '-': + while line[3] == '-': ## Multi-line reply. - let line = await ftp.csock.recvLine() - result.add("\n" & line) + line = await ftp.csock.recvLine() + string(result).add("\n" & line) count.inc() if count >= multiLineLimit: raise newException(ReplyError, "Reached maximum multi-line reply count.") @@ -178,7 +179,7 @@ proc connect*(ftp: AsyncFtpClient) {.async.} = await ftp.csock.connect(ftp.address, ftp.port) var reply = await ftp.expectReply() - if reply.startsWith("120"): + if string(reply).startsWith("120"): # 120 Service ready in nnn minutes. # We wait until we receive 220. reply = await ftp.expectReply() -- cgit 1.4.1-2-gfad0