]> granicus.if.org Git - python/commitdiff
as per discussion with antoine revert changes made in 83708 as the user useing ftplib...
authorGiampaolo Rodolà <g.rodola@gmail.com>
Wed, 4 Aug 2010 10:36:18 +0000 (10:36 +0000)
committerGiampaolo Rodolà <g.rodola@gmail.com>
Wed, 4 Aug 2010 10:36:18 +0000 (10:36 +0000)
Lib/ftplib.py
Lib/test/test_ftplib.py
Misc/ACKS
Misc/NEWS

index ada7475998e28d157313f6b5e89441526a37e865..b593fa1e76c1a7cc82bc6329184d5376433df25d 100644 (file)
@@ -493,15 +493,9 @@ class FTP:
         while 1:
             buf = fp.readline()
             if not buf: break
-            if isinstance(buf, str):
-                if not buf.endswith(CRLF):
-                    if buf[-1] in CRLF: buf = buf[:-1]
-                    buf = buf + CRLF
-                buf = bytes(buf, self.encoding)
-            else:
-                if not buf.endswith(B_CRLF):
-                    if buf[-1:] in B_CRLF: buf = buf[:-1]
-                    buf = buf + B_CRLF
+            if buf[-2:] != B_CRLF:
+                if buf[-1] in B_CRLF: buf = buf[:-1]
+                buf = buf + B_CRLF
             conn.sendall(buf)
             if callback: callback(buf)
         conn.close()
@@ -777,15 +771,9 @@ else:
                 while 1:
                     buf = fp.readline()
                     if not buf: break
-                    if isinstance(buf, str):
-                        if not buf.endswith(CRLF):
-                            if buf[-1] in CRLF: buf = buf[:-1]
-                            buf = buf + CRLF
-                        buf = bytes(buf, self.encoding)
-                    else:
-                        if not buf.endswith(B_CRLF):
-                            if buf[-1:] in B_CRLF: buf = buf[:-1]
-                            buf = buf + B_CRLF
+                    if buf[-2:] != B_CRLF:
+                        if buf[-1] in B_CRLF: buf = buf[:-1]
+                        buf = buf + B_CRLF
                     conn.sendall(buf)
                     if callback: callback(buf)
                 # shutdown ssl layer
@@ -795,7 +783,6 @@ else:
                 conn.close()
             return self.voidresp()
 
-
     __all__.append('FTP_TLS')
     all_errors = (Error, IOError, EOFError, ssl.SSLError)
 
index ce9a2d3829c3309e32cb79aa7c4300cbf07eec28..c8d0d88e74e522e981e07bf96503595f2ef2109d 100644 (file)
@@ -24,7 +24,6 @@ threading = support.import_module('threading')
 # the dummy data returned by server over the data channel when
 # RETR, LIST and NLST commands are issued
 RETR_DATA = 'abcde12345\r\n' * 1000
-RETR_TEXT = 'abcd\xe912345\r\n' * 1000
 LIST_DATA = 'foo\r\nbar\r\n'
 NLST_DATA = 'foo\r\nbar\r\n'
 
@@ -38,7 +37,7 @@ class DummyDTPHandler(asynchat.async_chat):
         self.baseclass.last_received_data = ''
 
     def handle_read(self):
-        self.baseclass.last_received_data += self.recv(1024).decode('latin-1')
+        self.baseclass.last_received_data += self.recv(1024).decode('ascii')
 
     def handle_close(self):
         # XXX: this method can be called many times in a row for a single
@@ -50,7 +49,7 @@ class DummyDTPHandler(asynchat.async_chat):
             self.dtp_conn_closed = True
 
     def push(self, what):
-        super(DummyDTPHandler, self).push(what.encode('latin-1'))
+        super(DummyDTPHandler, self).push(what.encode('ascii'))
 
     def handle_error(self):
         raise
@@ -69,7 +68,6 @@ class DummyFTPHandler(asynchat.async_chat):
         self.last_received_data = ''
         self.next_response = ''
         self.rest = None
-        self.current_type = 'a'
         self.push('220 welcome')
 
     def collect_incoming_data(self, data):
@@ -177,16 +175,7 @@ class DummyFTPHandler(asynchat.async_chat):
         self.push('257 "pwd ok"')
 
     def cmd_type(self, arg):
-        # ASCII type
-        if arg.lower() == 'a':
-            self.current_type = 'a'
-            self.push('200 type ok')
-        # Binary type
-        elif arg.lower() == 'i':
-            self.current_type = 'i'
-            self.push('200 type ok')
-        else:
-            self.push('504 unsupported type')
+        self.push('200 type ok')
 
     def cmd_quit(self, arg):
         self.push('221 quit ok')
@@ -205,10 +194,7 @@ class DummyFTPHandler(asynchat.async_chat):
             offset = int(self.rest)
         else:
             offset = 0
-        if self.current_type == 'i':
-            self.dtp.push(RETR_DATA[offset:])
-        else:
-            self.dtp.push(RETR_TEXT[offset:])
+        self.dtp.push(RETR_DATA[offset:])
         self.dtp.close_when_done()
         self.rest = None
 
@@ -525,7 +511,7 @@ class TestFTPClass(TestCase):
     def test_retrlines(self):
         received = []
         self.client.retrlines('retr', received.append)
-        self.assertEqual(''.join(received), RETR_TEXT.replace('\r\n', ''))
+        self.assertEqual(''.join(received), RETR_DATA.replace('\r\n', ''))
 
     def test_storbinary(self):
         f = io.BytesIO(RETR_DATA.encode('ascii'))
@@ -544,7 +530,7 @@ class TestFTPClass(TestCase):
             self.client.storbinary('stor', f, rest=r)
             self.assertEqual(self.server.handler_instance.rest, str(r))
 
-    def test_storlines_bytes(self):
+    def test_storlines(self):
         f = io.BytesIO(RETR_DATA.replace('\r\n', '\n').encode('ascii'))
         self.client.storlines('stor', f)
         self.assertEqual(self.server.handler_instance.last_received_data, RETR_DATA)
@@ -554,16 +540,6 @@ class TestFTPClass(TestCase):
         self.client.storlines('stor foo', f, callback=lambda x: flag.append(None))
         self.assertTrue(flag)
 
-    def test_storlines_str(self):
-        f = io.StringIO(RETR_TEXT.replace('\r\n', '\n'))
-        self.client.storlines('stor', f)
-        self.assertEqual(self.server.handler_instance.last_received_data, RETR_TEXT)
-        # test new callback arg
-        flag = []
-        f.seek(0)
-        self.client.storlines('stor foo', f, callback=lambda x: flag.append(None))
-        self.assertTrue(flag)
-
     def test_nlst(self):
         self.client.nlst()
         self.assertEqual(self.client.nlst(), NLST_DATA.split('\r\n')[:-1])
index 99a250bd1da137c112e34586cff37e3f1d15d161..bb00e0fcf7143acf39eaf9f0e4a47d4f0e8c820c 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -896,4 +896,3 @@ Uwe Zessin
 Tarek Ziadé
 Peter Åstrand
 Alexander Shigin
-Robert DeVaughn
index 3402cb9e270a463a285084f517ed9b3819dd5ad3..98b8da116ff6e2877da954969f72e799849642be 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -37,8 +37,6 @@ Extensions
 Library
 -------
 
-- Issue #6822: ftplib's storlines method doesn't work with text files.
-
 - Issue #2944: asyncore doesn't handle connection refused correctly.
 
 - Issue #4184: Private attributes on smtpd.SMTPChannel made public and