From 1e5949cfbbd69babca6478cd4a11486fa351b8e6 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Tue, 12 Sep 2017 17:55:20 +0200 Subject: [PATCH] lnwire: return more descriptive errors in DecodeFailure for onion errors --- lnwire/onion_error.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lnwire/onion_error.go b/lnwire/onion_error.go index 9b4bc61b..d00dbd96 100644 --- a/lnwire/onion_error.go +++ b/lnwire/onion_error.go @@ -831,7 +831,7 @@ func DecodeFailure(r io.Reader, pver uint32) (FailureMessage, error) { // is a 2 byte length followed by the payload itself. var failureLength uint16 if err := readElement(r, &failureLength); err != nil { - return nil, err + return nil, fmt.Errorf("unable to read error len: %v", err) } if failureLength > failureMessageLength { return nil, fmt.Errorf("failure message is too "+ @@ -839,7 +839,8 @@ func DecodeFailure(r io.Reader, pver uint32) (FailureMessage, error) { } failureData := make([]byte, failureLength) if _, err := io.ReadFull(r, failureData); err != nil { - return nil, err + return nil, fmt.Errorf("unable to full read payload of "+ + "%v: %v", failureLength, err) } dataReader := bytes.NewReader(failureData) @@ -848,7 +849,7 @@ func DecodeFailure(r io.Reader, pver uint32) (FailureMessage, error) { // the first two bytes of the buffer. var codeBytes [2]byte if _, err := io.ReadFull(dataReader, codeBytes[:]); err != nil { - return nil, err + return nil, fmt.Errorf("unable to read failure code: %v", err) } failCode := FailCode(binary.BigEndian.Uint16(codeBytes[:])) @@ -856,7 +857,7 @@ func DecodeFailure(r io.Reader, pver uint32) (FailureMessage, error) { // additional data if needed. failure, err := makeEmptyOnionError(failCode) if err != nil { - return nil, err + return nil, fmt.Errorf("unable to make empty error: %v", err) } // Finally, if this failure has a payload, then we'll read that now as @@ -864,7 +865,8 @@ func DecodeFailure(r io.Reader, pver uint32) (FailureMessage, error) { switch f := failure.(type) { case Serializable: if err := f.Decode(dataReader, pver); err != nil { - return nil, err + return nil, fmt.Errorf("unable to decode error "+ + "update: %v", err) } }