diff options
Diffstat (limited to 'src/lib/SSLServer.py')
-rw-r--r-- | src/lib/SSLServer.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/lib/SSLServer.py b/src/lib/SSLServer.py index 21bf48d3e..6d053b802 100644 --- a/src/lib/SSLServer.py +++ b/src/lib/SSLServer.py @@ -47,11 +47,10 @@ class XMLRPCDispatcher (SimpleXMLRPCServer.SimpleXMLRPCDispatcher): params = (address, ) + params response = self.instance._dispatch(method, params, self.funcs) # py3k compatibility - if isinstance(response, bool) or isinstance(response, str) \ - or isinstance(response, list): - response = (response, ) - else: + if type(response) not in [bool, str, list, dict]: response = (response.decode('utf-8'), ) + else: + response = (response, ) raw_response = xmlrpclib.dumps(response, methodresponse=1, allow_none=self.allow_none, encoding=self.encoding) @@ -289,21 +288,27 @@ class XMLRPCRequestHandler (SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): except: (type, msg) = sys.exc_info()[:2] if str(type) == 'socket.error' and msg[0] == 32: - self.logger.warning("Connection dropped from %s" % self.client_address[0]) + self.logger.warning("Connection dropped from %s" % + self.client_address[0]) elif str(type) == 'socket.error' and msg[0] == 104: - self.logger.warning("Connection reset by peer: %s" % self.client_address[0]) + self.logger.warning("Connection reset by peer: %s" % + self.client_address[0]) elif str(type) == 'ssl.SSLError': - self.logger.warning("SSLError handling client %s: %s" % \ - (self.client_address[0], msg)) + self.logger.warning("SSLError handling client %s: %s" % + (self.client_address[0], msg)) else: - self.logger.error("Error sending response (%s): %s" % \ - (type, msg)) + self.logger.error("Error sending response (%s): %s" % + (type, msg)) def finish(self): # shut down the connection if not self.wfile.closed: - self.wfile.flush() - self.wfile.close() + try: + self.wfile.flush() + self.wfile.close() + except socket.error: + err = sys.exc_info()[1] + self.logger.warning("Error closing connection: %s" % err) self.rfile.close() |