fix issue #6822: ftplib's storline method doesn't work with text files
diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index b593fa1..ada7475 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -493,9 +493,15 @@
while 1:
buf = fp.readline()
if not buf: break
- if buf[-2:] != B_CRLF:
- if buf[-1] in B_CRLF: buf = buf[:-1]
- buf = buf + B_CRLF
+ 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
conn.sendall(buf)
if callback: callback(buf)
conn.close()
@@ -771,9 +777,15 @@
while 1:
buf = fp.readline()
if not buf: break
- if buf[-2:] != B_CRLF:
- if buf[-1] in B_CRLF: buf = buf[:-1]
- buf = buf + B_CRLF
+ 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
conn.sendall(buf)
if callback: callback(buf)
# shutdown ssl layer
@@ -783,6 +795,7 @@
conn.close()
return self.voidresp()
+
__all__.append('FTP_TLS')
all_errors = (Error, IOError, EOFError, ssl.SSLError)