Index: Lib/test/test_asynchat.py =================================================================== --- Lib/test/test_asynchat.py (revision 56278) +++ Lib/test/test_asynchat.py (working copy) @@ -17,8 +17,8 @@ PORT = test_support.bind_port(sock, HOST, PORT) sock.listen(1) conn, client = sock.accept() - buffer = "" - while "\n" not in buffer: + buffer = b"" + while b"\n" not in buffer: data = conn.recv(1) if not data: break @@ -37,7 +37,7 @@ self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.connect((HOST, PORT)) self.set_terminator(terminator) - self.buffer = "" + self.buffer = b"" def handle_connect(self): pass @@ -49,7 +49,7 @@ def found_terminator(self): #print "Received:", repr(self.buffer) self.contents = self.buffer - self.buffer = "" + self.buffer = b"" self.close() @@ -70,7 +70,7 @@ asyncore.loop() s.join() - self.assertEqual(c.contents, 'hello world') + self.assertEqual(c.contents, b'hello world') def test_numeric_terminator(self): # Try reading a fixed number of bytes @@ -83,7 +83,7 @@ asyncore.loop() s.join() - self.assertEqual(c.contents, 'hello ') + self.assertEqual(c.contents, b'hello ') def test_main(verbose=None): Index: Lib/asynchat.py =================================================================== --- Lib/asynchat.py (revision 56278) +++ Lib/asynchat.py (working copy) @@ -60,8 +60,8 @@ ac_out_buffer_size = 4096 def __init__ (self, conn=None): - self.ac_in_buffer = '' - self.ac_out_buffer = '' + self.ac_in_buffer = b'' + self.ac_out_buffer = b'' self.producer_fifo = fifo() asyncore.dispatcher.__init__ (self, conn) @@ -91,7 +91,7 @@ self.handle_error() return - self.ac_in_buffer = self.ac_in_buffer + data + self.ac_in_buffer = self.ac_in_buffer + bytes(data) # Continue to search for self.terminator in self.ac_in_buffer, # while calling self.collect_incoming_data. The while loop @@ -110,7 +110,7 @@ n = terminator if lb < n: self.collect_incoming_data (self.ac_in_buffer) - self.ac_in_buffer = '' + self.ac_in_buffer = b'' self.terminator = self.terminator - lb else: self.collect_incoming_data (self.ac_in_buffer[:n]) @@ -147,7 +147,7 @@ else: # no prefix, collect it all self.collect_incoming_data (self.ac_in_buffer) - self.ac_in_buffer = '' + self.ac_in_buffer = b'' def handle_write (self): self.initiate_send () @@ -172,7 +172,7 @@ # return len(self.ac_out_buffer) or len(self.producer_fifo) or (not self.connected) # this is about twice as fast, though not as clear. return not ( - (self.ac_out_buffer == '') and + (self.ac_out_buffer == b'') and self.producer_fifo.is_empty() and self.connected ) @@ -194,13 +194,13 @@ self.producer_fifo.pop() self.close() return - elif isinstance(p, str): + elif isinstance(p, str) or isinstance(p, bytes): self.producer_fifo.pop() - self.ac_out_buffer = self.ac_out_buffer + p + self.ac_out_buffer = self.ac_out_buffer + bytes(p) return data = p.more() if data: - self.ac_out_buffer = self.ac_out_buffer + data + self.ac_out_buffer = self.ac_out_buffer + bytes(data) return else: self.producer_fifo.pop() @@ -226,8 +226,8 @@ def discard_buffers (self): # Emergencies only! - self.ac_in_buffer = '' - self.ac_out_buffer = '' + self.ac_in_buffer = b'' + self.ac_out_buffer = b'' while self.producer_fifo: self.producer_fifo.pop() @@ -245,7 +245,7 @@ return result else: result = self.data - self.data = '' + self.data = b'' return result class fifo: