diff options
author | Guido van Rossum <guido@python.org> | 2007-07-12 07:58:54 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-07-12 07:58:54 (GMT) |
commit | 076da0957b1af50cccf40ec5c60742212b4a1f90 (patch) | |
tree | 249b3131cfd00f85e76e7ece18b0ff93cabe8cff | |
parent | e7a0d3997846155e1a9dcd95eb559039da34ee08 (diff) | |
download | cpython-076da0957b1af50cccf40ec5c60742212b4a1f90.zip cpython-076da0957b1af50cccf40ec5c60742212b4a1f90.tar.gz cpython-076da0957b1af50cccf40ec5c60742212b4a1f90.tar.bz2 |
Fix asynchat to use bytes instead of strings.
Fix by Alexandre Vassalotti, SF# 1752173.
-rw-r--r-- | Lib/asynchat.py | 24 | ||||
-rw-r--r-- | Lib/test/test_asynchat.py | 12 |
2 files changed, 18 insertions, 18 deletions
diff --git a/Lib/asynchat.py b/Lib/asynchat.py index dc7f10f..2206984 100644 --- a/Lib/asynchat.py +++ b/Lib/asynchat.py @@ -60,8 +60,8 @@ class async_chat (asyncore.dispatcher): 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 @@ class async_chat (asyncore.dispatcher): 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 @@ class async_chat (asyncore.dispatcher): 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 @@ class async_chat (asyncore.dispatcher): 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 @@ class async_chat (asyncore.dispatcher): # 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 @@ class async_chat (asyncore.dispatcher): 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 @@ class async_chat (asyncore.dispatcher): 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 @@ class simple_producer: return result else: result = self.data - self.data = '' + self.data = b'' return result class fifo: diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py index 6bcedd6..7629296 100644 --- a/Lib/test/test_asynchat.py +++ b/Lib/test/test_asynchat.py @@ -17,8 +17,8 @@ class echo_server(threading.Thread): 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 @@ class echo_client(asynchat.async_chat): 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 @@ class echo_client(asynchat.async_chat): def found_terminator(self): #print "Received:", repr(self.buffer) self.contents = self.buffer - self.buffer = "" + self.buffer = b"" self.close() @@ -70,7 +70,7 @@ class TestAsynchat(unittest.TestCase): 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 @@ class TestAsynchat(unittest.TestCase): asyncore.loop() s.join() - self.assertEqual(c.contents, 'hello ') + self.assertEqual(c.contents, b'hello ') def test_main(verbose=None): |