Merge pull request #4184 from wpaulino/upfront-shutdown-reservation-cleanup

fundingmanager: check remote peer upfront shutdown support before reservation
This commit is contained in:
Olaoluwa Osuntokun 2020-04-14 11:15:37 -07:00 committed by GitHub
commit b7d5667db0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -3078,6 +3078,27 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) {
}
}
// Check whether the peer supports upfront shutdown, and get an address
// which should be used (either a user specified address or a new
// address from the wallet if our node is configured to set shutdown
// address by default).
shutdown, err := getUpfrontShutdownScript(
msg.peer, msg.openChanReq.shutdownScript,
func() (lnwire.DeliveryAddress, error) {
addr, err := f.cfg.Wallet.NewAddress(
lnwallet.WitnessPubKey, false,
)
if err != nil {
return nil, err
}
return txscript.PayToAddrScript(addr)
},
)
if err != nil {
msg.err <- err
return
}
// Initialize a funding reservation with the local wallet. If the
// wallet doesn't have enough funds to commit to this channel, then the
// request will fail, and be aborted.
@ -3112,24 +3133,6 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) {
return
}
// Check whether the peer supports upfront shutdown, and get an address which
// should be used (either a user specified address or a new address from the
// wallet if our node is configured to set shutdown address by default).
shutdown, err := getUpfrontShutdownScript(
msg.peer, msg.openChanReq.shutdownScript,
func() (lnwire.DeliveryAddress, error) {
addr, err := f.cfg.Wallet.NewAddress(lnwallet.WitnessPubKey, false)
if err != nil {
return nil, err
}
return txscript.PayToAddrScript(addr)
},
)
if err != nil {
msg.err <- err
return
}
// Set our upfront shutdown address in the existing reservation.
reservation.SetOurUpfrontShutdown(shutdown)