-
-
Notifications
You must be signed in to change notification settings - Fork 682
Closed
Description
Hi,
I am reusing the same connection to download multiple files. I have NOOP enabled because I sometimes experience timeouts.
Look at this log
01-13 14:44:02.060 INFO 144 FtpLogger Response: 227 Entering Passive Mode (172,30,14,136,173,237)
01-13 14:44:02.062 INFO 144 FtpLogger Status: Connecting to 172.30.14.136:44525
01-13 14:44:02.067 INFO 144 FtpLogger Command: RETR 20211215_16.35.27-WD.log
01-13 14:44:02.124 INFO 144 FtpLogger Response: 125 Transfer starting BINARY mode for 20211215_16.35.27-WD.log.
01-13 14:44:03.580 DEBUG 144 FtpLogger Command: NOOP
01-13 14:44:03.585 DEBUG 144 FtpLogger Status: Disposing FtpSocketStream...
01-13 14:44:03.592 INFO 144 FtpLogger Response: 226 Transfer complete.
01-13 14:44:03.596 INFO 144 FtpLogger File Verification: PASS
01-13 14:44:03.598 DEBUG 144 FtpLogger > DownloadFile("C:\temp\logs\20210428_13.42.14-PO.log", "20210428_13.42.14-PO.log", Overwrite, OnlyChecksum)
01-13 14:44:03.607 DEBUG 144 FtpLogger > GetFileSize("20210428_13.42.14-PO.log")
01-13 14:44:03.613 DEBUG 144 FtpLogger > OpenRead("20210428_13.42.14-PO.log", Binary, 0, -1)
01-13 14:44:03.625 DEBUG 144 FtpLogger > OpenPassiveDataStream(PASV, "RETR 20210428_13.42.14-PO.log", 0)
01-13 14:44:03.636 INFO 144 FtpLogger Command: PASV
01-13 14:44:03.700 INFO 144 FtpLogger Response: 200 NOOP command successful.
01-13 14:44:03.899 DEBUG 144 FtpLogger > DownloadFile("C:\temp\logs\20211011_13.47.08-PO.log", "20211011_13.47.08-PO.log", Overwrite, OnlyChecksum)
01-13 14:44:03.914 DEBUG 144 FtpLogger > GetFileSize("20211011_13.47.08-PO.log")
01-13 14:44:03.931 DEBUG 144 FtpLogger > OpenRead("20211011_13.47.08-PO.log", Binary, 0, -1)
As you can see the NOOP response arrived very late and was probably treated as the response to the PASV command.
I see the following issues here.
- When NOOP is enabled we currently keep track of them by a boolean which means that if we send 3 of them, we lose that info. It's probably better to count the number of expected NOOP
- When looking for stale data we use the
AvailableDataon the socket, which does not wait, so like in this scenario no data was actually available even if we knew that a NOOP response should arrive. So I would not use the check stale data function here - I do not understand why the PASV listener is accepting the NOOP response. I mean, ok it's a success reply but then the PASV regex parsing should fail, but it doesn't.
Any thought?
Thanks
A
Reactions are currently unavailable