diff --git a/feature/default_sets.go b/feature/default_sets.go index 244466e86..fcb53b666 100644 --- a/feature/default_sets.go +++ b/feature/default_sets.go @@ -107,4 +107,8 @@ var defaultSetDesc = setDesc{ SetInit: {}, // I SetNodeAnn: {}, // N }, + lnwire.RbfCoopCloseOptional: { + SetInit: {}, // I + SetNodeAnn: {}, // N + }, } diff --git a/feature/manager.go b/feature/manager.go index ad26ac8ab..862880f3b 100644 --- a/feature/manager.go +++ b/feature/manager.go @@ -219,6 +219,7 @@ func newManager(cfg Config, desc setDesc) (*Manager, error) { } if cfg.NoRbfCoopClose { raw.Unset(lnwire.RbfCoopCloseOptionalStaging) + raw.Unset(lnwire.RbfCoopCloseOptional) } for _, custom := range cfg.CustomFeatures[set] { diff --git a/peer/brontide.go b/peer/brontide.go index 74c7f60e0..44880e43c 100644 --- a/peer/brontide.go +++ b/peer/brontide.go @@ -975,11 +975,13 @@ func (p *Brontide) taprootShutdownAllowed() bool { // rbfCoopCloseAllowed returns true if both parties have negotiated the new RBF // coop close feature. func (p *Brontide) rbfCoopCloseAllowed() bool { - return p.RemoteFeatures().HasFeature( - lnwire.RbfCoopCloseOptionalStaging, - ) && p.LocalFeatures().HasFeature( - lnwire.RbfCoopCloseOptionalStaging, - ) + bothHaveBit := func(bit lnwire.FeatureBit) bool { + return p.RemoteFeatures().HasFeature(bit) && + p.LocalFeatures().HasFeature(bit) + } + + return bothHaveBit(lnwire.RbfCoopCloseOptional) || + bothHaveBit(lnwire.RbfCoopCloseOptionalStaging) } // QuitSignal is a method that should return a channel which will be sent upon