diff options
-rw-r--r-- | src/leap/bitmask/bonafide/_srp.py | 4 | ||||
-rw-r--r-- | src/leap/bitmask/core/dispatcher.py | 14 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/leap/bitmask/bonafide/_srp.py b/src/leap/bitmask/bonafide/_srp.py index 3f69b33..3939c5a 100644 --- a/src/leap/bitmask/bonafide/_srp.py +++ b/src/leap/bitmask/bonafide/_srp.py @@ -133,7 +133,9 @@ class SRPSignupMechanism(object): msg = 'username ' + msg[0] else: msg = 'unknown signup error' - raise SRPRegistrationError(msg) + error = SRPRegistrationError(msg) + error.expected = True + raise error else: username = signup.get('login') return username diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py index 6a5603e..783094a 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}) |