mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-03 17:26:57 +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() {
|
||||
// First, filter all known channels with this peer for ones that are
|
||||
// both public and not pending.
|
||||
var activePublicChans []wire.OutPoint
|
||||
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()
|
||||
activePublicChans := p.filterChannelsToEnable()
|
||||
|
||||
// For each of the public, non-pending channels, set the channel
|
||||
// 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
|
||||
}
|
||||
|
||||
// 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
|
||||
// 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.
|
||||
|
|
Loading…
Add table
Reference in a new issue