instead of passing caller_cred for tracability, now only the hrn of the initial calle...
[sfa.git] / sfa / util / geniserver.py
index 2980b2e..8944f54 100644 (file)
@@ -97,7 +97,11 @@ class SecureXMLRPCServer(BaseHTTPServer.HTTPServer,SimpleXMLRPCServer.SimpleXMLR
         self.interface = None
         self.key_file = key_file
         self.cert_file = cert_file
-        SimpleXMLRPCServer.SimpleXMLRPCDispatcher.__init__(self, True, None)
+       #for compatibility with python 2.4 (centos53)
+       if sys.version_info < (2, 5):
+          SimpleXMLRPCServer.SimpleXMLRPCDispatcher.__init__(self)
+       else:
+           SimpleXMLRPCServer.SimpleXMLRPCDispatcher.__init__(self, True, None)
         SocketServer.BaseServer.__init__(self, server_address, HandlerClass)
         ctx = SSL.Context(SSL.SSLv23_METHOD)
         ctx.use_privatekey_file(key_file)
@@ -154,12 +158,13 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
             # check to see if a subclass implements _dispatch and dispatch
             # using that method if present.
             #response = self.server._marshaled_dispatch(request, getattr(self, '_dispatch', None))
-            # XX TODO: Need to get the real remote address 
-            source = None
-            response = self.api.handle(source, request)
+            remote_addr = (remote_ip, remote_port) = self.connection.getpeername()
+            self.api.remote_addr = remote_addr
+            response = self.api.handle(remote_addr, request)
 
         
         except Exception, fault:
+            raise
             # This should only happen if the module is buggy
             # internal error, report as HTTP server error
             self.send_response(500)