mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-04 01:36:24 +01:00
peer: add filterChannelsToEnable
to filter channels for enabling
This commit is contained in:
parent
f632a58b3b
commit
a81d4e9c5c
1 changed files with 39 additions and 28 deletions
|
@ -2508,34 +2508,7 @@ out:
|
||||||
func (p *Brontide) reenableActiveChannels() {
|
func (p *Brontide) reenableActiveChannels() {
|
||||||
// First, filter all known channels with this peer for ones that are
|
// First, filter all known channels with this peer for ones that are
|
||||||
// both public and not pending.
|
// both public and not pending.
|
||||||
var activePublicChans []wire.OutPoint
|
activePublicChans := p.filterChannelsToEnable()
|
||||||
p.activeChanMtx.RLock()
|
|
||||||
for chanID, lnChan := range p.activeChannels {
|
|
||||||
// If the lnChan is nil, continue as this is a pending channel.
|
|
||||||
if lnChan == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
dbChan := lnChan.State()
|
|
||||||
isPublic := dbChan.ChannelFlags&lnwire.FFAnnounceChannel != 0
|
|
||||||
if !isPublic || dbChan.IsPending {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// We'll also skip any channels added during this peer's
|
|
||||||
// lifecycle since they haven't waited out the timeout. Their
|
|
||||||
// first announcement will be enabled, and the chan status
|
|
||||||
// manager will begin monitoring them passively since they exist
|
|
||||||
// in the database.
|
|
||||||
if _, ok := p.addedChannels[chanID]; ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
activePublicChans = append(
|
|
||||||
activePublicChans, dbChan.FundingOutpoint,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
p.activeChanMtx.RUnlock()
|
|
||||||
|
|
||||||
// For each of the public, non-pending channels, set the channel
|
// For each of the public, non-pending channels, set the channel
|
||||||
// disabled bit to false and send out a new ChannelUpdate. If this
|
// disabled bit to false and send out a new ChannelUpdate. If this
|
||||||
|
@ -2628,6 +2601,44 @@ func (p *Brontide) fetchActiveChanCloser(chanID lnwire.ChannelID) (
|
||||||
return chanCloser, nil
|
return chanCloser, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// filterChannelsToEnable filters a list of channels to be enabled upon start.
|
||||||
|
// The filtered channels are active channels that's neither private nor
|
||||||
|
// pending.
|
||||||
|
func (p *Brontide) filterChannelsToEnable() []wire.OutPoint {
|
||||||
|
var activePublicChans []wire.OutPoint
|
||||||
|
|
||||||
|
p.activeChanMtx.RLock()
|
||||||
|
defer p.activeChanMtx.RUnlock()
|
||||||
|
|
||||||
|
for chanID, lnChan := range p.activeChannels {
|
||||||
|
// If the lnChan is nil, continue as this is a pending channel.
|
||||||
|
if lnChan == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
dbChan := lnChan.State()
|
||||||
|
isPublic := dbChan.ChannelFlags&lnwire.FFAnnounceChannel != 0
|
||||||
|
if !isPublic || dbChan.IsPending {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// We'll also skip any channels added during this peer's
|
||||||
|
// lifecycle since they haven't waited out the timeout. Their
|
||||||
|
// first announcement will be enabled, and the chan status
|
||||||
|
// manager will begin monitoring them passively since they exist
|
||||||
|
// in the database.
|
||||||
|
if _, ok := p.addedChannels[chanID]; ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
activePublicChans = append(
|
||||||
|
activePublicChans, dbChan.FundingOutpoint,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return activePublicChans
|
||||||
|
}
|
||||||
|
|
||||||
// chooseDeliveryScript takes two optionally set shutdown scripts and returns
|
// chooseDeliveryScript takes two optionally set shutdown scripts and returns
|
||||||
// a suitable script to close out to. This may be nil if neither script is
|
// a suitable script to close out to. This may be nil if neither script is
|
||||||
// set. If both scripts are set, this function will error if they do not match.
|
// set. If both scripts are set, this function will error if they do not match.
|
||||||
|
|
Loading…
Add table
Reference in a new issue