summaryrefslogtreecommitdiff
path: root/flup/server/threadedserver.py
diff options
context:
space:
mode:
Diffstat (limited to 'flup/server/threadedserver.py')
-rw-r--r--flup/server/threadedserver.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/flup/server/threadedserver.py b/flup/server/threadedserver.py
index 60c1bfa..c2d0e04 100644
--- a/flup/server/threadedserver.py
+++ b/flup/server/threadedserver.py
@@ -34,6 +34,15 @@ import errno
from threadpool import ThreadPool
+try:
+ import fcntl
+except ImportError:
+ def setCloseOnExec(sock):
+ pass
+else:
+ def setCloseOnExec(sock):
+ fcntl.fcntl(sock.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC)
+
__all__ = ['ThreadedServer']
class ThreadedServer(object):
@@ -54,6 +63,9 @@ class ThreadedServer(object):
self._hupReceived = False
self._installSignalHandlers()
+ # Set close-on-exec
+ setCloseOnExec(sock)
+
# Main loop.
while self._keepGoing:
try:
@@ -71,6 +83,8 @@ class ThreadedServer(object):
continue
raise
+ setCloseOnExec(clientSock)
+
if not self._isClientAllowed(addr):
clientSock.close()
continue