mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-20 07:34:24 +01:00
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:
6
state.c
6
state.c
@@ -938,6 +938,10 @@ unexpected_pkt_nocleanup:
|
|||||||
/*
|
/*
|
||||||
* Unexpected packet, but nothing sent to chain yet, so no cleanup.
|
* 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);
|
err = unexpected_pkt(ctx, input);
|
||||||
goto err_close_nocleanup;
|
goto err_close_nocleanup;
|
||||||
|
|
||||||
@@ -955,6 +959,8 @@ err_close_nocleanup:
|
|||||||
* so there's nothing to clean up.
|
* so there's nothing to clean up.
|
||||||
*/
|
*/
|
||||||
add_effect(effect, send_pkt, err);
|
add_effect(effect, send_pkt, err);
|
||||||
|
|
||||||
|
close_nocleanup:
|
||||||
change_peer_cond(peer, PEER_CMD_OK, PEER_CLOSED);
|
change_peer_cond(peer, PEER_CMD_OK, PEER_CLOSED);
|
||||||
return next_state(peer, cstatus, STATE_CLOSED);
|
return next_state(peer, cstatus, STATE_CLOSED);
|
||||||
|
|
||||||
|
|||||||
@@ -1418,13 +1418,14 @@ static const char *apply_effects(struct peer *peer,
|
|||||||
*output = effect->u.send_pkt;
|
*output = effect->u.send_pkt;
|
||||||
|
|
||||||
/* Check for errors. */
|
/* Check for errors. */
|
||||||
if (strstarts(pkt, "ERROR_PKT:")) {
|
if (strstarts(pkt, "PKT_ERROR: ")) {
|
||||||
/* Some are expected. */
|
/* Some are expected. */
|
||||||
if (!streq(pkt, "ERROR_PKT:Commit tx noticed")
|
if (!streq(pkt, "PKT_ERROR: Commit tx noticed")
|
||||||
&& !streq(pkt, "ERROR_PKT:Otherspend noticed")
|
&& !streq(pkt, "PKT_ERROR: Otherspend noticed")
|
||||||
&& !streq(pkt, "ERROR_PKT:Anchor timed out")
|
&& !streq(pkt, "PKT_ERROR: Error inject")
|
||||||
&& !streq(pkt, "ERROR_PKT:Close timed out")
|
&& !streq(pkt, "PKT_ERROR: Anchor timed out")
|
||||||
&& !streq(pkt, "ERROR_PKT:Close forced due to HTLCs")) {
|
&& !streq(pkt, "PKT_ERROR: Close timed out")
|
||||||
|
&& !streq(pkt, "PKT_ERROR: Close forced due to HTLCs")) {
|
||||||
return pkt;
|
return pkt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user