summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/rpc.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 615c1f4..8bbc214 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -87,13 +87,31 @@ class RPCServer(SocketServer.TCPServer):
return self.socket, self.server_address
def handle_error(self, request, client_address):
- """Override TCPServer method, no error message if exiting"""
+ """Override TCPServer method
+
+ Error message goes to __stderr__. No error message if exiting
+ normally or socket raised EOF. Other exceptions not handled in
+ server code will cause os._exit.
+
+ """
try:
raise
except SystemExit:
raise
- else:
- TCPServer.handle_error(request, client_address)
+ except EOFError:
+ pass
+ except:
+ erf = 'sys.__stderr__'
+ print>>erf, '-'*40
+ print>>erf, 'Unhandled server exception!'
+ print>>erf, 'Thread: %s' % threading.currentThread().getName()
+ print>>erf, 'Client Address: ', address
+ print>>erf, 'Request: ', repr(request)
+ traceback.print_exc(file=erf)
+ print>>erf, '\n*** Unrecoverable, server exiting!'
+ print>>erf, '-'*40
+ import os
+ os._exit
objecttable = {}