mirror of
https://github.com/python/cpython.git
synced 2025-08-25 11:15:02 +00:00
Issue #10429: IMAP.starttls() stored the capabilities as bytes objects,
rather than strings.
This commit is contained in:
parent
36c0dbc9be
commit
dbe7519da9
3 changed files with 20 additions and 11 deletions
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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?
|
||||
=================================
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue