multi: remove pending channel from Brontide when funding flow failed

This commit adds a new interface method, `RemovePendingChannel`, to be
used when the funding flow is failed after calling `AddPendingChannel`
such that the Brontide has the most up-to-date view of the active
channels.
This commit is contained in:
yyforyongyu committed 2023-08-09 01:29:18 +08:00
1 parent 3ed579d06f
commit 927572583b
7 files changed
+97 -1

No files matched your search

+13 -1
View File
@@ -894,9 +894,21 @@ func (c *chanIdentifier) hasChanID() bool {
func (f *Manager) failFundingFlow(peer lnpeer.Peer, cid *chanIdentifier,
fundingErr error) {
log.Debugf("Failing funding flow for pending_id=%x: %v",
log.Debugf("Failing funding flow for pending_id=%v: %v",
cid.tempChanID, fundingErr)
// First, notify Brontide to remove the pending channel.
//
// NOTE: depending on where we fail the flow, we may not have the
// active channel ID yet.
if cid.hasChanID() {
err := peer.RemovePendingChannel(cid.chanID)
if err != nil {
log.Errorf("Unable to remove channel %v with peer %x: "+
"%v", cid, peer.IdentityKey(), err)
}
}
ctx, err := f.cancelReservationCtx(
peer.IdentityKey(), cid.tempChanID, false,
)