From: Alastair Tse Date: Thu, 25 Jan 2007 14:52:36 +0000 (+0000) Subject: [XEND] Ignore socket.shutdown() exceptions X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15371^2~50 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2f8bdad8238c78917b2f36f8e11de1191fc6d012;p=xen.git [XEND] Ignore socket.shutdown() exceptions Add further comments about why that shutdown() exists. Signed-off-by: Alastair Tse --- diff --git a/tools/python/xen/web/httpserver.py b/tools/python/xen/web/httpserver.py index 14965e418f..d8a1f78a56 100644 --- a/tools/python/xen/web/httpserver.py +++ b/tools/python/xen/web/httpserver.py @@ -333,11 +333,15 @@ class HttpServer: def close(self): self.closed = True self.ready = False + # shutdown socket explicitly to allow reuse + try: + self.socket.shutdown(2) + except socket.error: + pass + try: - # shutdown socket explicitly to allow reuse - self.socket.shutdown(socket.SHUT_RDWR) self.socket.close() - except: + except socket.error: pass def getServerAddr(self): diff --git a/tools/python/xen/xend/server/XMLRPCServer.py b/tools/python/xen/xend/server/XMLRPCServer.py index 64895104be..722ccb4b2b 100644 --- a/tools/python/xen/xend/server/XMLRPCServer.py +++ b/tools/python/xen/xend/server/XMLRPCServer.py @@ -188,14 +188,22 @@ class XMLRPCServer: def cleanup(self): log.debug('XMLRPCServer.cleanup()') - try: - if hasattr(self, 'server'): - # shutdown socket explicitly to allow reuse - self.server.socket.shutdown(socket.SHUT_RDWR) + if hasattr(self, 'server'): + try: + # This is here to make sure the socket is actually + # cleaned up when close() is called. Otherwise + # SO_REUSEADDR doesn't take effect. To replicate, + # try 'xend reload' and look for EADDRINUSE. + # + # May be caued by us calling close() outside of + # the listen()ing thread. + self.server.socket.shutdown(2) + except socket.error, e: + pass # ignore any socket errors + try: self.server.socket.close() - except Exception, exn: - log.exception(exn) - pass + except socket.error, e: + pass def shutdown(self): self.running = False