]> granicus.if.org Git - python/commitdiff
Apply the first chunk of the second patch from SF bug #471720:
authorGuido van Rossum <guido@python.org>
Tue, 23 Oct 2001 21:42:45 +0000 (21:42 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 23 Oct 2001 21:42:45 +0000 (21:42 +0000)
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.)

Lib/SocketServer.py

index 5128e17548fcd5e73eb1b65f206352a1d8580ba5..7e1e27ca02cc96ad39dd7b3efe71d7751a86fca4 100644 (file)
@@ -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."""