fundingmanager: retrieve peer before resuming funding flow
This commit is contained in:
parent
6d4da72156
commit
e669e90017
@ -23,6 +23,7 @@ import (
|
|||||||
"github.com/lightningnetwork/lnd/channeldb"
|
"github.com/lightningnetwork/lnd/channeldb"
|
||||||
"github.com/lightningnetwork/lnd/htlcswitch"
|
"github.com/lightningnetwork/lnd/htlcswitch"
|
||||||
"github.com/lightningnetwork/lnd/keychain"
|
"github.com/lightningnetwork/lnd/keychain"
|
||||||
|
"github.com/lightningnetwork/lnd/lnpeer"
|
||||||
"github.com/lightningnetwork/lnd/lnrpc"
|
"github.com/lightningnetwork/lnd/lnrpc"
|
||||||
"github.com/lightningnetwork/lnd/lnwallet"
|
"github.com/lightningnetwork/lnd/lnwallet"
|
||||||
"github.com/lightningnetwork/lnd/lnwire"
|
"github.com/lightningnetwork/lnd/lnwire"
|
||||||
@ -553,16 +554,29 @@ func (f *fundingManager) Start() error {
|
|||||||
// resume wait on startup.
|
// resume wait on startup.
|
||||||
case shortChanID, ok := <-confChan:
|
case shortChanID, ok := <-confChan:
|
||||||
if !ok {
|
if !ok {
|
||||||
fndgLog.Errorf("waiting for funding" +
|
fndgLog.Errorf("Waiting for funding" +
|
||||||
"confirmation failed")
|
"confirmation failed")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Success, funding transaction was confirmed.
|
// The funding transaction has confirmed, so
|
||||||
err := f.handleFundingConfirmation(ch, shortChanID)
|
// we'll attempt to retrieve the remote peer
|
||||||
|
// to complete the rest of the funding flow.
|
||||||
|
peerChan := make(chan lnpeer.Peer, 1)
|
||||||
|
f.cfg.NotifyWhenOnline(ch.IdentityPub, peerChan)
|
||||||
|
|
||||||
|
var peer lnpeer.Peer
|
||||||
|
select {
|
||||||
|
case peer = <-peerChan:
|
||||||
|
case <-f.quit:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := f.handleFundingConfirmation(
|
||||||
|
peer, ch, shortChanID,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fndgLog.Errorf("failed to handle funding"+
|
fndgLog.Errorf("Failed to handle "+
|
||||||
"confirmation: %v", err)
|
"funding confirmation: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -620,10 +634,21 @@ func (f *fundingManager) Start() error {
|
|||||||
go func(dbChan *channeldb.OpenChannel) {
|
go func(dbChan *channeldb.OpenChannel) {
|
||||||
defer f.wg.Done()
|
defer f.wg.Done()
|
||||||
|
|
||||||
err := f.handleFundingConfirmation(dbChan, shortChanID)
|
peerChan := make(chan lnpeer.Peer, 1)
|
||||||
|
f.cfg.NotifyWhenOnline(dbChan.IdentityPub, peerChan)
|
||||||
|
|
||||||
|
var peer lnpeer.Peer
|
||||||
|
select {
|
||||||
|
case peer = <-peerChan:
|
||||||
|
case <-f.quit:
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := f.handleFundingConfirmation(
|
||||||
|
peer, dbChan, shortChanID,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fndgLog.Errorf("failed to handle funding"+
|
fndgLog.Errorf("Failed to handle "+
|
||||||
"confirmation: %v", err)
|
"funding confirmation: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}(channel)
|
}(channel)
|
||||||
|
Loading…
Reference in New Issue
Block a user