Changeset 38:546c34da7ac6

Show
Ignore:
Timestamp:
06/27/06 11:53:04 (2 years ago)
Author:
Allan Saddi <allan@saddi.com>
branch:
default
convert_revision:
svn:46762da8-4eb7-0310-94e9-d918b60927c8/flup/trunk@2016
Message:

Set close-on-exec flag on all server sockets.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ChangeLog

    r37 r38  
     12006-06-27  Allan Saddi  <asaddi@kalahari.flup.org> 
     2 
     3        * Set close-on-exec flag on all server sockets. Thanks to 
     4          Ralf Schmitt for reporting the problem. 
     5 
    162006-06-18  Allan Saddi  <asaddi@europa.saddi.net> 
    27 
  • flup/server/preforkserver.py

    r33 r38  
    5454    socket.socketpair = socketpair 
    5555 
     56try: 
     57    import fcntl 
     58except ImportError: 
     59    def setCloseOnExec(sock): 
     60        pass 
     61else: 
     62    def setCloseOnExec(sock): 
     63        fcntl.fcntl(sock.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) 
     64 
    5665class PreforkServer(object): 
    5766    """ 
     
    103112        sock.setblocking(0) 
    104113 
     114        # Set close-on-exec 
     115        setCloseOnExec(sock) 
     116         
    105117        # Main loop. 
    106118        while self._keepGoing: 
     
    256268        parent, child = socket.socketpair() 
    257269        parent.setblocking(0) 
     270        setCloseOnExec(parent) 
    258271        child.setblocking(0) 
     272        setCloseOnExec(child) 
    259273        try: 
    260274            pid = os.fork() 
     
    318332                raise 
    319333 
     334            setCloseOnExec(clientSock) 
     335             
    320336            # Check if this client is allowed. 
    321337            if not self._isClientAllowed(addr): 
  • flup/server/threadedserver.py

    r30 r38  
    3535from threadpool import ThreadPool 
    3636 
     37try: 
     38    import fcntl 
     39except ImportError: 
     40    def setCloseOnExec(sock): 
     41        pass 
     42else: 
     43    def setCloseOnExec(sock): 
     44        fcntl.fcntl(sock.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC) 
     45 
    3746__all__ = ['ThreadedServer'] 
    3847 
     
    5564        self._installSignalHandlers() 
    5665 
     66        # Set close-on-exec 
     67        setCloseOnExec(sock) 
     68         
    5769        # Main loop. 
    5870        while self._keepGoing: 
     
    7284                    raise 
    7385 
     86                setCloseOnExec(clientSock) 
     87                 
    7488                if not self._isClientAllowed(addr): 
    7589                    clientSock.close()