summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/leap/bitmask/bonafide/_srp.py4
-rw-r--r--src/leap/bitmask/core/dispatcher.py14
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})