Merge pull request #1372 from wpaulino/peer-log-unknown-channel

peer: prevent processing close msg if channel is not found
This commit is contained in:
Olaoluwa Osuntokun 2018-06-26 00:54:58 +02:00 committed by GitHub
commit c1c4b84757
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 7 deletions

@ -442,10 +442,11 @@ var (
// of being opened.
channelOpeningStateBucket = []byte("channelOpeningState")
// ErrChannelNotFound is returned when we are looking for a specific
// channel opening state in the FundingManager's internal database, but
// the channel in question is not considered being in an opening state.
ErrChannelNotFound = fmt.Errorf("channel not found in db")
// ErrChannelNotFound is an error returned when a channel is not known
// to us. In this case of the fundingManager, this error is returned
// when the channel in question is not considered being in an opening
// state.
ErrChannelNotFound = fmt.Errorf("channel not found")
)
// newFundingManager creates and initializes a new instance of the

11
peer.go

@ -1539,7 +1539,13 @@ out:
// closure process.
chanCloser, err := p.fetchActiveChanCloser(closeMsg.cid)
if err != nil {
peerLog.Errorf("unable to respond to remote "+
// If the channel is not known to us, we'll
// simply ignore this message.
if err == ErrChannelNotFound {
continue
}
peerLog.Errorf("Unable to respond to remote "+
"close msg: %v", err)
errMsg := &lnwire.Error{
@ -1617,8 +1623,7 @@ func (p *peer) fetchActiveChanCloser(chanID lnwire.ChannelID) (*channelCloser, e
channel, ok := p.activeChannels[chanID]
p.activeChanMtx.RUnlock()
if !ok {
return nil, fmt.Errorf("unable to close channel, "+
"ChannelID(%v) is unknown", chanID)
return nil, ErrChannelNotFound
}
// We'll attempt to look up the matching state machine, if we can't