X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fserver%2Fthreadedserver.py;h=7dfac7d78d98bcba84dfe6f08d644305b6a8a505;hb=acd13fb68264ecdc1996954f3f464537806f7380;hp=1a78f35a2e164b8466cdced4575f590a60aee735;hpb=f3620a4cdf3aa39d6a09a0cb5a34470d6c74d456;p=sfa.git diff --git a/sfa/server/threadedserver.py b/sfa/server/threadedserver.py index 1a78f35a..7dfac7d7 100644 --- a/sfa/server/threadedserver.py +++ b/sfa/server/threadedserver.py @@ -73,6 +73,10 @@ def verify_callback(conn, x509, err, depth, preverify): #print " X509_V_ERR_CERT_UNTRUSTED" return 1 + # ignore X509_V_ERR_CERT_SIGNATURE_FAILURE + if err == 7: + return 1 + logger.debug(" error %s in verify_callback"%err) return 0 @@ -123,27 +127,31 @@ class SecureXMLRpcRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): #self.send_response(500) #self.end_headers() - # got a valid response - self.send_response(200) - self.send_header("Content-type", "text/xml") - self.send_header("Content-length", str(len(response))) - self.end_headers() - self.wfile.write(response) - - # shut down the connection - self.wfile.flush() - self.connection.shutdown() # Modified here! + # avoid session/connection leaks : do this no matter what + finally: + self.send_response(200) + self.send_header("Content-type", "text/xml") + self.send_header("Content-length", str(len(response))) + self.end_headers() + self.wfile.write(response) + self.wfile.flush() + # close db connection + self.api.close_dbsession() + # shut down the connection + self.connection.shutdown() # Modified here! ## # Taken from the web (XXX find reference). Implements an HTTPS xmlrpc server class SecureXMLRPCServer(BaseHTTPServer.HTTPServer,SimpleXMLRPCServer.SimpleXMLRPCDispatcher): def __init__(self, server_address, HandlerClass, key_file, cert_file, logRequests=True): - """Secure XML-RPC server. + """ + Secure XML-RPC server. It it very similar to SimpleXMLRPCServer but it uses HTTPS for transporting XML data. """ - logger.debug("SecureXMLRPCServer.__init__, server_address=%s, cert_file=%s"%(server_address,cert_file)) + logger.debug("SecureXMLRPCServer.__init__, server_address=%s, " + "cert_file=%s, key_file=%s"%(server_address,cert_file,key_file)) self.logRequests = logRequests self.interface = None self.key_file = key_file