diff options
Diffstat (limited to 'src')
| -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}) | 
