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

11
peer.go

@ -1539,7 +1539,13 @@ out:
// closure process. // closure process.
chanCloser, err := p.fetchActiveChanCloser(closeMsg.cid) chanCloser, err := p.fetchActiveChanCloser(closeMsg.cid)
if err != nil { 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) "close msg: %v", err)
errMsg := &lnwire.Error{ errMsg := &lnwire.Error{
@ -1617,8 +1623,7 @@ func (p *peer) fetchActiveChanCloser(chanID lnwire.ChannelID) (*channelCloser, e
channel, ok := p.activeChannels[chanID] channel, ok := p.activeChannels[chanID]
p.activeChanMtx.RUnlock() p.activeChanMtx.RUnlock()
if !ok { if !ok {
return nil, fmt.Errorf("unable to close channel, "+ return nil, ErrChannelNotFound
"ChannelID(%v) is unknown", chanID)
} }
// We'll attempt to look up the matching state machine, if we can't // We'll attempt to look up the matching state machine, if we can't