Dolda2000 GitWeb
/
ashd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
callfcgi: Improved recvrec implementation.
[ashd.git]
/
python
/
ashd
/
proto.py
diff --git
a/python/ashd/proto.py
b/python/ashd/proto.py
index
c1ae1b0
..
e18023d
100644
(file)
--- a/
python/ashd/proto.py
+++ b/
python/ashd/proto.py
@@
-10,6
+10,8
@@
ashd.util module provides an easier-to-use interface.
import os, socket
import htlib
import os, socket
import htlib
+__all__ = ["req", "recvreq", "sendreq"]
+
class protoerr(Exception):
pass
class protoerr(Exception):
pass
@@
-44,12
+46,14
@@
class req(object):
self.ver = ver
self.rest = rest
self.headers = headers
self.ver = ver
self.rest = rest
self.headers = headers
- self.sk = socket.fromfd(fd, socket.AF_UNIX, socket.SOCK_STREAM).makefile('r+')
+ self.bsk = socket.fromfd(fd, socket.AF_UNIX, socket.SOCK_STREAM)
+ self.sk = self.bsk.makefile('r+')
os.close(fd)
def close(self):
"Close this request's response socket."
self.sk.close()
os.close(fd)
def close(self):
"Close this request's response socket."
self.sk.close()
+ self.bsk.close()
def __getitem__(self, header):
"""Find a HTTP header case-insensitively. For example,
def __getitem__(self, header):
"""Find a HTTP header case-insensitively. For example,
@@
-77,7
+81,7
@@
class req(object):
"""Creates a duplicate of this request, referring to a
duplicate of the response socket.
"""
"""Creates a duplicate of this request, referring to a
duplicate of the response socket.
"""
- return req(self.method, self.url, self.ver, self.rest, self.headers, os.dup(self.sk.fileno()))
+ return req(self.method, self.url, self.ver, self.rest, self.headers, os.dup(self.
b
sk.fileno()))
def match(self, match):
"""If the `match' argument matches exactly the leading part of
def match(self, match):
"""If the `match' argument matches exactly the leading part of
@@
-117,8
+121,8
@@
def recvreq(sock = 0):
done, to avoid leaking response sockets. If end-of-file is
received on the socket, None is returned.
done, to avoid leaking response sockets. If end-of-file is
received on the socket, None is returned.
- This function may either raise
o
n OSError if an error occurs on
- the socket, or a ashd.proto.protoerr if the incoming request is
+ This function may either raise
a
n OSError if an error occurs on
+ the socket, or a
n
ashd.proto.protoerr if the incoming request is
invalidly encoded.
"""
data, fd = htlib.recvfd(sock)
invalidly encoded.
"""
data, fd = htlib.recvfd(sock)