From: Piers Lauder Date: Thu, 20 May 2004 01:16:14 +0000 (+0000) Subject: Fixed IMAP4_SSL read and readlines code per patch 956394 X-Git-Tag: v2.4a1~356 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8f2b24401ee92cb90b5a75ef63dedfbfc883c140;p=python Fixed IMAP4_SSL read and readlines code per patch 956394 --- diff --git a/Lib/imaplib.py b/Lib/imaplib.py index b70c47ca1c..96fdf834bf 100644 --- a/Lib/imaplib.py +++ b/Lib/imaplib.py @@ -1100,21 +1100,24 @@ class IMAP4_SSL(IMAP4): def read(self, size): """Read 'size' bytes from remote.""" # sslobj.read() sometimes returns < size bytes - data = self.sslobj.read(size) - while len(data) < size: - data += self.sslobj.read(size-len(data)) + chunks = [] + read = 0 + while read < size: + data = self.sslobj.read(size-read) + read += len(data) + chunks.append(size) - return data + return ''.join(chunks) def readline(self): """Read line from remote.""" # NB: socket.ssl needs a "readline" method, or perhaps a "makefile" method. - line = "" + line = [] while 1: char = self.sslobj.read(1) - line += char - if char == "\n": return line + line.append(char) + if char == "\n": return ''.join(line) def send(self, data):