mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-17 19:03:42 +01:00
lightningd: actually unwatch txs when onchaind says we should.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
6d0fd84c63
commit
c6ce352404
@ -1193,7 +1193,20 @@ static void handle_onchain_broadcast_tx(struct peer *peer, const u8 *msg)
|
||||
|
||||
static void handle_onchain_unwatch_tx(struct peer *peer, const u8 *msg)
|
||||
{
|
||||
/* FIXME: unwatch tx and children here. */
|
||||
struct bitcoin_txid txid;
|
||||
struct txwatch *txw;
|
||||
|
||||
if (!fromwire_onchain_unwatch_tx(msg, NULL, &txid)) {
|
||||
peer_internal_error(peer, "Invalid onchain_unwatch_tx");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Frees the txo watches, too: see watch_tx_and_outputs() */
|
||||
txw = find_txwatch(peer->ld->topology, &txid, peer);
|
||||
if (!txw)
|
||||
log_unusual(peer->log, "Can't unwatch txid %s",
|
||||
type_to_string(ltmp, struct bitcoin_txid, &txid));
|
||||
tal_free(txw);
|
||||
}
|
||||
|
||||
static void handle_extracted_preimage(struct peer *peer, const u8 *msg)
|
||||
|
@ -112,6 +112,24 @@ struct txwatch *watch_txid_(const tal_t *ctx,
|
||||
return w;
|
||||
}
|
||||
|
||||
struct txwatch *find_txwatch(struct chain_topology *topo,
|
||||
const struct bitcoin_txid *txid,
|
||||
const struct peer *peer)
|
||||
{
|
||||
struct txwatch_hash_iter i;
|
||||
struct txwatch *w;
|
||||
|
||||
/* We could have more than one peer watching same txid, though we
|
||||
* don't for onchaind. */
|
||||
for (w = txwatch_hash_getfirst(&topo->txwatches, txid, &i);
|
||||
w;
|
||||
w = txwatch_hash_getnext(&topo->txwatches, txid, &i)) {
|
||||
if (w->peer == peer)
|
||||
break;
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
bool watching_txid(const struct chain_topology *topo,
|
||||
const struct bitcoin_txid *txid)
|
||||
{
|
||||
|
@ -134,6 +134,10 @@ struct txowatch *watch_txo_(const tal_t *ctx,
|
||||
const struct block *block), \
|
||||
(cbdata))
|
||||
|
||||
struct txwatch *find_txwatch(struct chain_topology *topo,
|
||||
const struct bitcoin_txid *txid,
|
||||
const struct peer *peer);
|
||||
|
||||
void txwatch_fire(struct chain_topology *topo,
|
||||
const struct bitcoin_tx *tx,
|
||||
unsigned int depth);
|
||||
|
Loading…
Reference in New Issue
Block a user