handlers, wrapping the low-level ashd.proto module.
"""
-import os, socket, collections
-from . import proto
+import os, socket
+import proto
__all__ = ["stdfork", "pchild", "respond", "serveloop"]
if pid == 0:
try:
os.dup2(csk.fileno(), 0)
- for fd in range(3, 1024):
+ for fd in xrange(3, 1024):
try:
os.close(fd)
except:
For example:
respond(req, "Not found", status = "404 Not Found", ctype = "text/plain")
"""
- if isinstance(body, collections.ByteString):
- body = bytes(body)
- else:
- body = str(body)
- body = body.encode("utf-8")
+ if type(body) == unicode:
+ body = body.decode("utf-8")
if ctype[:5] == "text/" and ctype.find(';') < 0:
ctype = ctype + "; charset=utf-8"
+ else:
+ body = str(body)
try:
- head = ""
- head += "HTTP/1.1 %s\n" % status
- head += "Content-Type: %s\n" % ctype
- head += "Content-Length: %i\n" % len(body)
- head += "\n"
- req.sk.write(head.encode("ascii"))
+ req.sk.write("HTTP/1.1 %s\n" % status)
+ req.sk.write("Content-Type: %s\n" % ctype)
+ req.sk.write("Content-Length: %i\n" % len(body))
+ req.sk.write("\n")
req.sk.write(body)
finally:
req.close()