[Python-checkins] r54262 - in python/trunk: Doc/lib/libdocxmlrpc.tex Doc/lib/libsimplexmlrpc.tex Lib/DocXMLRPCServer.py Lib/SimpleXMLRPCServer.py Lib/SocketServer.py Misc/NEWS

collin.winter python-checkins at python.org
Sat Mar 10 15:41:51 CET 2007


Author: collin.winter
Date: Sat Mar 10 15:41:48 2007
New Revision: 54262

Modified:
   python/trunk/Doc/lib/libdocxmlrpc.tex
   python/trunk/Doc/lib/libsimplexmlrpc.tex
   python/trunk/Lib/DocXMLRPCServer.py
   python/trunk/Lib/SimpleXMLRPCServer.py
   python/trunk/Lib/SocketServer.py
   python/trunk/Misc/NEWS
Log:
Patch #1599845: Add an option to disable the implicit calls to server_bind() and server_activate() in the constructors for TCPServer, SimpleXMLRPCServer and DocXMLRPCServer. 


Modified: python/trunk/Doc/lib/libdocxmlrpc.tex
==============================================================================
--- python/trunk/Doc/lib/libdocxmlrpc.tex	(original)
+++ python/trunk/Doc/lib/libdocxmlrpc.tex	Sat Mar 10 15:41:48 2007
@@ -14,8 +14,12 @@
 \class{DocXMLRPCServer}, or embedded in a CGI environment, using
 \class{DocCGIXMLRPCRequestHandler}.
 
-\begin{classdesc}{DocXMLRPCServer}{addr\optional{, 
-                                   requestHandler\optional{, logRequests}}}
+\begin{classdesc}{DocXMLRPCServer}{addr\optional{,
+                                   requestHandler\optional{,
+			                       logRequests\optional{,
+                                   allow_none\optional{, 
+                                   encoding\optional{,
+                                   bind_and_activate}}}}}}
 
 Create a new server instance. All parameters have the same meaning as
 for \class{SimpleXMLRPCServer.SimpleXMLRPCServer};

Modified: python/trunk/Doc/lib/libsimplexmlrpc.tex
==============================================================================
--- python/trunk/Doc/lib/libsimplexmlrpc.tex	(original)
+++ python/trunk/Doc/lib/libsimplexmlrpc.tex	Sat Mar 10 15:41:48 2007
@@ -15,7 +15,9 @@
 
 \begin{classdesc}{SimpleXMLRPCServer}{addr\optional{,
                                       requestHandler\optional{,
-					logRequests\optional{, allow_none\optional{, encoding}}}}}
+					                  logRequests\optional{,
+                                      allow_none\optional{,
+                                      encoding}}}}}
 
   Create a new server instance.  This class
   provides methods for registration of functions that can be called by
@@ -28,8 +30,13 @@
   setting this parameter to false will turn off logging.  
   The \var{allow_none} and \var{encoding} parameters are passed on to 
   \module{xmlrpclib} and control the XML-RPC responses that will be returned 
-  from the server.
+  from the server. The \var{bind_and_activate} parameter controls whether
+  \method{server_bind()} and \method{server_activate()} are called immediately
+  by the constructor; it defaults to true. Setting it to false allows code to
+  manipulate the \var{allow_reuse_address} class variable before the address
+  is bound.
   \versionchanged[The \var{allow_none} and \var{encoding} parameters were added]{2.5}
+  \versionchanged[The \var{bind_and_activate} parameter was added]{2.6}
 \end{classdesc}
 
 \begin{classdesc}{CGIXMLRPCRequestHandler}{\optional{allow_none\optional{, encoding}}}

Modified: python/trunk/Lib/DocXMLRPCServer.py
==============================================================================
--- python/trunk/Lib/DocXMLRPCServer.py	(original)
+++ python/trunk/Lib/DocXMLRPCServer.py	Sat Mar 10 15:41:48 2007
@@ -252,8 +252,10 @@
     """
 
     def __init__(self, addr, requestHandler=DocXMLRPCRequestHandler,
-                 logRequests=1):
-        SimpleXMLRPCServer.__init__(self, addr, requestHandler, logRequests)
+                 logRequests=1, allow_none=False, encoding=None,
+                 bind_and_activate=True):
+        SimpleXMLRPCServer.__init__(self, addr, requestHandler, logRequests,
+                                    allow_none, encoding, bind_and_activate)
         XMLRPCDocGenerator.__init__(self)
 
 class DocCGIXMLRPCRequestHandler(   CGIXMLRPCRequestHandler,

Modified: python/trunk/Lib/SimpleXMLRPCServer.py
==============================================================================
--- python/trunk/Lib/SimpleXMLRPCServer.py	(original)
+++ python/trunk/Lib/SimpleXMLRPCServer.py	Sat Mar 10 15:41:48 2007
@@ -518,11 +518,11 @@
     allow_reuse_address = True
 
     def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler,
-                 logRequests=True, allow_none=False, encoding=None):
+                 logRequests=True, allow_none=False, encoding=None, bind_and_activate=True):
         self.logRequests = logRequests
 
         SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
-        SocketServer.TCPServer.__init__(self, addr, requestHandler)
+        SocketServer.TCPServer.__init__(self, addr, requestHandler, bind_and_activate)
 
         # [Bug #1222790] If possible, set close-on-exec flag; if a
         # method spawns a subprocess, the subprocess shouldn't have

Modified: python/trunk/Lib/SocketServer.py
==============================================================================
--- python/trunk/Lib/SocketServer.py	(original)
+++ python/trunk/Lib/SocketServer.py	Sat Mar 10 15:41:48 2007
@@ -279,7 +279,7 @@
 
     Methods for the caller:
 
-    - __init__(server_address, RequestHandlerClass)
+    - __init__(server_address, RequestHandlerClass, bind_and_activate=True)
     - serve_forever()
     - handle_request()  # if you don't use serve_forever()
     - fileno() -> int   # for select()
@@ -322,13 +322,14 @@
 
     allow_reuse_address = False
 
-    def __init__(self, server_address, RequestHandlerClass):
+    def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True):
         """Constructor.  May be extended, do not override."""
         BaseServer.__init__(self, server_address, RequestHandlerClass)
         self.socket = socket.socket(self.address_family,
                                     self.socket_type)
-        self.server_bind()
-        self.server_activate()
+        if bind_and_activate:
+          self.server_bind()
+          self.server_activate()
 
     def server_bind(self):
         """Called by constructor to bind the socket.

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sat Mar 10 15:41:48 2007
@@ -156,6 +156,10 @@
 Library
 -------
 
+- Patch #1599845: Add an option to disable the implicit calls to server_bind()
+  and server_activate() in the constructors for TCPServer, SimpleXMLRPCServer
+  and DocXMLRPCServer.
+
 - Bug #1531963: Make SocketServer.TCPServer's server_address always
   be equal to calling getsockname() on the server's socket. Fixed by
   patch #1545011.


More information about the Python-checkins mailing list