From: Gregory P. Smith Date: Thu, 17 Jan 2008 07:43:20 +0000 (+0000) Subject: Comply with RFC 3207. X-Git-Tag: v2.6a1~581 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=63bfc1d19fa1abe7d1b7d3e25a17083f8077f6fa;p=python 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 126f546de0..48efabac97 100644 --- a/Doc/whatsnew/2.6.rst +++ b/Doc/whatsnew/2.6.rst @@ -1091,6 +1091,12 @@ complete list of changes, or look through the CVS logs for all the details. .. 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 5604241dee..97b1e20b29 100755 --- a/Lib/smtplib.py +++ b/Lib/smtplib.py @@ -589,6 +589,14 @@ class SMTP: 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=[],