mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 06:41:44 +01:00
onchaind: see closes when wrong_funding shutdowns are used.
Fairly easy to do, though we also have to add the watch when we load from the database. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
b62706aa01
commit
a1b43a3653
4 changed files with 20 additions and 3 deletions
|
@ -264,6 +264,9 @@ static void peer_got_shutdown(struct channel *channel, const u8 *msg)
|
|||
if (!channel->shutdown_wrong_funding)
|
||||
channel->shutdown_wrong_funding = wrong_funding;
|
||||
|
||||
/* We now watch the "wrong" funding, in case we spend it. */
|
||||
channel_watch_wrong_funding(ld, channel);
|
||||
|
||||
/* TODO(cdecker) Selectively save updated fields to DB */
|
||||
wallet_channel_save(ld->wallet, channel);
|
||||
}
|
||||
|
|
|
@ -1353,6 +1353,18 @@ static enum watch_result funding_spent(struct channel *channel,
|
|||
return onchaind_funding_spent(channel, tx, block->height, false);
|
||||
}
|
||||
|
||||
void channel_watch_wrong_funding(struct lightningd *ld, struct channel *channel)
|
||||
{
|
||||
/* Watch the "wrong" funding too, in case we spend it. */
|
||||
if (channel->shutdown_wrong_funding) {
|
||||
/* FIXME: Remove arg from cb? */
|
||||
watch_txo(channel, ld->topology, channel,
|
||||
&channel->shutdown_wrong_funding->txid,
|
||||
channel->shutdown_wrong_funding->n,
|
||||
funding_spent);
|
||||
}
|
||||
}
|
||||
|
||||
void channel_watch_funding(struct lightningd *ld, struct channel *channel)
|
||||
{
|
||||
/* FIXME: Remove arg from cb? */
|
||||
|
@ -1361,6 +1373,7 @@ void channel_watch_funding(struct lightningd *ld, struct channel *channel)
|
|||
watch_txo(channel, ld->topology, channel,
|
||||
&channel->funding_txid, channel->funding_outnum,
|
||||
funding_spent);
|
||||
channel_watch_wrong_funding(ld, channel);
|
||||
}
|
||||
|
||||
static void json_add_peer(struct lightningd *ld,
|
||||
|
|
|
@ -87,6 +87,8 @@ void activate_peers(struct lightningd *ld);
|
|||
void drop_to_chain(struct lightningd *ld, struct channel *channel, bool cooperative);
|
||||
|
||||
void channel_watch_funding(struct lightningd *ld, struct channel *channel);
|
||||
/* If this channel has a "wrong funding" shutdown, watch that too. */
|
||||
void channel_watch_wrong_funding(struct lightningd *ld, struct channel *channel);
|
||||
|
||||
struct amount_msat channel_amount_receivable(const struct channel *channel);
|
||||
|
||||
|
|
|
@ -2739,6 +2739,5 @@ def test_shutdown_alternate_txid(node_factory, bitcoind):
|
|||
# We will see our funds return.
|
||||
assert len(l1.rpc.listfunds()['outputs']) == 1
|
||||
|
||||
# FIXME: we should close channels, but we don't!
|
||||
# wait_for(lambda: l2.rpc.listpeers()['peers'] == [])
|
||||
# wait_for(lambda: l1.rpc.listpeers()['peers'] == [])
|
||||
wait_for(lambda: l2.rpc.listpeers()['peers'] == [])
|
||||
wait_for(lambda: l1.rpc.listpeers()['peers'] == [])
|
||||
|
|
Loading…
Add table
Reference in a new issue