Merge #22215: have the smtplib 'quit' command reset the state.
This commit is contained in:
commit
b10be15508
|
@ -891,6 +891,10 @@ class SMTP:
|
|||
def quit(self):
|
||||
"""Terminate the SMTP session."""
|
||||
res = self.docmd("quit")
|
||||
# A new EHLO is required after reconnecting with connect()
|
||||
self.ehlo_resp = self.helo_resp = None
|
||||
self.esmtp_features = {}
|
||||
self.does_esmtp = False
|
||||
self.close()
|
||||
return res
|
||||
|
||||
|
|
|
@ -876,6 +876,21 @@ class SMTPSimTests(unittest.TestCase):
|
|||
str(err))
|
||||
smtp.close()
|
||||
|
||||
def test_quit_resets_greeting(self):
|
||||
smtp = smtplib.SMTP(HOST, self.port,
|
||||
local_hostname='localhost',
|
||||
timeout=15)
|
||||
code, message = smtp.ehlo()
|
||||
self.assertEqual(code, 250)
|
||||
self.assertIn('size', smtp.esmtp_features)
|
||||
smtp.quit()
|
||||
self.assertNotIn('size', smtp.esmtp_features)
|
||||
smtp.connect(HOST, self.port)
|
||||
self.assertNotIn('size', smtp.esmtp_features)
|
||||
smtp.ehlo_or_helo_if_needed()
|
||||
self.assertIn('size', smtp.esmtp_features)
|
||||
smtp.quit()
|
||||
|
||||
def test_with_statement(self):
|
||||
with smtplib.SMTP(HOST, self.port) as smtp:
|
||||
code, message = smtp.noop()
|
||||
|
|
|
@ -124,6 +124,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #22216: smtplib now resets its state more completely after a quit. The
|
||||
most obvious consequence of the previous behavior was a STARTTLS failure
|
||||
during a connect/starttls/quit/connect/starttls sequence.
|
||||
|
||||
- Issue #22098: ctypes' BigEndianStructure and LittleEndianStructure now
|
||||
define an empty __slots__ so that subclasses don't always get an instance
|
||||
dict. Patch by Claudiu Popa.
|
||||
|
|
Loading…
Reference in New Issue