diff options
-rw-r--r-- | Lib/asynchat.py | 11 | ||||
-rw-r--r-- | Lib/test/test_smtplib.py | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/Lib/asynchat.py b/Lib/asynchat.py index 9443656161..0e2457f8ec 100644 --- a/Lib/asynchat.py +++ b/Lib/asynchat.py @@ -46,6 +46,7 @@ method) up to the terminator, and then control will be returned to you - by calling your self.found_terminator() method. """ +import sys import socket import asyncore from collections import deque @@ -91,6 +92,8 @@ class async_chat (asyncore.dispatcher): self.handle_error() return + if isinstance(data, str): + data = data.encode('ascii') self.ac_in_buffer = self.ac_in_buffer + bytes(data) # Continue to search for self.terminator in self.ac_in_buffer, @@ -126,6 +129,8 @@ class async_chat (asyncore.dispatcher): # 3) end of buffer does not match any prefix: # collect data terminator_len = len(terminator) + if isinstance(terminator, str): + terminator = terminator.encode('ascii') index = self.ac_in_buffer.find(terminator) if index != -1: # we found the terminator @@ -195,11 +200,15 @@ class async_chat (asyncore.dispatcher): self.close() return elif isinstance(p, str) or isinstance(p, bytes): + if isinstance(p, str): + p = p.encode('ascii') self.producer_fifo.pop() - self.ac_out_buffer = self.ac_out_buffer + bytes(p) + self.ac_out_buffer = self.ac_out_buffer + p return data = p.more() if data: + if isinstance(data, str): + data = data.encode('ascii') self.ac_out_buffer = self.ac_out_buffer + bytes(data) return else: diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py index e0dcc86cad..00c3ad412a 100644 --- a/Lib/test/test_smtplib.py +++ b/Lib/test/test_smtplib.py @@ -405,8 +405,8 @@ class SMTPSimTests(TestCase): self.assertEqual(smtp.vrfy(email), expected_known) u = 'nobody@nowhere.com' - expected_unknown = (550, bytes('No such user: %s' - % smtplib.quoteaddr(u))) + expected_unknown = (550, ('No such user: %s' + % smtplib.quoteaddr(u)).encode('ascii')) self.assertEqual(smtp.vrfy(u), expected_unknown) smtp.quit() |