]> granicus.if.org Git - python/commitdiff
Patch #1359217: Ignore 2xx response before 150 response.
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 12 Nov 2006 18:48:13 +0000 (18:48 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 12 Nov 2006 18:48:13 +0000 (18:48 +0000)
Will backport to 2.5.

Lib/ftplib.py
Misc/NEWS

index 937ee4e8f03fa1c911196f03be53fbfb89dc41d5..9cb67dd55691654df0368f86db2b13ae45b2b810 100644 (file)
@@ -325,6 +325,14 @@ class FTP:
             if rest is not None:
                 self.sendcmd("REST %s" % rest)
             resp = self.sendcmd(cmd)
+            # Some servers apparently send a 200 reply to
+            # a LIST or STOR command, before the 150 reply
+            # (and way before the 226 reply). This seems to
+            # be in violation of the protocol (which only allows
+            # 1xx or error messages for LIST), so we just discard
+            # this response.
+            if resp[0] == '2':
+               resp = self.getresp()
             if resp[0] != '1':
                 raise error_reply, resp
         else:
@@ -332,6 +340,9 @@ class FTP:
             if rest is not None:
                 self.sendcmd("REST %s" % rest)
             resp = self.sendcmd(cmd)
+            # See above.
+            if resp[0] == '2':
+               resp = self.getresp()
             if resp[0] != '1':
                 raise error_reply, resp
             conn, sockaddr = sock.accept()
index bd9d2649c06a9a3940dc3545af17f49a411fd65c..85e231d88cf3631037a3bc2ba5e74554c08bf7ec 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -98,6 +98,9 @@ Core and builtins
 Library
 -------
 
+- Patch #1359217: Process 2xx response in an ftplib transfer
+  that precedes an 1xx response.
+
 - Patch #1355023: support whence argument for GzipFile.seek.
 
 - Patch #1065257: Support passing open files as body in