summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Saddi <allan@saddi.com>2005-11-18 22:41:03 +0000
committerAllan Saddi <allan@saddi.com>2005-11-18 22:41:03 +0000
commit5d893e11edb7d0e8adbddc9148269f6684e39580 (patch)
treedbfe28227a2cbd131c9e181ff9afc250eef563e4
parent979c0fc38d7f33c3a0ce151a7958afd63d599e0b (diff)
downloadflup-5d893e11edb7d0e8adbddc9148269f6684e39580.tar.gz
When running under Python < 2.4, attempt to use socketpair()
from eunuchs module.
-rw-r--r--ChangeLog5
-rw-r--r--flup/server/preforkserver.py16
2 files changed, 21 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 72b1b19..49be43b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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