3
votes

We are using Indy TIdFTP with FileZilla 0.9.39 beta FTP Server.
Frequently (not always) our client is receiving the following exception:

exception class   : EIdReplyRFCError
exception message : Can't open data connection.
main thread ($d38):
006352e6 +03a     IdReplyRFC        258  +1 TIdReplyRFC.RaiseReplyError
0063af39 +005     IdTCPConnection   540  +0 TIdTCPConnection.RaiseExceptionForLastCmdResult
0063b17c +050     IdTCPConnection   644 +10 TIdTCPConnection.CheckResponse
0063aed2 +03a     IdTCPConnection   529  +2 TIdTCPConnection.GetResponse
0065986d +1ad     IdFTP            1460 +29 TIdFTP.InternalGet
006595bb +0f3     IdFTP            1386 +16 TIdFTP.List

This error occurs only inside his network! and it's not consistent.
I was unable to reproduce this error on our network. I have searched all over the web to find a solution and did not find anything. Is there anything could be done to fix this???

EDIT: We are using "Passive" mode.

1
More details could be helpful: are any firewalls or proxies involved? The data connection uses a separate port which could be blocked or closed. Also "Passive" mode FTP might help (Indy FTP has a property for this mode).mjn
@mjn, We are using "Passive" mode. is there anything we could do if firewalls or proxies involved? as I said this sometimes works and sometimes fails...ZigiZ
The latest stable version of FileZilla Server is 0.9.41. "beta" sounds like it is not a stable version, I would try to upgrade.mjn
@mjn, the 0.9.41 is also "beta". I have upgraded, now testing with client...ZigiZ
"Can't open data connection" in passive mode means either FileZilla could not open a new listening port on its end, or timed out waiting for TIdFTP to connect. The first would be a resource issue on the server end, the other would be a networking issue between the client and server. You will have to look at FileZilla's logs to determine what is going wrong.Remy Lebeau

1 Answers

0
votes

If someone has the same problem, it might be the case of TLS, some servers have problems with this. You can turn if of/on:

void __fastcall TForm1::turnOffTLS(TIdFTP *choosenFTP){ choosenFTP->DataPortProtection=ftpdpsClear; choosenFTP->UseTLS=utNoTLSSupport; }

void __fastcall TForm1::turnOnTLS(TIdFTP *choosenFTP){ choosenFTP->UseTLS=utUseExplicitTLS; choosenFTP->DataPortProtection=ftpdpsPrivate; }