[Python-checkins] commit of r41591 - in python/trunk: Doc/lib/libsimplexmlrpc.tex Lib/SimpleXMLRPCServer.py Misc/NEWS

andrew.kuchling python-checkins at python.org
Sun Dec 4 18:13:18 CET 2005


Author: andrew.kuchling
Date: Sun Dec  4 18:13:12 2005
New Revision: 41591

Modified:
   python/trunk/Doc/lib/libsimplexmlrpc.tex
   python/trunk/Lib/SimpleXMLRPCServer.py
   python/trunk/Misc/NEWS
Log:
[Patch #1039083] Add 'encoding' parameter to SimpleXMLRPCServer

Modified: python/trunk/Doc/lib/libsimplexmlrpc.tex
==============================================================================
--- python/trunk/Doc/lib/libsimplexmlrpc.tex	(original)
+++ python/trunk/Doc/lib/libsimplexmlrpc.tex	Sun Dec  4 18:13:12 2005
@@ -14,24 +14,31 @@
 
 \begin{classdesc}{SimpleXMLRPCServer}{addr\optional{,
                                       requestHandler\optional{,
-					logRequests\optional{allow_none}}}}
+					logRequests\optional{allow_none\optional{, encoding}}}}}
 
-  Create a new server instance.  The \var{requestHandler} parameter
+  Create a new server instance.  This class
+  provides methods for registration of functions that can be called by
+  the XML-RPC protocol.  The \var{requestHandler} parameter
   should be a factory for request handler instances; it defaults to
   \class{SimpleXMLRPCRequestHandler}.  The \var{addr} and
   \var{requestHandler} parameters are passed to the
   \class{\refmodule{SocketServer}.TCPServer} constructor.  If
   \var{logRequests} is true (the default), requests will be logged;
-  setting this parameter to false will turn off logging.  This class
-  provides methods for registration of functions that can be called by
-  the XML-RPC protocol.
-  \versionchanged[The \var{allow_none} parameter was added]{2.5}
+  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.
+  \versionchanged[The \var{allow_none} and \var{encoding} parameters were added]{2.5}
 \end{classdesc}
 
-\begin{classdesc}{CGIXMLRPCRequestHandler}{\optional{allow_none}}
+\begin{classdesc}{CGIXMLRPCRequestHandler}{\optional{allow_none\optional{, encoding}}}
   Create a new instance to handle XML-RPC requests in a CGI
-  environment. \versionadded{2.3}
-  \versionchanged[The \var{allow_none} parameter was added]{2.5}
+  environment. 
+  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.
+  \versionadded{2.3}
+  \versionchanged[The \var{allow_none} and \var{encoding} parameters were added]{2.5}
 \end{classdesc}
 
 \begin{classdesc}{SimpleXMLRPCRequestHandler}{}

Modified: python/trunk/Lib/SimpleXMLRPCServer.py
==============================================================================
--- python/trunk/Lib/SimpleXMLRPCServer.py	(original)
+++ python/trunk/Lib/SimpleXMLRPCServer.py	Sun Dec  4 18:13:12 2005
@@ -159,10 +159,11 @@
     reason to instantiate this class directly.
     """
 
-    def __init__(self, allow_none):
+    def __init__(self, allow_none, encoding):
         self.funcs = {}
         self.instance = None
         self.allow_none = allow_none
+        self.encoding = encoding
 
     def register_instance(self, instance, allow_dotted_names=False):
         """Registers an instance to respond to XML-RPC requests.
@@ -253,13 +254,15 @@
             # wrap response in a singleton tuple
             response = (response,)
             response = xmlrpclib.dumps(response, methodresponse=1, 
-                                       allow_none = self.allow_none)
+                                       allow_none=self.allow_none, encoding=self.encoding)
         except Fault, fault:
-            response = xmlrpclib.dumps(fault)
+            response = xmlrpclib.dumps(fault, allow_none=self.allow_none, 
+                                       encoding=self.encoding)
         except:
             # report exception back to server
             response = xmlrpclib.dumps(
-                xmlrpclib.Fault(1, "%s:%s" % (sys.exc_type, sys.exc_value))
+                xmlrpclib.Fault(1, "%s:%s" % (sys.exc_type, sys.exc_value)),
+                encoding=self.encoding, allow_none=self.allow_none,
                 )
 
         return response
@@ -481,10 +484,10 @@
     allow_reuse_address = True
 
     def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler,
-                 logRequests=True, allow_none=False):
+                 logRequests=True, allow_none=False, encoding=None):
         self.logRequests = logRequests
 
-        SimpleXMLRPCDispatcher.__init__(self, allow_none)
+        SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
         SocketServer.TCPServer.__init__(self, addr, requestHandler)
 
         # [Bug #1222790] If possible, set close-on-exec flag; if a 
@@ -498,8 +501,8 @@
 class CGIXMLRPCRequestHandler(SimpleXMLRPCDispatcher):
     """Simple handler for XML-RPC data passed through CGI."""
 
-    def __init__(self, allow_none=False):
-        SimpleXMLRPCDispatcher.__init__(self, allow_none)
+    def __init__(self, allow_none=False, encoding=None):
+        SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
 
     def handle_xmlrpc(self, request_text):
         """Handle a single XML-RPC request"""

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sun Dec  4 18:13:12 2005
@@ -454,7 +454,7 @@
 - Bug #792570: SimpleXMLRPCServer had problems if the request grew too large.
   Fixed by reading the HTTP body in chunks instead of one big socket.read().
 
-- Patch #893642: add allow_none argument to constructors of 
+- Patches #893642, #1039083: add allow_none, encoding arguments to constructors of 
   SimpleXMLRPCServer and CGIXMLRPCRequestHandler.
 
 - Bug #1110478: Revert os.environ.update to do putenv again.


More information about the Python-checkins mailing list