.. module:: asynchat
:synopsis: Support for asynchronous command/response protocols.
.. moduleauthor:: Sam Rushing <rushing@nightmare.com>
-.. sectionauthor:: Steve Holden <sholden@holdenweb.com>
+.. sectionauthor:: Steve Holden <sholden@holdenweb.com>
This module builds on the :mod:`asyncore` infrastructure, simplifying
self.addr = addr
self.sessions = sessions
self.ibuffer = []
- self.obuffer = ""
- self.set_terminator("\r\n\r\n")
+ self.obuffer = b""
+ self.set_terminator(b"\r\n\r\n")
self.reading_headers = True
self.handling = False
self.cgi_data = None
self.reading_headers = False
self.parse_headers("".join(self.ibuffer))
self.ibuffer = []
- if self.op.upper() == "POST":
+ if self.op.upper() == b"POST":
clen = self.headers.getheader("content-length")
self.set_terminator(int(clen))
else:
self.handle_request()
elif not self.handling:
self.set_terminator(None) # browsers sometimes over-send
- self.cgi_data = parse(self.headers, "".join(self.ibuffer))
+ self.cgi_data = parse(self.headers, b"".join(self.ibuffer))
self.handling = True
self.ibuffer = []
self.handle_request()
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.connect( (host, 80) )
- self.buffer = 'GET %s HTTP/1.0\r\n\r\n' % path
+ self.buffer = bytes('GET %s HTTP/1.0\r\n\r\n' % path, 'ascii')
def handle_connect(self):
pass