diff --git a/electrum/lnonion.py b/electrum/lnonion.py index 45ed9a065..f624627e1 100644 --- a/electrum/lnonion.py +++ b/electrum/lnonion.py @@ -505,10 +505,7 @@ class OnionRoutingFailure(Exception): @classmethod def from_bytes(cls, failure_msg: bytes): failure_code = int.from_bytes(failure_msg[:2], byteorder='big') - try: - failure_code = OnionFailureCode(failure_code) - except ValueError: - pass # unknown failure code + failure_code = OnionFailureCode.from_int(failure_code) # convert to enum, if known code failure_data = failure_msg[2:] return OnionRoutingFailure(failure_code, failure_data) @@ -640,6 +637,14 @@ class OnionFailureCode(IntEnum): TRAMPOLINE_FEE_INSUFFICIENT = NODE | 51 TRAMPOLINE_EXPIRY_TOO_SOON = NODE | 52 + @classmethod + def from_int(cls, code: int) -> Union[int, 'OnionFailureCode']: + try: + code = OnionFailureCode(code) + except ValueError: + pass # unknown failure code + return code + # don't use these elsewhere, the names are ambiguous without context del BADONION; del PERM; del NODE; del UPDATE