Issue #6622: Fix 'variable referenced before assignment' bug in POP3.apop.
Thanks Vincent Legoll.
This commit is contained in:
parent
ba5c74329d
commit
ea1158f9f3
|
@ -282,7 +282,7 @@ class POP3:
|
||||||
|
|
||||||
NB: mailbox is locked by server from here to 'quit()'
|
NB: mailbox is locked by server from here to 'quit()'
|
||||||
"""
|
"""
|
||||||
secret = bytes(secret, self.encoding)
|
secret = bytes(password, self.encoding)
|
||||||
m = self.timestamp.match(self.welcome)
|
m = self.timestamp.match(self.welcome)
|
||||||
if not m:
|
if not m:
|
||||||
raise error_proto('-ERR APOP not supported by server')
|
raise error_proto('-ERR APOP not supported by server')
|
||||||
|
|
|
@ -36,7 +36,7 @@ class DummyPOP3Handler(asynchat.async_chat):
|
||||||
asynchat.async_chat.__init__(self, conn)
|
asynchat.async_chat.__init__(self, conn)
|
||||||
self.set_terminator(b"\r\n")
|
self.set_terminator(b"\r\n")
|
||||||
self.in_buffer = []
|
self.in_buffer = []
|
||||||
self.push('+OK dummy pop3 server ready.')
|
self.push('+OK dummy pop3 server ready. <timestamp>')
|
||||||
|
|
||||||
def collect_incoming_data(self, data):
|
def collect_incoming_data(self, data):
|
||||||
self.in_buffer.append(data)
|
self.in_buffer.append(data)
|
||||||
|
@ -104,6 +104,9 @@ class DummyPOP3Handler(asynchat.async_chat):
|
||||||
def cmd_rpop(self, arg):
|
def cmd_rpop(self, arg):
|
||||||
self.push('+OK done nothing.')
|
self.push('+OK done nothing.')
|
||||||
|
|
||||||
|
def cmd_apop(self, arg):
|
||||||
|
self.push('+OK done nothing.')
|
||||||
|
|
||||||
|
|
||||||
class DummyPOP3Server(asyncore.dispatcher, threading.Thread):
|
class DummyPOP3Server(asyncore.dispatcher, threading.Thread):
|
||||||
|
|
||||||
|
@ -169,7 +172,8 @@ class TestPOP3Class(TestCase):
|
||||||
self.server.stop()
|
self.server.stop()
|
||||||
|
|
||||||
def test_getwelcome(self):
|
def test_getwelcome(self):
|
||||||
self.assertEqual(self.client.getwelcome(), b'+OK dummy pop3 server ready.')
|
self.assertEqual(self.client.getwelcome(),
|
||||||
|
b'+OK dummy pop3 server ready. <timestamp>')
|
||||||
|
|
||||||
def test_exceptions(self):
|
def test_exceptions(self):
|
||||||
self.assertRaises(poplib.error_proto, self.client._shortcmd, 'echo -err')
|
self.assertRaises(poplib.error_proto, self.client._shortcmd, 'echo -err')
|
||||||
|
@ -209,6 +213,9 @@ class TestPOP3Class(TestCase):
|
||||||
def test_rpop(self):
|
def test_rpop(self):
|
||||||
self.assertOK(self.client.rpop('foo'))
|
self.assertOK(self.client.rpop('foo'))
|
||||||
|
|
||||||
|
def test_apop(self):
|
||||||
|
self.assertOK(self.client.apop('foo', 'dummypassword'))
|
||||||
|
|
||||||
def test_top(self):
|
def test_top(self):
|
||||||
expected = (b'+OK 116 bytes',
|
expected = (b'+OK 116 bytes',
|
||||||
[b'From: postmaster@python.org', b'Content-Type: text/plain',
|
[b'From: postmaster@python.org', b'Content-Type: text/plain',
|
||||||
|
@ -239,7 +246,7 @@ if hasattr(poplib, 'POP3_SSL'):
|
||||||
self.set_socket(ssl_socket)
|
self.set_socket(ssl_socket)
|
||||||
self.set_terminator(b"\r\n")
|
self.set_terminator(b"\r\n")
|
||||||
self.in_buffer = []
|
self.in_buffer = []
|
||||||
self.push('+OK dummy pop3 server ready.')
|
self.push('+OK dummy pop3 server ready. <timestamp>')
|
||||||
|
|
||||||
class TestPOP3_SSLClass(TestPOP3Class):
|
class TestPOP3_SSLClass(TestPOP3Class):
|
||||||
# repeat previous tests by using poplib.POP3_SSL
|
# repeat previous tests by using poplib.POP3_SSL
|
||||||
|
|
|
@ -63,6 +63,9 @@ C-API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6622: Fix "local variable 'secret' referenced before
|
||||||
|
assignment" bug in POP3.apop.
|
||||||
|
|
||||||
- Issue #2715: Remove remnants of Carbon.File from binhex module.
|
- Issue #2715: Remove remnants of Carbon.File from binhex module.
|
||||||
|
|
||||||
- Issue #6595: The Decimal constructor now allows arbitrary Unicode
|
- Issue #6595: The Decimal constructor now allows arbitrary Unicode
|
||||||
|
|
Loading…
Reference in New Issue