[Twisted-Python] ftp: LIST blocking issues

Andy Gayton andy at thecablelounge.com
Thu Sep 16 18:20:38 EDT 2004


Andy Gayton wrote:
> I'm finding that the ftp server hangs the client when performing a LIST. 
>    I thought it was something to do with what I was doing, but find it 
> happens with the standard tap anonymous ftp server as well.
> 
> It looks like processCommand adds requests to a blocked queue if 
> dtpInstance is None - which it is in my case:
> 
> ----
> 2004/09/13 14:03 EST [FTP,0,127.0.0.1] 'PORT 127,0,0,1,152,65'
> 2004/09/13 14:03 EST [FTP,0,127.0.0.1] processing command ['PORT', 
> '127,0,0,1,152,65']
> 2004/09/13 14:03 EST [FTP,0,127.0.0.1] FTP.processCommand: cmd = PORT, 
> args = ('127,0,0,1,152,65',)
> 2004/09/13 14:03 EST [FTP,0,127.0.0.1] FTP.processCommand: cmd PORT in 
> blockingCommands
> 2004/09/13 14:03 EST [FTP,0,127.0.0.1] FTP.processCommand: 
> self.dtpInstance = None
> 2004/09/13 14:03 EST [FTP,0,127.0.0.1] during dtp setup, blocked = 
> [('PORT', ('127,0,0,1,152,65',))]
> ----
> 
> I created the server with 'mktap ftp --root=/tmp' against Twisted trunk 
> r11660
> 
> Is there something I'm missing?

As far as I can tell the ftp protocol is only creating a dtpInstance 
when processing a PASV or PORT command.  But the PORT command blocks if 
there is no dtpInstance - so only passive clients can get a dtpInstance.

I used pftp to the standard tap anonymous ftp server and it works fine.

Does anyone know if this was intentional?  non-passive clients did work 
with Twisted r9390 and before which is fair while ago, so I'm guessing 
it is .. ?

I don't know anything about the inards of the ftp protocol, so just 
trying to get my head around what's going on.

Any clarification would be appreciated,

cheers,

Andy.




More information about the Twisted-Python mailing list