From d7bc617034377119523709c504edb1205eaae34c Mon Sep 17 00:00:00 2001 From: SomberNight Date: Wed, 26 Nov 2025 17:17:59 +0000 Subject: [PATCH] lnonion: add OnionFailureCode.from_int() helper --- electrum/lnonion.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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