4 def stdfork(argv, chinit = None):
5 csk, psk = socket.socketpair(socket.AF_UNIX, socket.SOCK_SEQPACKET)
9 os.dup2(csk.fileno(), 0)
10 for fd in xrange(3, 1024):
15 if chinit is not None:
17 os.execvp(argv[0], argv)
21 fd = os.dup(psk.fileno())
25 def respond(req, body, status = ("200 OK"), ctype = "text/html"):
26 if type(body) == unicode:
27 body = body.decode("utf-8")
28 if ctype[:5] == "text/" and ctype.find(';') < 0:
29 ctype = ctype + "; charset=utf-8"
33 req.sk.write("HTTP/1.1 %s\n" % status)
34 req.sk.write("Content-Type: %s\n" % ctype)
35 req.sk.write("Content-Length: %i\n" % len(body))
41 def serveloop(handler, sock = 0):
43 req = proto.recvreq(sock)