我有一个FTP驱动程序的问题,我们有使用indy的idFTP。当我们从 Delphi 10升级时,我们的软件中出现了回归。2到 Delphi 11。
连接和身份验证似乎正常,然后列表阶段失败。这是wireshark捕获的序列与D10。2和D11版本。使用的服务器是Filezilla,以便于复制,但我们已经观察到类似的行为与FTP服务器,我们通常的目标。
Delphi 102、功能:
在 Delphi 11中,非功能性:
我观察到的主要区别是客户端发出的MLSD命令不再像所有命令那样包含行结尾(/r/n)。我想这就是问题的根源。
我试着查看idFTP的差异。在 Delphi 的两个版本之间都没有通过,但是有太多的变化,我无法找到问题的根本原因。
我在网上看到过类似的问题(与行尾有关,在某些情况下,修复程序将Write()替换为WriteLn(),所以这可能是更广泛的更改的一部分)。
希望有人能有办法
1条答案
按热度按时间41ik7eoe1#
这是Indy的一个已知问题:
#377: FTP LIST timeout with latest Delphi 11 (and idFTP)
这在Indy中有already been fixed,但该修复未包含在 Delphi 11附带的版本中。
请注意,该问题只影响 Active 模式传输(
TIdFTP.Passive=false
),因此请使用 Passive 模式(TIdFTP.Passive=true
)(无论如何都应该使用)。最新的是updating your Indy version。