mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
state: don't defer CMD_SEND_HTLC_UPDATE
Now we're covered by the opening command anyway, and the rule that you can't have two commands at once. There are two more defers: 1) In state STATE_WAIT_FOR_UPDATE_SIG_LOWPRIO/HIGHPRIO we are waiting for their signature because they started an HTLC, we defer any new HTLC creation, and 2) We defer PKT_OPEN_COMPLETE when we're waiting for anchor depth. The first can be solved by a flag indicating whether we are accepting new commands at all, the second by a pair of new states. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
fd370075f2
commit
3c1b2ad1c1
35
state.c
35
state.c
@ -73,11 +73,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
goto err_close_nocleanup;
|
goto err_close_nocleanup;
|
||||||
}
|
}
|
||||||
return next_state(ctx, effect, STATE_OPEN_WAIT_FOR_ANCHOR);
|
return next_state(ctx, effect, STATE_OPEN_WAIT_FOR_ANCHOR);
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, CMD_CLOSE)) {
|
} else if (input_is(input, CMD_CLOSE)) {
|
||||||
add_effect(&effect, cmd_fail, NULL);
|
add_effect(&effect, cmd_fail, NULL);
|
||||||
goto instant_close;
|
goto instant_close;
|
||||||
@ -96,11 +91,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
add_effect(&effect, send_pkt, pkt_anchor(ctx, peer));
|
add_effect(&effect, send_pkt, pkt_anchor(ctx, peer));
|
||||||
return next_state(ctx, effect,
|
return next_state(ctx, effect,
|
||||||
STATE_OPEN_WAIT_FOR_COMMIT_SIG);
|
STATE_OPEN_WAIT_FOR_COMMIT_SIG);
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, CMD_CLOSE)) {
|
} else if (input_is(input, CMD_CLOSE)) {
|
||||||
add_effect(&effect, cmd_fail, NULL);
|
add_effect(&effect, cmd_fail, NULL);
|
||||||
goto instant_close;
|
goto instant_close;
|
||||||
@ -128,11 +118,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
|
|
||||||
return next_state(ctx, effect,
|
return next_state(ctx, effect,
|
||||||
STATE_OPEN_WAITING_THEIRANCHOR);
|
STATE_OPEN_WAITING_THEIRANCHOR);
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, CMD_CLOSE)) {
|
} else if (input_is(input, CMD_CLOSE)) {
|
||||||
add_effect(&effect, cmd_fail, NULL);
|
add_effect(&effect, cmd_fail, NULL);
|
||||||
goto instant_close;
|
goto instant_close;
|
||||||
@ -159,11 +144,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
BITCOIN_ANCHOR_THEIRSPEND,
|
BITCOIN_ANCHOR_THEIRSPEND,
|
||||||
BITCOIN_ANCHOR_OTHERSPEND));
|
BITCOIN_ANCHOR_OTHERSPEND));
|
||||||
return next_state(ctx, effect, STATE_OPEN_WAITING_OURANCHOR);
|
return next_state(ctx, effect, STATE_OPEN_WAITING_OURANCHOR);
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, CMD_CLOSE)) {
|
} else if (input_is(input, CMD_CLOSE)) {
|
||||||
add_effect(&effect, cmd_fail, NULL);
|
add_effect(&effect, cmd_fail, NULL);
|
||||||
goto instant_close;
|
goto instant_close;
|
||||||
@ -186,11 +166,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
add_effect(&effect, cmd_defer, input);
|
add_effect(&effect, cmd_defer, input);
|
||||||
/* No state change. */
|
/* No state change. */
|
||||||
return effect;
|
return effect;
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, BITCOIN_ANCHOR_THEIRSPEND)) {
|
} else if (input_is(input, BITCOIN_ANCHOR_THEIRSPEND)) {
|
||||||
/* We no longer care about anchor depth. */
|
/* We no longer care about anchor depth. */
|
||||||
add_effect(&effect, unwatch,
|
add_effect(&effect, unwatch,
|
||||||
@ -257,11 +232,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
add_effect(&effect, cmd_defer, input);
|
add_effect(&effect, cmd_defer, input);
|
||||||
/* No state change. */
|
/* No state change. */
|
||||||
return effect;
|
return effect;
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, CMD_CLOSE)) {
|
} else if (input_is(input, CMD_CLOSE)) {
|
||||||
/* We no longer care about anchor depth. */
|
/* We no longer care about anchor depth. */
|
||||||
add_effect(&effect, unwatch,
|
add_effect(&effect, unwatch,
|
||||||
@ -309,11 +279,6 @@ struct state_effect *state(const tal_t *ctx,
|
|||||||
} else if (input_is(input, BITCOIN_ANCHOR_THEIRSPEND)) {
|
} else if (input_is(input, BITCOIN_ANCHOR_THEIRSPEND)) {
|
||||||
add_effect(&effect, cmd_fail, NULL);
|
add_effect(&effect, cmd_fail, NULL);
|
||||||
goto them_unilateral;
|
goto them_unilateral;
|
||||||
} else if (input_is(input, CMD_SEND_HTLC_UPDATE)) {
|
|
||||||
/* Can't do this until we're open. */
|
|
||||||
add_effect(&effect, cmd_defer, input);
|
|
||||||
/* No state change. */
|
|
||||||
return effect;
|
|
||||||
} else if (input_is(input, CMD_CLOSE)) {
|
} else if (input_is(input, CMD_CLOSE)) {
|
||||||
add_effect(&effect, cmd_fail, NULL);
|
add_effect(&effect, cmd_fail, NULL);
|
||||||
goto start_closing;
|
goto start_closing;
|
||||||
|
Loading…
Reference in New Issue
Block a user