Comply with RFC 3207.
Fixes issue 829951 - http://bugs.python.org/issue829951
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index 126f546..48efaba 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -1091,6 +1091,12 @@
.. Patch #957003
+* In the :mod:`smtplib` module, SMTP.starttls() now complies with :rfc:`3207`
+ and forgets any knowledge obtained from the server not obtained from
+ the TLS negotiation itself. Patch contributed by Bill Fenner.
+
+ .. Issue 829951
+
* The :mod:`socket` module now supports TIPC (http://tipc.sf.net),
a high-performance non-IP-based protocol designed for use in clustered
environments. TIPC addresses are 4- or 5-tuples.
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 5604241..97b1e20 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -589,6 +589,14 @@
raise RuntimeError("No SSL support included in this Python")
self.sock = ssl.wrap_socket(self.sock, keyfile, certfile)
self.file = SSLFakeFile(self.sock)
+ # RFC 3207:
+ # The client MUST discard any knowledge obtained from
+ # the server, such as the list of SMTP service extensions,
+ # which was not obtained from the TLS negotiation itself.
+ self.helo_resp = None
+ self.ehlo_resp = None
+ self.esmtp_features = {}
+ self.does_esmtp = 0
return (resp, reply)
def sendmail(self, from_addr, to_addrs, msg, mail_options=[],