Fixed IMAP4_SSL read and readlines code per patch 956394

This commit is contained in:
Piers Lauder 2004-05-20 01:16:14 +00:00
parent 6e1fd2f208
commit 8f2b24401e
1 changed files with 10 additions and 7 deletions

View File

@ -1100,21 +1100,24 @@ class IMAP4_SSL(IMAP4):
def read(self, size): def read(self, size):
"""Read 'size' bytes from remote.""" """Read 'size' bytes from remote."""
# sslobj.read() sometimes returns < size bytes # sslobj.read() sometimes returns < size bytes
data = self.sslobj.read(size) chunks = []
while len(data) < size: read = 0
data += self.sslobj.read(size-len(data)) while read < size:
data = self.sslobj.read(size-read)
read += len(data)
chunks.append(size)
return data return ''.join(chunks)
def readline(self): def readline(self):
"""Read line from remote.""" """Read line from remote."""
# NB: socket.ssl needs a "readline" method, or perhaps a "makefile" method. # NB: socket.ssl needs a "readline" method, or perhaps a "makefile" method.
line = "" line = []
while 1: while 1:
char = self.sslobj.read(1) char = self.sslobj.read(1)
line += char line.append(char)
if char == "\n": return line if char == "\n": return ''.join(line)
def send(self, data): def send(self, data):