summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-10-23 21:42:45 (GMT)
committerGuido van Rossum <guido@python.org>2001-10-23 21:42:45 (GMT)
commit83c3281826316e2a1c1e9b682c5d303be5df79f4 (patch)
tree7c2738d91782f1c6dfeb132903ab4f5995024284 /Lib
parent00ebd46dfc8623ac0bd436e5d0c47b53cac29fb9 (diff)
downloadcpython-83c3281826316e2a1c1e9b682c5d303be5df79f4.zip
cpython-83c3281826316e2a1c1e9b682c5d303be5df79f4.tar.gz
cpython-83c3281826316e2a1c1e9b682c5d303be5df79f4.tar.bz2
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.)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/SocketServer.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/Lib/SocketServer.py b/Lib/SocketServer.py
index 5128e17..7e1e27c 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."""