From fdcbed339b52e6e8f8170c7259f6a502d9bb028d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 27 Nov 2009 13:09:38 +0100 Subject: [PATCH] [FIX] hang in OSX when trying to shutdown server via SIGINT bzr revid: xmo@tinyerp.com-20091127120938-arrvoqieit1bqx9c --- bin/netsvc.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index 56d0eb2918a..863b17fe553 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -331,7 +331,19 @@ class HttpDaemon(threading.Thread): def stop(self): self.running = False if os.name != 'nt': - self.server.socket.shutdown( hasattr(socket, 'SHUT_RDWR') and socket.SHUT_RDWR or 2 ) + try: + self.server.socket.shutdown( + hasattr(socket, 'SHUT_RDWR') and socket.SHUT_RDWR or 2) + except socket.error, e: + if e.errno != 57: raise + # OSX, socket shutdowns both sides if any side closes it + # causing an error 57 'Socket is not connected' on shutdown + # of the other side (or something), see + # http://bugs.python.org/issue4397 + Logger().notifyChannel( + 'server', LOG_DEBUG, + '"%s" when shutting down server socket, ' + 'this is normal under OS X'%e) self.server.socket.close() def run(self):