[Python-checkins] r72877 - in python/branches/release30-maint: Lib/smtplib.py Lib/test/test_smtplib.py Misc/ACKS Misc/NEWS
r.david.murray
python-checkins at python.org
Sat May 23 23:05:12 CEST 2009
Author: r.david.murray
Date: Sat May 23 23:05:11 2009
New Revision: 72877
Log:
Merged revisions 72868 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r72868 | r.david.murray | 2009-05-23 14:49:56 -0400 (Sat, 23 May 2009) | 5 lines
Fix for issue 5259: ASCII encode the username and password before passing
it to encode_base64, which requires bytes in py3k. Fix by Musashi Tamura,
tests by Marcin Bachry.
........
Modified:
python/branches/release30-maint/ (props changed)
python/branches/release30-maint/Lib/smtplib.py
python/branches/release30-maint/Lib/test/test_smtplib.py
python/branches/release30-maint/Misc/ACKS
python/branches/release30-maint/Misc/NEWS
Modified: python/branches/release30-maint/Lib/smtplib.py
==============================================================================
--- python/branches/release30-maint/Lib/smtplib.py (original)
+++ python/branches/release30-maint/Lib/smtplib.py Sat May 23 23:05:11 2009
@@ -542,7 +542,8 @@
return encode_base64(response)
def encode_plain(user, password):
- return encode_base64("\0%s\0%s" % (user, password))
+ s = "\0%s\0%s" % (user, password)
+ return encode_base64(s.encode('ascii'), eol='')
AUTH_PLAIN = "PLAIN"
Modified: python/branches/release30-maint/Lib/test/test_smtplib.py
==============================================================================
--- python/branches/release30-maint/Lib/test/test_smtplib.py (original)
+++ python/branches/release30-maint/Lib/test/test_smtplib.py Sat May 23 23:05:11 2009
@@ -284,6 +284,9 @@
'Mrs.C at somewhereesle.com':'Ruth C',
}
+sim_auth = ('Mr.A at somewhere.com', 'somepassword')
+sim_auth_b64encoded = 'AE1yLkFAc29tZXdoZXJlLmNvbQBzb21lcGFzc3dvcmQ='
+
sim_lists = {'list-1':['Mr.A at somewhere.com','Mrs.C at somewhereesle.com'],
'list-2':['Ms.B at somewhere.com',],
}
@@ -296,6 +299,7 @@
'250-SIZE 20000000\r\n' \
'250-STARTTLS\r\n' \
'250-DELIVERBY\r\n' \
+ '250-AUTH PLAIN\r\n' \
'250 HELP'
self.push(resp)
@@ -324,6 +328,16 @@
else:
self.push('550 No access for you!')
+ def smtp_AUTH(self, arg):
+ mech, auth = arg.split()
+ if mech.lower() == 'plain':
+ if auth == sim_auth_b64encoded:
+ self.push('235 ok, go ahead')
+ else:
+ self.push('550 No access for you!')
+ else:
+ self.push('504 auth type unimplemented')
+
class SimSMTPServer(smtpd.SMTPServer):
def handle_accept(self):
@@ -372,6 +386,7 @@
'size': '20000000',
'starttls': '',
'deliverby': '',
+ 'auth': ' PLAIN',
'help': '',
}
@@ -412,6 +427,11 @@
self.assertEqual(smtp.expn(u), expected_unknown)
smtp.quit()
+ def testAUTH(self):
+ smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
+
+ expected_auth_ok = (235, b'ok, go ahead')
+ self.assertEqual(smtp.login(sim_auth[0], sim_auth[1]), expected_auth_ok)
def test_main(verbose=None):
Modified: python/branches/release30-maint/Misc/ACKS
==============================================================================
--- python/branches/release30-maint/Misc/ACKS (original)
+++ python/branches/release30-maint/Misc/ACKS Sat May 23 23:05:11 2009
@@ -686,6 +686,7 @@
Thenault Sylvain
Arfrever Frehtes Taifersar Arahesis
Geoff Talvola
+Musashi Tamura
William Tanksley
Christian Tanzer
Steven Taschuk
Modified: python/branches/release30-maint/Misc/NEWS
==============================================================================
--- python/branches/release30-maint/Misc/NEWS (original)
+++ python/branches/release30-maint/Misc/NEWS Sat May 23 23:05:11 2009
@@ -65,6 +65,9 @@
Library
-------
+- Issue #5259: smtplib plain auth login no longer gives a traceback. Fix
+ by Musashi Tamura, tests by Marcin Bachry.
+
- Issue #4066: smtplib.SMTP_SSL._get_socket now correctly returns the socket.
Patch by Farhan Ahmad, test by Marcin Bachry.
More information about the Python-checkins
mailing list