Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
076da095
Commit
076da095
authored
Jul 12, 2007
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix asynchat to use bytes instead of strings.
Fix by Alexandre Vassalotti, SF# 1752173.
parent
e7a0d399
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
18 additions
and
18 deletions
+18
-18
Lib/asynchat.py
Lib/asynchat.py
+12
-12
Lib/test/test_asynchat.py
Lib/test/test_asynchat.py
+6
-6
No files found.
Lib/asynchat.py
View file @
076da095
...
...
@@ -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
:
...
...
Lib/test/test_asynchat.py
View file @
076da095
...
...
@@ -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
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment