From 0855422110845f74b3ddf0ff2ebc898317db76f3 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 21 Sep 2018 10:01:30 +0930 Subject: [PATCH] gossip_control: when searching for a txout, make sure it's not spent! There's no reason for the db to ever return non-NULL if it's spent. And there's only one caller, for which that is definitely true. Suggested-by: @cdecker Fixes: #1934 Signed-off-by: Rusty Russell --- tests/test_gossip.py | 2 -- wallet/wallet.c | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/test_gossip.py b/tests/test_gossip.py index 9b24e1b6cbe7..5437b64c58e4 100644 --- a/tests/test_gossip.py +++ b/tests/test_gossip.py @@ -4,7 +4,6 @@ import json import logging import os -import pytest import struct import subprocess import time @@ -865,7 +864,6 @@ def test_gossipwith(node_factory): assert num_msgs == 5 -@pytest.mark.xfail(strict=True) def test_gossip_notices_close(node_factory, bitcoind): # We want IO logging so we can replay a channel_announce to l1. l1 = node_factory.get_node(options={'log-level': 'io'}) diff --git a/wallet/wallet.c b/wallet/wallet.c index 23b94020f03a..9f2216811e2a 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -2139,7 +2139,8 @@ struct outpoint *wallet_outpoint_for_scid(struct wallet *w, tal_t *ctx, "FROM utxoset " "WHERE blockheight = ?" " AND txindex = ?" - " AND outnum = ?"); + " AND outnum = ?" + " AND spendheight IS NULL"); sqlite3_bind_int(stmt, 1, short_channel_id_blocknum(scid)); sqlite3_bind_int(stmt, 2, short_channel_id_txnum(scid)); sqlite3_bind_int(stmt, 3, short_channel_id_outnum(scid));