diff options
Diffstat (limited to 'Lib/ftplib.py')
-rw-r--r-- | Lib/ftplib.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/Lib/ftplib.py b/Lib/ftplib.py index b593fa1e76c..ada7475998e 100644 --- a/Lib/ftplib.py +++ b/Lib/ftplib.py @@ -493,9 +493,15 @@ class FTP: 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 @@ else: 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 @@ else: conn.close() return self.voidresp() + __all__.append('FTP_TLS') all_errors = (Error, IOError, EOFError, ssl.SSLError) |