Log message for revision 103397: - LP #418454: FTP server did not work with Python 2.6.X
Changed: U Zope/branches/2.12/doc/CHANGES.rst U Zope/branches/2.12/src/ZServer/FTPServer.py -=- Modified: Zope/branches/2.12/doc/CHANGES.rst =================================================================== --- Zope/branches/2.12/doc/CHANGES.rst 2009-08-31 13:00:16 UTC (rev 103396) +++ Zope/branches/2.12/doc/CHANGES.rst 2009-08-31 13:03:19 UTC (rev 103397) @@ -48,6 +48,8 @@ Bugs Fixed ++++++++++ +- LP #418454: FTP server did not work with Python 2.6.X + - PythonScript: Fixed small Python 2.6 compatibility issue. - mkzopeinstance: Made instance scripts more suitable for egg based installs. Modified: Zope/branches/2.12/src/ZServer/FTPServer.py =================================================================== --- Zope/branches/2.12/src/ZServer/FTPServer.py 2009-08-31 13:00:16 UTC (rev 103396) +++ Zope/branches/2.12/src/ZServer/FTPServer.py 2009-08-31 13:03:19 UTC (rev 103397) @@ -64,6 +64,7 @@ """ +import sys from PubCore import handle from medusa.ftp_server import ftp_channel, ftp_server, recv_channel import asyncore, asynchat @@ -81,7 +82,9 @@ import stat import time +py26_or_later = sys.version_info >= (2,6) + class zope_ftp_channel(ftp_channel): "Passes its commands to Zope, not a filesystem" @@ -105,14 +108,26 @@ return path # Overriden async_chat methods - - def push(self, producer, send=1): + def push(self, data, send=1): # this is thread-safe when send is false # note, that strings are not wrapped in # producers by default - self.producer_fifo.push(producer) - if send: self.initiate_send() + # LP #418454 + if py26_or_later: + # Python 2.6 or later + sabs = self.ac_out_buffer_size + if len(data) > sabs: + for i in xrange(0, len(data), sabs): + self.producer_fifo.append(data[i:i+sabs]) + else: + self.producer_fifo.append(data) + else: + # pre-Python 2.6 + self.producer_fifo.push(data) + if send: + self.initiate_send() + push_with_producer=push _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins