Merge branch 'master' into timeheap
[ashd.git] / python / ashd / proto.py
index c1ae1b0..e18023d 100644 (file)
@@ -10,6 +10,8 @@ ashd.util module provides an easier-to-use interface.
 import os, socket
 import htlib
 
+__all__ = ["req", "recvreq", "sendreq"]
+
 class protoerr(Exception):
     pass
 
@@ -44,12 +46,14 @@ class req(object):
         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()
+        self.bsk.close()
 
     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.
         """
-        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.bsk.fileno()))
 
     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.
 
-    This function may either raise on OSError if an error occurs on
-    the socket, or a ashd.proto.protoerr if the incoming request is
+    This function may either raise an OSError if an error occurs on
+    the socket, or an ashd.proto.protoerr if the incoming request is
     invalidly encoded.
     """
     data, fd = htlib.recvfd(sock)