diff options
-rw-r--r-- | lib/pure/asyncftpclient.nim | 5 | ||||
-rw-r--r-- | lib/pure/ftpclient.nim | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/pure/asyncftpclient.nim b/lib/pure/asyncftpclient.nim index daf69d59f..ff98d94c1 100644 --- a/lib/pure/asyncftpclient.nim +++ b/lib/pure/asyncftpclient.nim @@ -79,7 +79,12 @@ proc connect*(ftp: AsyncFtpClient) {.async.} = # 120 Service ready in nnn minutes. # We wait until we receive 220. reply = await ftp.expectReply() + + # Handle 220 messages from the server assertReply(reply, "220") + while reply[3] == "-": # handle multiline 220 message + assertReply(reply, "220") + reply = await ftp.expectReply() if ftp.user != "": assertReply(await(ftp.send("USER " & ftp.user)), "230", "331") diff --git a/lib/pure/ftpclient.nim b/lib/pure/ftpclient.nim index dd141eb01..2644fc010 100644 --- a/lib/pure/ftpclient.nim +++ b/lib/pure/ftpclient.nim @@ -263,8 +263,17 @@ proc connect*[T](ftp: FtpBase[T]) = else: {.fatal: "Incorrect socket instantiation".} - # TODO: Handle 120? or let user handle it. + var reply = ftp.expectReply() + if reply.startsWith("120"): + # 120 Service ready in nnn minutes. + # We wait until we receive 220. + reply = ftp.expectReply() + + # Handle 220 messages from the server assertReply ftp.expectReply(), "220" + while reply[3] == "-": # handle multiline 220 message + assertReply ftp.expectReply(), "220" + reply = ftp.expectReply() if ftp.user != "": assertReply(ftp.send("USER " & ftp.user), "230", "331") |