]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-32680 add default "sock" on SMTP objects (#5345)
authorRomuald Brunet <romuald@chivil.com>
Tue, 9 Oct 2018 14:31:55 +0000 (16:31 +0200)
committerGiampaolo Rodola <g.rodola@gmail.com>
Tue, 9 Oct 2018 14:31:55 +0000 (16:31 +0200)
By default the smtplib.SMTP objects did not have a sock attribute, it
was only created during connect()

Lib/smtplib.py
Lib/test/test_smtplib.py
Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst [new file with mode: 0644]

index 5e1bc0b198ed8947e9e4656e8a44fb479631b8e0..acfc3586e1c0545d92d2555502c142e4b72bc379 100755 (executable)
@@ -216,6 +216,8 @@ class SMTP:
         method called 'sendmail' that will do an entire mail transaction.
         """
     debuglevel = 0
+
+    sock = None
     file = None
     helo_resp = None
     ehlo_msg = "ehlo"
@@ -344,7 +346,7 @@ class SMTP:
         """Send `s' to the server."""
         if self.debuglevel > 0:
             self._print_debug('send:', repr(s))
-        if hasattr(self, 'sock') and self.sock:
+        if self.sock:
             if isinstance(s, str):
                 # send is used by the 'data' command, where command_encoding
                 # should not be used, but 'data' needs to convert the string to
index 0c863ed7e2030ab53bf7c4cf9f4bacd261e738d7..07d760bd01fd5b2d1c864533ff80b4b47d8254f4 100644 (file)
@@ -602,6 +602,13 @@ class NonConnectingTests(unittest.TestCase):
         self.assertRaises(OSError, smtplib.SMTP,
                           "localhost:bogus")
 
+    def testSockAttributeExists(self):
+        # check that sock attribute is present outside of a connect() call
+        # (regression test, the previous behavior raised an
+        #  AttributeError: 'SMTP' object has no attribute 'sock')
+        with smtplib.SMTP() as smtp:
+            self.assertIsNone(smtp.sock)
+
 
 class DefaultArgumentsTests(unittest.TestCase):
 
diff --git a/Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst b/Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst
new file mode 100644 (file)
index 0000000..afe16b6
--- /dev/null
@@ -0,0 +1 @@
+:class:`smtplib.SMTP` objects now always have a `sock` attribute present