]> granicus.if.org Git - python/commitdiff
Fixed IMAP4_SSL read and readlines code per patch 956394
authorPiers Lauder <piers@cs.su.oz.au>
Thu, 20 May 2004 01:16:14 +0000 (01:16 +0000)
committerPiers Lauder <piers@cs.su.oz.au>
Thu, 20 May 2004 01:16:14 +0000 (01:16 +0000)
Lib/imaplib.py

index b70c47ca1cea1b05e6ca0c7f8b7685e0754a8b27..96fdf834bf66da3e4cca4c130b067d718e3d426a 100644 (file)
@@ -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):