multi: add ability to read warning messages and log on link level

Warning messages are intended to add "softer" failure modes for peers,
so to start with we simply log the warnings sent to us. While we "may"
disconnect from the peer according to the spec, we start with the least
extreme option (which is also not a change in behavior because
previously we'd just log that we received an unknown odd message).
This commit is contained in:
Carla Kirk-Cohen 2022-05-16 12:19:07 -04:00
parent f5ef4992e0
commit 99828b8ebb
No known key found for this signature in database
GPG key ID: 4CA7FE54A6213C91
2 changed files with 14 additions and 0 deletions

View file

@ -1996,6 +1996,13 @@ func (l *channelLink) handleUpstreamMsg(msg lnwire.Message) {
// Update the mailbox's feerate as well.
l.mailBox.SetFeeRate(fee)
// In the case where we receive a warning message from our peer, just
// log it and move on. We choose not to disconnect from our peer,
// although we "MAY" do so according to the specification.
case *lnwire.Warning:
l.log.Warnf("received warning message from peer: %v",
msg.Error.Error())
case *lnwire.Error:
// Error received from remote, MUST fail channel, but should
// only print the contents of the error message if all

View file

@ -1455,6 +1455,10 @@ out:
break out
}
case *lnwire.Warning:
targetChan = msg.ChanID
isLinkUpdate = p.handleError(&msg.Error)
case *lnwire.Error:
targetChan = msg.ChanID
isLinkUpdate = p.handleError(msg)
@ -1688,6 +1692,9 @@ func messageSummary(msg lnwire.Message) string {
return fmt.Sprintf("chan_id=%v, id=%v, fail_code=%v",
msg.ChanID, msg.ID, msg.FailureCode)
case *lnwire.Warning:
return fmt.Sprintf("%v", msg.Error.Error())
case *lnwire.Error:
return fmt.Sprintf("%v", msg.Error())