summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/core/dispatcher.py
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2016-10-05 15:49:06 -0400
committerKali Kaneko (leap communications) <kali@leap.se>2016-10-07 10:22:38 -0400
commit7edd1fcaed438a0566d37386ce8604f2565b4e6e (patch)
tree762abbd36f79737156744f22381fa5593c5121b4 /src/leap/bitmask/core/dispatcher.py
parentd270b7f11e404a3904fa32ed581196a4fa4e8604 (diff)
[refactor] do not print traceback for expected errors
Add the ability to declare an exceptions as 'expected'. This will avoid logging the backtrace on the bitmaskd log. We will just forward the message in the json that we return to the caller. - Resolves: #8506
Diffstat (limited to 'src/leap/bitmask/core/dispatcher.py')
-rw-r--r--src/leap/bitmask/core/dispatcher.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py
index 6a5603e6..783094ad 100644
--- a/src/leap/bitmask/core/dispatcher.py
+++ b/src/leap/bitmask/core/dispatcher.py
@@ -465,6 +465,16 @@ def _format_result(result):
def _format_error(failure):
- # TODO --- should check if the failure has the 'expected' attribute set
- logger.failure('[DISPATCHER] Uncatched error:')
+ """
+ Logs the failure backtrace, and returns a json containing the error
+ message.
+ """
+
+ # If a exception declares the 'expected' attribute as True,
+ # we will not print a full traceback
+ expected = getattr(failure.value, 'expected', False)
+ if not expected:
+ logger.failure('[DISPATCHER] Unexpected error:')
+
+ # if needed, we could add here the exception type as an extra field
return json.dumps({'error': failure.value.message, 'result': None})