From: Guido van Rossum Date: Tue, 23 Oct 2001 21:42:45 +0000 (+0000) Subject: Apply the first chunk of the second patch from SF bug #471720: X-Git-Tag: v2.2.1c1~1087 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=83c3281826316e2a1c1e9b682c5d303be5df79f4;p=python Apply the first chunk of the second patch from SF bug #471720: ThreadingMixIn/TCPServer forgets close (Max Neunhöffer). This ensures that handle_error() and close_request() are called when an error occurs in the thread. (I am not applying the second chunk of the patch, which moved the finish() call into the finally clause in BaseRequestHandler's __init__ method; that would be a semantic change that I cannot accept at this point - the data would be sent even if the handler raised an exception.) --- diff --git a/Lib/SocketServer.py b/Lib/SocketServer.py index 5128e17548..7e1e27ca02 100644 --- a/Lib/SocketServer.py +++ b/Lib/SocketServer.py @@ -449,9 +449,17 @@ class ThreadingMixIn: """Mix-in class to handle each request in a new thread.""" def process_request_thread(self, request, client_address): - """Same as in BaseServer but as a thread.""" - self.finish_request(request, client_address) - self.close_request(request) + """Same as in BaseServer but as a thread. + + In addition, exception handling is done here. + + """ + try: + self.finish_request(request, client_address) + self.close_request(request) + except: + self.handle_error(request, client_address) + self.close_request(request) def process_request(self, request, client_address): """Start a new thread to process the request."""