1
0

lnworker: nicer logs/error msgs for payment failure

try to decode onion error and log it in human-readable form
This commit is contained in:
SomberNight
2021-03-19 19:13:50 +01:00
parent 2509eaa642
commit d8352f1a0a
5 changed files with 53 additions and 16 deletions

View File

@@ -7,7 +7,11 @@ from collections import OrderedDict
from .lnutil import OnionFailureCodeMetaFlag
class MalformedMsg(Exception): pass
class FailedToParseMsg(Exception): pass
class MalformedMsg(FailedToParseMsg): pass
class UnknownMsgType(FailedToParseMsg): pass
class UnknownMsgFieldType(MalformedMsg): pass
class UnexpectedEndOfStream(MalformedMsg): pass
class FieldEncodingNotMinimal(MalformedMsg): pass
@@ -465,13 +469,17 @@ class LNSerializer:
Decode Lightning message by reading the first
two bytes to determine message type.
Returns message type string and parsed message contents dict
Returns message type string and parsed message contents dict,
or raises FailedToParseMsg.
"""
#print(f"decode_msg >>> {data.hex()}")
assert len(data) >= 2
msg_type_bytes = data[:2]
msg_type_int = int.from_bytes(msg_type_bytes, byteorder="big", signed=False)
scheme = self.msg_scheme_from_type[msg_type_bytes]
try:
scheme = self.msg_scheme_from_type[msg_type_bytes]
except KeyError:
raise UnknownMsgType(f"msg_type={msg_type_int}") # TODO even/odd type?
assert scheme[0][2] == msg_type_int
msg_type_name = scheme[0][1]
parsed = {}