state: fix case where we replied to an error with an error.

Found by fixing bogus test in test_state_coverage.c

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2016-01-22 06:41:46 +10:30
parent 9013a7d872
commit 4d9041e62a
2 changed files with 13 additions and 6 deletions

View File

@@ -938,6 +938,10 @@ unexpected_pkt_nocleanup:
/*
* Unexpected packet, but nothing sent to chain yet, so no cleanup.
*/
/* Don't reply to an error with an error. */
if (input_is(input, PKT_ERROR)) {
goto close_nocleanup;
}
err = unexpected_pkt(ctx, input);
goto err_close_nocleanup;
@@ -955,6 +959,8 @@ err_close_nocleanup:
* so there's nothing to clean up.
*/
add_effect(effect, send_pkt, err);
close_nocleanup:
change_peer_cond(peer, PEER_CMD_OK, PEER_CLOSED);
return next_state(peer, cstatus, STATE_CLOSED);