[Twisted-Python] ftp: LIST blocking issues

Hi there,
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?
thanks, Andy.

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.

Andy Gayton wrote:
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.
Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
Well, basically, ftp is broken in subtle ways. IIRC, the support for the PORT command was iffy at best.
The best thing you can do is go to twistedmatrix.com and file a bug report. The protoocol is in the middle of yet-another rewrite, and having this issue in the bug-tracker will help to make sure that it gets fixed.
-Jonathan Simms
participants (2)
-
Andy Gayton
-
Jonathan Simms