From dd912911fa064cf75e55da25dd7542cae1c90e9d Mon Sep 17 00:00:00 2001 From: ziggie Date: Tue, 11 Jul 2023 09:09:39 +0200 Subject: [PATCH] lnd: cancel rebroadcasting a tx. When abandoning a channel we make sure we cancel the rebroadcasting of the transaction. --- rpcserver.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/rpcserver.go b/rpcserver.go index af127c648..b9633a61a 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -2731,12 +2731,21 @@ func abandonChanFromGraph(chanGraph *channeldb.ChannelGraph, func (r *rpcServer) abandonChan(chanPoint *wire.OutPoint, bestHeight uint32) error { + // Before we remove the channel we cancel the rebroadcasting of the + // transaction. If this transaction does not exist in the rebroadcast + // queue anymore it is a noop. + txid, err := chainhash.NewHash(chanPoint.Hash[:]) + if err != nil { + return err + } + r.server.cc.Wallet.CancelRebroadcast(*txid) + // Abandoning a channel is a three-step process: remove from the open // channel state, remove from the graph, remove from the contract // court. Between any step it's possible that the users restarts the // process all over again. As a result, each of the steps below are // intended to be idempotent. - err := r.server.chanStateDB.AbandonChannel(chanPoint, bestHeight) + err = r.server.chanStateDB.AbandonChannel(chanPoint, bestHeight) if err != nil { return err }