diff options
Diffstat (limited to 'Lib/SimpleXMLRPCServer.py')
| -rw-r--r-- | Lib/SimpleXMLRPCServer.py | 38 | 
1 files changed, 17 insertions, 21 deletions
| diff --git a/Lib/SimpleXMLRPCServer.py b/Lib/SimpleXMLRPCServer.py index 89900bd75e..0a9168387a 100644 --- a/Lib/SimpleXMLRPCServer.py +++ b/Lib/SimpleXMLRPCServer.py @@ -147,22 +147,6 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):          not be called by SimpleXMLRPCServer.          """ -        def resolve_dotted_attribute(obj, attr): -            """resolve_dotted_attribute(math, 'cos.__doc__') => math.cos.__doc__ - -            Resolves a dotted attribute name to an object. Raises -            an AttributeError if any attribute in the chain starts -            with a '_'. -            """ -            for i in attr.split('.'): -                if i.startswith('_'): -                    raise AttributeError( -                        'attempt to access private attribute "%s"' % i -                        ) -                else: -                    obj = getattr(obj,i) -            return obj -          func = None          try:              # check to see if a matching function has been registered @@ -171,14 +155,11 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):              if self.server.instance is not None:                  # check for a _dispatch method                  if hasattr(self.server.instance, '_dispatch'): -                    return apply( -                        getattr(self.server.instance,'_dispatch'), -                        (method, params) -                        ) +                    return self.server.instance._dispatch(method, params)                  else:                      # call instance method directly                      try: -                        func = resolve_dotted_attribute( +                        func = _resolve_dotted_attribute(                              self.server.instance,                              method                              ) @@ -196,6 +177,21 @@ class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):          if self.server.logRequests:              BaseHTTPServer.BaseHTTPRequestHandler.log_request(self, code, size) + +def _resolve_dotted_attribute(obj, attr): +    """Resolves a dotted attribute name to an object.  Raises +    an AttributeError if any attribute in the chain starts with a '_'. +    """ +    for i in attr.split('.'): +        if i.startswith('_'): +            raise AttributeError( +                'attempt to access private attribute "%s"' % i +                ) +        else: +            obj = getattr(obj,i) +    return obj + +  class SimpleXMLRPCServer(SocketServer.TCPServer):      """Simple XML-RPC server. | 
