Issue #10429: IMAP.starttls() stored the capabilities as bytes objects,

rather than strings.
This commit is contained in:
Antoine Pitrou 2010-11-16 17:55:26 +00:00
parent 36c0dbc9be
commit dbe7519da9
3 changed files with 20 additions and 11 deletions

View File

@ -196,13 +196,7 @@ class IMAP4:
else:
raise self.error(self.welcome)
typ, dat = self.capability()
if dat == [None]:
raise self.error('no CAPABILITY response from server')
dat = str(dat[-1], "ASCII")
dat = dat.upper()
self.capabilities = tuple(dat.split())
self._get_capabilities()
if __debug__:
if self.debug >= 3:
self._mesg('CAPABILITIES: %r' % (self.capabilities,))
@ -737,10 +731,7 @@ class IMAP4:
self.sock = ssl_context.wrap_socket(self.sock)
self.file = self.sock.makefile('rb')
self._tls_established = True
typ, dat = self.capability()
if dat == [None]:
raise self.error('no CAPABILITY response from server')
self.capabilities = tuple(dat[-1].upper().split())
self._get_capabilities()
else:
raise self.error("Couldn't establish TLS session")
return self._untagged_response(typ, dat, name)
@ -956,6 +947,15 @@ class IMAP4:
return typ, data
def _get_capabilities(self):
typ, dat = self.capability()
if dat == [None]:
raise self.error('no CAPABILITY response from server')
dat = str(dat[-1], "ASCII")
dat = dat.upper()
self.capabilities = tuple(dat.split())
def _get_response(self):
# Read response and store.

View File

@ -208,6 +208,8 @@ class RemoteIMAPTest(unittest.TestCase):
self.server.logout()
def test_logincapa(self):
for cap in self.server.capabilities:
self.assertIsInstance(cap, str)
self.assertTrue('LOGINDISABLED' in self.server.capabilities)
self.assertTrue('AUTH=ANONYMOUS' in self.server.capabilities)
rs = self.server.login(self.username, self.password)
@ -228,6 +230,8 @@ class RemoteIMAP_STARTTLSTest(RemoteIMAPTest):
self.assertEqual(rs[0], 'OK')
def test_logincapa(self):
for cap in self.server.capabilities:
self.assertIsInstance(cap, str)
self.assertFalse('LOGINDISABLED' in self.server.capabilities)
@ -237,6 +241,8 @@ class RemoteIMAP_SSLTest(RemoteIMAPTest):
imap_class = IMAP4_SSL
def test_logincapa(self):
for cap in self.server.capabilities:
self.assertIsInstance(cap, str)
self.assertFalse('LOGINDISABLED' in self.server.capabilities)
self.assertTrue('AUTH=PLAIN' in self.server.capabilities)

View File

@ -13,6 +13,9 @@ Core and Builtins
Library
-------
- Issue #10429: IMAP.starttls() stored the capabilities as bytes objects,
rather than strings.
What's New in Python 3.2 Alpha 4?
=================================