]> granicus.if.org Git - python/commitdiff
Comply with RFC 3207.
authorGregory P. Smith <greg@mad-scientist.com>
Thu, 17 Jan 2008 07:43:20 +0000 (07:43 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Thu, 17 Jan 2008 07:43:20 +0000 (07:43 +0000)
Fixes issue 829951 - http://bugs.python.org/issue829951

Doc/whatsnew/2.6.rst
Lib/smtplib.py

index 126f546de08d3b94a00e6c7dd0ff20992e728048..48efabac97e15382061ef40dfac6e73bfff092dc 100644 (file)
@@ -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.
index 5604241dee8dd631c0cf601089598f538e4454f4..97b1e20b29b05fa5c089e7f95296c79cff158c2c 100755 (executable)
@@ -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=[],