1
0

lnonion: add OnionFailureCode.from_int() helper

This commit is contained in:
SomberNight
2025-11-26 17:17:59 +00:00
parent 30f2bc9eb8
commit d7bc617034

View File

@@ -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