From da559f43b38ff16b5aa63829518862e0333de7f7 Mon Sep 17 00:00:00 2001 From: Enrico Faulhaber Date: Thu, 28 Mar 2019 13:30:07 +0100 Subject: [PATCH] interface/tcp: rework exception handling Change-Id: I3358e94f32c7aa152a080aa8fb2514a79bbbd112 Reviewed-on: https://forge.frm2.tum.de/review/20258 Reviewed-by: Enrico Faulhaber Tested-by: Enrico Faulhaber Tested-by: JenkinsCodeReview --- secop/protocol/interface/tcp.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/secop/protocol/interface/tcp.py b/secop/protocol/interface/tcp.py index e7bae7d..236f428 100644 --- a/secop/protocol/interface/tcp.py +++ b/secop/protocol/interface/tcp.py @@ -124,13 +124,8 @@ class TCPRequestHandler(socketserver.BaseRequestHandler): result = None try: msg = decode_msg(origin) - result = serverobj.dispatcher.handle_request(self, msg) - except SECoPError as err: - result = (ERRORPREFIX + msg[0], msg[1], [err.name, str(err), - {'exception': formatException(), - 'traceback': formatExtendedStack()}]) except Exception as err: - # create Error Obj instead + msg = origin.split(' ',3) result = (ERRORPREFIX + msg[0], msg[1], ['InternalError', str(err), {'exception': formatException(), 'traceback': formatExtendedStack()}]) @@ -139,6 +134,27 @@ class TCPRequestHandler(socketserver.BaseRequestHandler): print('--------------------') print(formatExtendedTraceback(sys.exc_info())) print('====================') + else: + try: + result = serverobj.dispatcher.handle_request(self, msg) + except SECoPError as err: + result = (ERRORPREFIX + msg[0], msg[1], [err.name, str(err), + {'exception': formatException(), + 'traceback': formatExtendedStack()}]) + except ValueError as err: + result = (ERRORPREFIX + msg[0], msg[1], [u"BadValue", str(err), + {'exception': formatException(), + 'traceback': formatExtendedStack()}]) + except Exception as err: + # create Error Obj instead + result = (ERRORPREFIX + msg[0], msg[1], ['InternalError', str(err), + {'exception': formatException(), + 'traceback': formatExtendedStack()}]) + print('--------------------') + print(formatException()) + print('--------------------') + print(formatExtendedTraceback(sys.exc_info())) + print('====================') if not result: self.log.error('empty result upon msg %s' % repr(msg))