From f2770c9ac4c77dbda50de828de77f837840afbfb Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Mon, 6 Jun 2011 09:48:56 +0200 Subject: [PATCH] [FIX] netrpc_server: close as soon as possible the socket, and do it after a communication-level exception. lp bug: https://launchpad.net/bugs/785009 fixed bzr revid: vmt@openerp.com-20110606074856-e726j4klc5ljiq5w --- openerp/service/netrpc_server.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openerp/service/netrpc_server.py b/openerp/service/netrpc_server.py index e3c181d4a8c..ac3cd724a45 100644 --- a/openerp/service/netrpc_server.py +++ b/openerp/service/netrpc_server.py @@ -87,11 +87,15 @@ class TinySocketClientThread(threading.Thread, netsvc.OpenERPDispatcher): tb_s = "".join(traceback.format_exception(*tb)) logging.getLogger('web-services').debug("netrpc: communication-level exception", exc_info=True) ts.mysend(e, exception=True, traceback=tb_s) + break except Exception, ex: #terminate this channel if we can't properly send back the error logging.getLogger('web-services').exception("netrpc: cannot deliver exception message to client") break + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + self.sock = None self.threads.remove(self) self.running = False return True