changeset: 97155:fe55a36a335b branch: 3.4 parent: 97152:6eb4441ed14b user: Robert Collins date: Fri Jul 31 08:59:02 2015 +1200 files: Lib/imaplib.py Lib/test/test_imaplib.py Misc/ACKS Misc/NEWS description: Issue #23779: imaplib raises TypeError if authenticator tries to abort. Patch from Craig Holmquist. diff -r 6eb4441ed14b -r fe55a36a335b Lib/imaplib.py --- a/Lib/imaplib.py Thu Jul 30 16:44:22 2015 -0400 +++ b/Lib/imaplib.py Fri Jul 31 08:59:02 2015 +1200 @@ -1306,7 +1306,7 @@ def process(self, data): ret = self.mech(self.decode(data)) if ret is None: - return '*' # Abort conversation + return b'*' # Abort conversation return self.encode(ret) def encode(self, inp): diff -r 6eb4441ed14b -r fe55a36a335b Lib/test/test_imaplib.py --- a/Lib/test/test_imaplib.py Thu Jul 30 16:44:22 2015 -0400 +++ b/Lib/test/test_imaplib.py Fri Jul 31 08:59:02 2015 +1200 @@ -325,6 +325,25 @@ self.assertEqual(ret, "OK") + + @reap_threads + def test_aborted_authentication(self): + + class MyServer(SimpleIMAPHandler): + + def cmd_AUTHENTICATE(self, tag, args): + self._send_textline('+') + self.response = yield + + if self.response == b'*\r\n': + self._send_tagged(tag, 'NO', '[AUTHENTICATIONFAILED] aborted') + else: + self._send_tagged(tag, 'OK', 'MYAUTH successful') + + with self.reaped_pair(MyServer) as (server, client): + with self.assertRaises(imaplib.IMAP4.error): + code, data = client.authenticate('MYAUTH', lambda x: None) + def test_linetoolong(self): class TooLongHandler(SimpleIMAPHandler): def handle(self): diff -r 6eb4441ed14b -r fe55a36a335b Misc/ACKS --- a/Misc/ACKS Thu Jul 30 16:44:22 2015 -0400 +++ b/Misc/ACKS Fri Jul 31 08:59:02 2015 +1200 @@ -592,6 +592,7 @@ Shane Holloway Rune Holm Thomas Holmes +Craig Holmquist Philip Homburg Naofumi Honda Jeffrey Honig diff -r 6eb4441ed14b -r fe55a36a335b Misc/NEWS --- a/Misc/NEWS Thu Jul 30 16:44:22 2015 -0400 +++ b/Misc/NEWS Fri Jul 31 08:59:02 2015 +1200 @@ -66,6 +66,9 @@ Library ------- +- Issue #23779: imaplib raises TypeError if authenticator tries to abort. + Patch from Craig Holmquist. + - Issue #23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch written by Matthieu Gautier.