From b49b90d5c3fdefd4ad7e790725b9f03438d57659 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Sun, 6 Nov 2016 14:46:16 +1030 Subject: [PATCH] peer: don't ever fail twice. There are paths where this can happen (eg. db fail), but don't call peer_breakdown() twice. Signed-off-by: Rusty Russell --- daemon/peer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/daemon/peer.c b/daemon/peer.c index 84f3771ab..a6d23a42d 100644 --- a/daemon/peer.c +++ b/daemon/peer.c @@ -383,6 +383,10 @@ static struct io_plan *peer_close(struct io_conn *conn, struct peer *peer) void peer_fail(struct peer *peer, const char *caller) { + /* Don't fail twice. */ + if (state_is_error(peer->state) || state_is_onchain(peer->state)) + return; + /* FIXME: Save state here? */ set_peer_state(peer, STATE_ERR_BREAKDOWN, caller, false); peer_breakdown(peer);