[ python-Bugs-1222790 ] SimpleXMLRPCServer does not set FD_CLOEXEC

SourceForge.net noreply at sourceforge.net
Fri Jun 17 19:18:52 CEST 2005


Bugs item #1222790, was opened at 2005-06-17 19:18
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1222790&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Demos and Tools
Group: Python 2.2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Winfried Harbecke (wharbecke)
Assigned to: Nobody/Anonymous (nobody)
Summary: SimpleXMLRPCServer does not set FD_CLOEXEC

Initial Comment:
The SimpleXMLRPCServer constructor  does not set 
FD_CLOEXEC on the socket that listens for new 
connections. When the XML RPC server spawns other 
daemons, and the XML RPC server is stopped before 
the spawned daemon dies, the spawned daemon will 
hog the inherited socket and the XML RPC server will be 
unable to open its listening socket again 
(ADDR_IN_USE). Since there is no reason why a 
spawned process should inherit the listen socket, the 
close-on-exec flag should be used to prevent inheriting 
the socket to spawned processes.

  import socket
+ import fcntl
  import xmlrpclib

...

  def __init__(self, addr, ...

          SocketServer.TCPServer.__init__(self, addr, 
requestHandler)
!         # close on exec - spawned shell should not 
access the service
!         #   listen socket
!         flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)
!         flags |= fcntl.FD_CLOEXEC
!         fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
!

There is a similar fix in the Zope distribution, see
http://archives.free.net.ph/message/20030719.201708.f3a
aed4d.html


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1222790&group_id=5470


More information about the Python-bugs-list mailing list