8000 fix bug 1482: IMAP4 SSL isn't working · python/cpython@a771209 · GitHub
[go: up one dir, main page]

Skip to content

Commit a771209

Browse files
author
Bill Janssen
committed
fix bug 1482: IMAP4 SSL isn't working
1 parent db0a9b3 commit a771209

File tree

1 file changed

+5
-50
lines changed

1 file changed

+5
-50
lines changed

Lib/imaplib.py

Lines changed: 5 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,63 +1145,18 @@ def open(self, host = '', port = IMAP4_SSL_PORT):
11451145
"""
11461146
self.host = host
11471147
self.port = port
1148-
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1149-
self.sock.connect((host, port))
1150-
self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
1151-
1152-
1153-
def read(self, size):
1154-
"""Read 'size' bytes from remote."""
1155-
# sslobj.read() sometimes returns < size bytes
1156-
chunks = []
1157-
read = 0
1158-
while read < size:
1159-
data = self.sslobj.read(size-read)
1160-
read += len(data)
1161-
chunks.append(data)
1162-
1163-
return ''.join(chunks)
1164-
1165-
1166-
def readline(self):
1167-
"""Read line from remote."""
1168-
line = []
1169-
while 1:
1170-
char = self.sslobj.read(1)
1171-
line.append(char)
1172-
if char == "\n": return ''.join(line)
1173-
1174-
1175-
def send(self, data):
1176-
"""Send data to remote."""
1177-
bytes = len(data)
1178-
while bytes > 0:
1179-
sent = self.sslobj.write(data)
1180-
if sent == bytes:
1181-
break # avoid copy
1182-
data = data[sent:]
1183-
bytes = bytes - sent
1184-
1185-
1186-
def shutdown(self):
1187-
"""Close I/O established in "open"."""
1188-
self.sock.close()
1189-
1190-
1191-
def socket(self):
1192-
"""Return socket instance used to connect to IMAP4 server.
1193-
1194-
socket = <instance>.socket()
1195-
"""
1196-
return self.sock
1148+
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1149+
sock.connect((host, port))
1150+
self.sock = ssl.wrap_socket(sock, self.keyfile, self.certfile)
1151+
self.file = self.sock.makefile('rb')
11971152

11981153

11991154
def ssl(self):
12001155
"""Return SSLObject instance used to communicate with the IMAP4 server.
12011156
12021157
ssl = ssl.wrap_socket(<instance>.socket)
12031158
"""
1204-
return self.sslobj
1159+
return self.sock
12051160

12061161
__all__.append("IMAP4_SSL")
12071162

0 commit comments

Comments
 (0)
0