diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | flup/server/preforkserver.py | 16 |
2 files changed, 21 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2005-11-18 Allan Saddi <asaddi@kalahari.flup.org> + + * When running under Python < 2.4, attempt to use socketpair() + from eunuchs module. + 2005-09-07 Allan Saddi <asaddi@europa.saddi.net> * Python 2.3 doesn't define socket.SHUT_WR, which affected diff --git a/flup/server/preforkserver.py b/flup/server/preforkserver.py index 9e16527..e9c96d6 100644 --- a/flup/server/preforkserver.py +++ b/flup/server/preforkserver.py @@ -34,6 +34,22 @@ import select import errno import signal +# If running Python < 2.4, require eunuchs module for socket.socketpair(). +# See <http://www.inoi.fi/open/trac/eunuchs>. +if not hasattr(socket, 'socketpair'): + try: + import eunuchs + except ImportError: + # TODO: Other alternatives? Perhaps using os.pipe()? + raise ImportError, 'Requires eunuchs module for Python < 2.4' + + def socketpair(): + s1, s2 = eunuchs.socketpair.socketpair() + return (socket.fromfd(s1, socket.AF_UNIX, socket.SOCK_STREAM), + socket.fromfd(s2, socket.AF_UNIX, socket.SOCK_STREAM)) + + socket.socketpair = socketpair + class PreforkServer(object): """ A preforked server model conceptually similar to Apache httpd(2). At |