From 5c9ea961ec955a7dfca2409daa4c1bbebc62c643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 19 May 2012 15:30:38 +0200 Subject: [PATCH] Add missing shutdown_request on TCPServer for Python <= 2.6 issue2606 review374001 --- trytond/protocols/jsonrpc.py | 12 ++++++++++++ trytond/protocols/xmlrpc.py | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/trytond/protocols/jsonrpc.py b/trytond/protocols/jsonrpc.py index e5d0a0d73f..7ed33642aa 100644 --- a/trytond/protocols/jsonrpc.py +++ b/trytond/protocols/jsonrpc.py @@ -306,6 +306,18 @@ class SimpleJSONRPCServer(SocketServer.TCPServer, for handler in self.handlers: self.shutdown_request(handler.request) + if sys.version_info[:2] <= (2, 6): + + def shutdown_request(self, request): + """Called to shutdown and close an individual request.""" + try: + #explicitly shutdown. socket.close() merely releases + #the socket and waits for GC to perform the actual close. + request.shutdown(socket.SHUT_WR) + except socket.error: + pass # some platforms may raise ENOTCONN here + self.close_request(request) + class SimpleThreadedJSONRPCServer(SocketServer.ThreadingMixIn, SimpleJSONRPCServer): diff --git a/trytond/protocols/xmlrpc.py b/trytond/protocols/xmlrpc.py index 9114a75db5..c6d26dac53 100644 --- a/trytond/protocols/xmlrpc.py +++ b/trytond/protocols/xmlrpc.py @@ -206,6 +206,18 @@ class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, for handler in self.handlers: self.shutdown_request(handler.request) + if sys.version_info[:2] <= (2, 6): + + def shutdown_request(self, request): + """Called to shutdown and close an individual request.""" + try: + #explicitly shutdown. socket.close() merely releases + #the socket and waits for GC to perform the actual close. + request.shutdown(socket.SHUT_WR) + except socket.error: + pass # some platforms may raise ENOTCONN here + self.close_request(request) + class SimpleThreadedXMLRPCServer6(SimpleThreadedXMLRPCServer): address_family = socket.AF_INET6