I have a problem with failed file uploads between the ICS FTP client and
server when using passive mode, which may be related to the passive port
pool.  For some reason, the passive port pool does not allocate
sequential port numbers, but continually re-allocates the same numbers,
if they have been freed.   

So one upload works fine, less than a second later an attempt to upload
the next file fails with 'connection refused' in the client, perhaps
because the same port can not be re-used so quickly?

21:59:53:779  ** > PASV
21:59:53:808  ** < 227 Entering Passive Mode (192,168,0,7,82,9).
21:59:54:544  ** < 226 File received ok
21:59:55:209  ** > PASV
21:59:55:239  ** < 227 Entering Passive Mode (192,168,0,7,82,9).
21:59:56:290  Upload Failed: Unable to establish data connection -
Connection refused (#10061)

Although the client fakes a 550 error for the connection refused error,
it does not send any commands to the server, which keeps listening.
After the failed upload, I retry the upload, but at this point the server
is out of sequence and often responds with old responses, like: 

21:59:58:069  ** > PASV
21:59:58:101  ** < 226 File sent ok

I've changed my application code to always send an AbortXfer command if
the connection is refused, so the server gets back into sync with later
commands.  Maybe AbortXfer should be in the FTP client code?  

But I'm wondering if passive mode should be using incrementing ports, and
not the same ones all the time (my server only used four different ports
for the four simultaneous clients). 

Note these FTP commands are passing through a VPN, three Sonicwalls,  two
ADSL links and an ADSL bonding Firebrick, so the error could be elsewhere,
although I still have to recover from it better. 

To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to