@@ -160,11 +160,13 @@ class SimpleXMLRPCDispatcher:
160160 can be instanced when used by the MultiPathXMLRPCServer
161161 """
162162
163- def __init__ (self , allow_none = False , encoding = None ):
163+ def __init__ (self , allow_none = False , encoding = None ,
164+ use_builtin_types = False ):
164165 self .funcs = {}
165166 self .instance = None
166167 self .allow_none = allow_none
167168 self .encoding = encoding or 'utf-8'
169+ self .use_builtin_types = use_builtin_types
168170
169171 def register_instance (self , instance , allow_dotted_names = False ):
170172 """Registers an instance to respond to XML-RPC requests.
@@ -245,7 +247,7 @@ def _marshaled_dispatch(self, data, dispatch_method = None, path = None):
245247 """
246248
247249 try :
248- params , method = loads (data )
250+ params , method = loads (data , use_builtin_types = self . use_builtin_types )
249251
250252 # generate response
251253 if dispatch_method is not None :
@@ -572,10 +574,11 @@ class SimpleXMLRPCServer(socketserver.TCPServer,
572574 _send_traceback_header = False
573575
574576 def __init__ (self , addr , requestHandler = SimpleXMLRPCRequestHandler ,
575- logRequests = True , allow_none = False , encoding = None , bind_and_activate = True ):
577+ logRequests = True , allow_none = False , encoding = None ,
578+ bind_and_activate = True , use_builtin_types = False ):
576579 self .logRequests = logRequests
577580
578- SimpleXMLRPCDispatcher .__init__ (self , allow_none , encoding )
581+ SimpleXMLRPCDispatcher .__init__ (self , allow_none , encoding , use_builtin_types )
579582 socketserver .TCPServer .__init__ (self , addr , requestHandler , bind_and_activate )
580583
581584 # [Bug #1222790] If possible, set close-on-exec flag; if a
@@ -595,10 +598,11 @@ class MultiPathXMLRPCServer(SimpleXMLRPCServer):
595598 Make sure that the requestHandler accepts the paths in question.
596599 """
597600 def __init__ (self , addr , requestHandler = SimpleXMLRPCRequestHandler ,
598- logRequests = True , allow_none = False , encoding = None , bind_and_activate = True ):
601+ logRequests = True , allow_none = False , encoding = None ,
602+ bind_and_activate = True , use_builtin_types = False ):
599603
600604 SimpleXMLRPCServer .__init__ (self , addr , requestHandler , logRequests , allow_none ,
601- encoding , bind_and_activate )
605+ encoding , bind_and_activate , use_builtin_types )
602606 self .dispatchers = {}
603607 self .allow_none = allow_none
604608 self .encoding = encoding or 'utf-8'
@@ -628,8 +632,8 @@ def _marshaled_dispatch(self, data, dispatch_method = None, path = None):
628632class CGIXMLRPCRequestHandler (SimpleXMLRPCDispatcher ):
629633 """Simple handler for XML-RPC data passed through CGI."""
630634
631- def __init__ (self , allow_none = False , encoding = None ):
632- SimpleXMLRPCDispatcher .__init__ (self , allow_none , encoding )
635+ def __init__ (self , allow_none = False , encoding = None , use_builtin_types = False ):
636+ SimpleXMLRPCDispatcher .__init__ (self , allow_none , encoding , use_builtin_types )
633637
634638 def handle_xmlrpc (self , request_text ):
635639 """Handle a single XML-RPC request"""
@@ -924,9 +928,10 @@ class DocXMLRPCServer( SimpleXMLRPCServer,
924928
925929 def __init__ (self , addr , requestHandler = DocXMLRPCRequestHandler ,
926930 logRequests = True , allow_none = False , encoding = None ,
927- bind_and_activate = True ):
931+ bind_and_activate = True , use_builtin_types = False ):
928932 SimpleXMLRPCServer .__init__ (self , addr , requestHandler , logRequests ,
929- allow_none , encoding , bind_and_activate )
933+ allow_none , encoding , bind_and_activate ,
934+ use_builtin_types )
930935 XMLRPCDocGenerator .__init__ (self )
931936
932937class DocCGIXMLRPCRequestHandler ( CGIXMLRPCRequestHandler ,
0 commit comments