From 1b49d2afa6f861e791ebddd2414f2ca4b042e58a Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 4 May 2016 16:11:16 +0930 Subject: [PATCH] chaintopology: always track txs we broadcast ourselves. This is inefficient, but it means we always know the tx depth. Signed-off-by: Rusty Russell --- daemon/chaintopology.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/daemon/chaintopology.c b/daemon/chaintopology.c index 2cd2ab3e4..b9b6a677d 100644 --- a/daemon/chaintopology.c +++ b/daemon/chaintopology.c @@ -99,6 +99,22 @@ static void add_tx_to_block(struct block *b, const struct sha256_double *txid) b->txids[n] = *txid; } +static bool we_broadcast(struct lightningd_state *dstate, + const struct sha256_double *txid) +{ + struct peer *peer; + + list_for_each(&dstate->peers, peer, list) { + struct outgoing_tx *otx; + + list_for_each(&peer->outgoing_txs, otx, list) { + if (structeq(&otx->txid, txid)) + return true; + } + } + return false; +} + /* Fills in prev, height, mediantime. */ static void connect_block(struct lightningd_state *dstate, struct block *prev, @@ -138,7 +154,7 @@ static void connect_block(struct lightningd_state *dstate, /* We did spends first, in case that tells us to watch tx. */ bitcoin_txid(tx, &txid); - if (watching_txid(dstate, &txid)) + if (watching_txid(dstate, &txid) || we_broadcast(dstate, &txid)) add_tx_to_block(b, &txid); } b->full_txs = tal_free(b->full_txs);