diff options
author | Allan Saddi <allan@saddi.com> | 2005-11-18 22:41:03 +0000 |
---|---|---|
committer | Allan Saddi <allan@saddi.com> | 2005-11-18 22:41:03 +0000 |
commit | 5d893e11edb7d0e8adbddc9148269f6684e39580 (patch) | |
tree | dbfe28227a2cbd131c9e181ff9afc250eef563e4 | |
parent | 979c0fc38d7f33c3a0ce151a7958afd63d599e0b (diff) | |
download | flup-5d893e11edb7d0e8adbddc9148269f6684e39580.tar.gz |
When running under Python < 2.4, attempt to use socketpair()
from eunuchs module.
-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 |