]> granicus.if.org Git - python/commitdiff
#12283: Fixed regression in smtplib quoting of leading dots in DATA.
authorR David Murray <rdmurray@bitdance.com>
Thu, 9 Jun 2011 19:05:57 +0000 (15:05 -0400)
committerR David Murray <rdmurray@bitdance.com>
Thu, 9 Jun 2011 19:05:57 +0000 (15:05 -0400)
I unfortunately introduced the regression when I refactored the code,
and there were no tests of quoting so it wasn't caught.  Now there
is one.

Lib/smtplib.py
Lib/test/test_smtplib.py
Misc/NEWS

index dbccf48982105c1e36a6648a28c7ecf931f86a71..ce71699d8de86fa391f9e637f739b841395a2756 100755 (executable)
@@ -162,7 +162,7 @@ def quotedata(data):
         re.sub(r'(?:\r\n|\n|\r(?!\n))', CRLF, data))
 
 def _quote_periods(bindata):
-    return re.sub(br'(?m)^\.', '..', bindata)
+    return re.sub(br'(?m)^\.', b'..', bindata)
 
 def _fix_eols(data):
     return  re.sub(r'(?:\r\n|\n|\r(?!\n))', CRLF, data)
index 884529f54275b703d04e3a4e31e2105da6f03547..dd920447add683f99736c28f6d84988d8509dad2 100644 (file)
@@ -278,6 +278,21 @@ class DebuggingServerTests(unittest.TestCase):
         mexpect = '%s%s\n%s' % (MSG_BEGIN, m.decode('ascii'), MSG_END)
         self.assertEqual(self.output.getvalue(), mexpect)
 
+    def testSendNeedingDotQuote(self):
+        # Issue 12283
+        m = '.A test\n.mes.sage.'
+        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
+        smtp.sendmail('John', 'Sally', m)
+        # XXX (see comment in testSend)
+        time.sleep(0.01)
+        smtp.quit()
+
+        self.client_evt.set()
+        self.serv_evt.wait()
+        self.output.flush()
+        mexpect = '%s%s\n%s' % (MSG_BEGIN, m, MSG_END)
+        self.assertEqual(self.output.getvalue(), mexpect)
+
     def testSendMessage(self):
         m = email.mime.text.MIMEText('A test message')
         smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
index c5d2cec19a7470f1033358ea8068fefe67fa992f..dab5355eddb7c936dcfba4630143f223a41c82cd 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -22,6 +22,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #12283: Fixed regression in smtplib quoting of leading dots in DATA.
+
 - Issue #12168: SysLogHandler now allows NUL termination to be controlled using
   a new 'append_nul' attribute on the handler.