Browse Source

state: remove all traces of struct state_effect.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-0.6.1
Rusty Russell 9 years ago
parent
commit
2b3d5b4049
  1. 32
      state.c
  2. 42
      state.h
  3. 42
      test/test_state_coverage.c

32
state.c

@ -95,8 +95,7 @@ enum command_status state(const tal_t *ctx,
const enum state_input input, const enum state_input input,
const union input *idata, const union input *idata,
Pkt **out, Pkt **out,
struct bitcoin_tx **broadcast, struct bitcoin_tx **broadcast)
struct state_effect **effect)
{ {
Pkt *decline; Pkt *decline;
struct bitcoin_tx *tx; struct bitcoin_tx *tx;
@ -106,9 +105,6 @@ enum command_status state(const tal_t *ctx,
*out = NULL; *out = NULL;
*broadcast = NULL; *broadcast = NULL;
/* NULL-terminated linked list. */
*effect = NULL;
switch (peer->state) { switch (peer->state) {
/* /*
* Initial channel opening states. * Initial channel opening states.
@ -132,7 +128,7 @@ enum command_status state(const tal_t *ctx,
break; break;
case STATE_OPEN_WAIT_FOR_OPEN_NOANCHOR: case STATE_OPEN_WAIT_FOR_OPEN_NOANCHOR:
if (input_is(input, PKT_OPEN)) { if (input_is(input, PKT_OPEN)) {
err = accept_pkt_open(ctx, peer, idata->pkt, effect); err = accept_pkt_open(ctx, peer, idata->pkt);
if (err) { if (err) {
complete_cmd(peer, &cstatus, CMD_FAIL); complete_cmd(peer, &cstatus, CMD_FAIL);
goto err_close_nocleanup; goto err_close_nocleanup;
@ -148,7 +144,7 @@ enum command_status state(const tal_t *ctx,
break; break;
case STATE_OPEN_WAIT_FOR_OPEN_WITHANCHOR: case STATE_OPEN_WAIT_FOR_OPEN_WITHANCHOR:
if (input_is(input, PKT_OPEN)) { if (input_is(input, PKT_OPEN)) {
err = accept_pkt_open(ctx, peer, idata->pkt, effect); err = accept_pkt_open(ctx, peer, idata->pkt);
if (err) { if (err) {
complete_cmd(peer, &cstatus, CMD_FAIL); complete_cmd(peer, &cstatus, CMD_FAIL);
goto err_close_nocleanup; goto err_close_nocleanup;
@ -166,7 +162,7 @@ enum command_status state(const tal_t *ctx,
break; break;
case STATE_OPEN_WAIT_FOR_ANCHOR: case STATE_OPEN_WAIT_FOR_ANCHOR:
if (input_is(input, PKT_OPEN_ANCHOR)) { if (input_is(input, PKT_OPEN_ANCHOR)) {
err = accept_pkt_anchor(ctx, peer, idata->pkt, effect); err = accept_pkt_anchor(ctx, peer, idata->pkt);
if (err) { if (err) {
complete_cmd(peer, &cstatus, CMD_FAIL); complete_cmd(peer, &cstatus, CMD_FAIL);
goto err_close_nocleanup; goto err_close_nocleanup;
@ -192,8 +188,7 @@ enum command_status state(const tal_t *ctx,
break; break;
case STATE_OPEN_WAIT_FOR_COMMIT_SIG: case STATE_OPEN_WAIT_FOR_COMMIT_SIG:
if (input_is(input, PKT_OPEN_COMMIT_SIG)) { if (input_is(input, PKT_OPEN_COMMIT_SIG)) {
err = accept_pkt_open_commit_sig(ctx, peer, idata->pkt, err = accept_pkt_open_commit_sig(ctx, peer, idata->pkt);
effect);
if (err) { if (err) {
complete_cmd(peer, &cstatus, CMD_FAIL); complete_cmd(peer, &cstatus, CMD_FAIL);
goto err_start_unilateral_close; goto err_start_unilateral_close;
@ -600,8 +595,7 @@ enum command_status state(const tal_t *ctx,
case STATE_WAIT_FOR_CLOSE_COMPLETE: case STATE_WAIT_FOR_CLOSE_COMPLETE:
if (input_is(input, PKT_CLOSE_COMPLETE)) { if (input_is(input, PKT_CLOSE_COMPLETE)) {
err = accept_pkt_close_complete(ctx, peer, idata->pkt, err = accept_pkt_close_complete(ctx, peer, idata->pkt);
effect);
if (err) if (err)
goto err_start_unilateral_close_already_closing; goto err_start_unilateral_close_already_closing;
queue_pkt(out, queue_pkt(out,
@ -612,8 +606,7 @@ enum command_status state(const tal_t *ctx,
} else if (input_is(input, PKT_CLOSE)) { } else if (input_is(input, PKT_CLOSE)) {
/* We can use the sig just like CLOSE_COMPLETE */ /* We can use the sig just like CLOSE_COMPLETE */
err = accept_pkt_simultaneous_close(ctx, peer, err = accept_pkt_simultaneous_close(ctx, peer,
idata->pkt, idata->pkt);
effect);
if (err) if (err)
goto err_start_unilateral_close_already_closing; goto err_start_unilateral_close_already_closing;
queue_pkt(out, queue_pkt(out,
@ -636,8 +629,7 @@ enum command_status state(const tal_t *ctx,
case STATE_WAIT_FOR_CLOSE_ACK: case STATE_WAIT_FOR_CLOSE_ACK:
if (input_is(input, PKT_CLOSE_ACK)) { if (input_is(input, PKT_CLOSE_ACK)) {
err = accept_pkt_close_ack(ctx, peer, idata->pkt, err = accept_pkt_close_ack(ctx, peer, idata->pkt);
effect);
if (err) if (err)
queue_pkt(out, err); queue_pkt(out, err);
set_peer_cond(peer, PEER_CLOSED); set_peer_cond(peer, PEER_CLOSED);
@ -997,7 +989,7 @@ them_unilateral:
return next_state(peer, cstatus, STATE_CLOSE_WAIT_SPENDTHEM); return next_state(peer, cstatus, STATE_CLOSE_WAIT_SPENDTHEM);
accept_htlc_update: accept_htlc_update:
err = accept_pkt_htlc_update(ctx, peer, idata->pkt, &decline, effect); err = accept_pkt_htlc_update(ctx, peer, idata->pkt, &decline);
if (err) if (err)
goto err_start_unilateral_close; goto err_start_unilateral_close;
if (decline) { if (decline) {
@ -1014,7 +1006,7 @@ accept_htlc_update:
prio(peer->state, STATE_WAIT_FOR_UPDATE_SIG)); prio(peer->state, STATE_WAIT_FOR_UPDATE_SIG));
accept_htlc_routefail: accept_htlc_routefail:
err = accept_pkt_htlc_routefail(ctx, peer, idata->pkt, effect); err = accept_pkt_htlc_routefail(ctx, peer, idata->pkt);
if (err) if (err)
goto err_start_unilateral_close; goto err_start_unilateral_close;
queue_pkt(out, pkt_update_accept(ctx, peer)); queue_pkt(out, pkt_update_accept(ctx, peer));
@ -1022,7 +1014,7 @@ accept_htlc_routefail:
prio(peer->state, STATE_WAIT_FOR_UPDATE_SIG)); prio(peer->state, STATE_WAIT_FOR_UPDATE_SIG));
accept_htlc_timedout: accept_htlc_timedout:
err = accept_pkt_htlc_timedout(ctx, peer, idata->pkt, effect); err = accept_pkt_htlc_timedout(ctx, peer, idata->pkt);
if (err) if (err)
goto err_start_unilateral_close; goto err_start_unilateral_close;
queue_pkt(out, pkt_update_accept(ctx, peer)); queue_pkt(out, pkt_update_accept(ctx, peer));
@ -1056,7 +1048,7 @@ start_closing:
return next_state(peer, cstatus, STATE_WAIT_FOR_CLOSE_COMPLETE); return next_state(peer, cstatus, STATE_WAIT_FOR_CLOSE_COMPLETE);
accept_closing: accept_closing:
err = accept_pkt_close(ctx, peer, idata->pkt, effect); err = accept_pkt_close(ctx, peer, idata->pkt);
if (err) if (err)
goto err_start_unilateral_close; goto err_start_unilateral_close;
peer_watch_close(peer, BITCOIN_CLOSE_DONE, INPUT_NONE); peer_watch_close(peer, BITCOIN_CLOSE_DONE, INPUT_NONE);

42
state.h

@ -21,7 +21,6 @@ static inline bool state_is_error(enum state s)
struct peer; struct peer;
struct bitcoin_tx; struct bitcoin_tx;
struct state_effect;
static inline bool input_is_pkt(enum state_input input) static inline bool input_is_pkt(enum state_input input)
{ {
@ -41,8 +40,7 @@ enum command_status state(const tal_t *ctx,
const enum state_input input, const enum state_input input,
const union input *idata, const union input *idata,
Pkt **out, Pkt **out,
struct bitcoin_tx **broadcast, struct bitcoin_tx **broadcast);
struct state_effect **effect);
/* Any CMD_SEND_HTLC_* */ /* Any CMD_SEND_HTLC_* */
#define CMD_SEND_UPDATE_ANY INPUT_MAX #define CMD_SEND_UPDATE_ANY INPUT_MAX
@ -124,31 +122,25 @@ Pkt *pkt_err_unexpected(const tal_t *ctx, const Pkt *pkt);
/* Process various packets: return an error packet on failure. */ /* Process various packets: return an error packet on failure. */
Pkt *accept_pkt_open(const tal_t *ctx, Pkt *accept_pkt_open(const tal_t *ctx,
const struct peer *peer, struct peer *peer,
const Pkt *pkt, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_anchor(const tal_t *ctx, Pkt *accept_pkt_anchor(const tal_t *ctx,
const struct peer *peer, struct peer *peer,
const Pkt *pkt, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_open_commit_sig(const tal_t *ctx, Pkt *accept_pkt_open_commit_sig(const tal_t *ctx,
const struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_htlc_update(const tal_t *ctx, Pkt *accept_pkt_htlc_update(const tal_t *ctx,
struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt,
Pkt **decline, Pkt **decline);
struct state_effect **effect);
Pkt *accept_pkt_htlc_routefail(const tal_t *ctx, Pkt *accept_pkt_htlc_routefail(const tal_t *ctx,
struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_htlc_timedout(const tal_t *ctx, Pkt *accept_pkt_htlc_timedout(const tal_t *ctx,
struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_htlc_fulfill(const tal_t *ctx, Pkt *accept_pkt_htlc_fulfill(const tal_t *ctx,
struct peer *peer, const Pkt *pkt); struct peer *peer, const Pkt *pkt);
@ -163,22 +155,16 @@ Pkt *accept_pkt_update_signature(const tal_t *ctx,
struct peer *peer, struct peer *peer,
const Pkt *pkt); const Pkt *pkt);
Pkt *accept_pkt_close(const tal_t *ctx, Pkt *accept_pkt_close(const tal_t *ctx, struct peer *peer, const Pkt *pkt);
const struct peer *peer, const Pkt *pkt,
struct state_effect **effect);
Pkt *accept_pkt_close_complete(const tal_t *ctx, Pkt *accept_pkt_close_complete(const tal_t *ctx,
const struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_simultaneous_close(const tal_t *ctx, Pkt *accept_pkt_simultaneous_close(const tal_t *ctx,
const struct peer *peer, struct peer *peer,
const Pkt *pkt, const Pkt *pkt);
struct state_effect **effect);
Pkt *accept_pkt_close_ack(const tal_t *ctx, Pkt *accept_pkt_close_ack(const tal_t *ctx, struct peer *peer, const Pkt *pkt);
const struct peer *peer, const Pkt *pkt,
struct state_effect **effect);
/** /**
* committed_to_htlcs: do we have any locked-in HTLCs? * committed_to_htlcs: do we have any locked-in HTLCs?

42
test/test_state_coverage.c

@ -678,17 +678,15 @@ Pkt *pkt_err_unexpected(const tal_t *ctx, const Pkt *pkt)
} }
Pkt *accept_pkt_open(const tal_t *ctx, Pkt *accept_pkt_open(const tal_t *ctx,
const struct peer *peer, struct peer *peer,
const Pkt *pkt, struct state_effect **effect) const Pkt *pkt)
{ {
if (fail(peer, FAIL_ACCEPT_OPEN)) if (fail(peer, FAIL_ACCEPT_OPEN))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
return NULL; return NULL;
} }
Pkt *accept_pkt_anchor(const tal_t *ctx, Pkt *accept_pkt_anchor(const tal_t *ctx, struct peer *peer, const Pkt *pkt)
const struct peer *peer,
const Pkt *pkt, struct state_effect **effect)
{ {
if (fail(peer, FAIL_ACCEPT_ANCHOR)) if (fail(peer, FAIL_ACCEPT_ANCHOR))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -696,8 +694,8 @@ Pkt *accept_pkt_anchor(const tal_t *ctx,
} }
Pkt *accept_pkt_open_commit_sig(const tal_t *ctx, Pkt *accept_pkt_open_commit_sig(const tal_t *ctx,
const struct peer *peer, struct peer *peer,
const Pkt *pkt, struct state_effect **effect) const Pkt *pkt)
{ {
if (fail(peer, FAIL_ACCEPT_OPEN_COMMIT_SIG)) if (fail(peer, FAIL_ACCEPT_OPEN_COMMIT_SIG))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -706,8 +704,7 @@ Pkt *accept_pkt_open_commit_sig(const tal_t *ctx,
Pkt *accept_pkt_htlc_update(const tal_t *ctx, Pkt *accept_pkt_htlc_update(const tal_t *ctx,
struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt,
Pkt **decline, Pkt **decline)
struct state_effect **effect)
{ {
if (fail(peer, FAIL_ACCEPT_HTLC_UPDATE)) if (fail(peer, FAIL_ACCEPT_HTLC_UPDATE))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -724,8 +721,7 @@ Pkt *accept_pkt_htlc_update(const tal_t *ctx,
} }
Pkt *accept_pkt_htlc_routefail(const tal_t *ctx, Pkt *accept_pkt_htlc_routefail(const tal_t *ctx,
struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt)
struct state_effect **effect)
{ {
unsigned int id = htlc_id_from_pkt(pkt); unsigned int id = htlc_id_from_pkt(pkt);
const struct htlc *h = find_htlc(peer, id); const struct htlc *h = find_htlc(peer, id);
@ -742,8 +738,7 @@ Pkt *accept_pkt_htlc_routefail(const tal_t *ctx,
} }
Pkt *accept_pkt_htlc_timedout(const tal_t *ctx, Pkt *accept_pkt_htlc_timedout(const tal_t *ctx,
struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt)
struct state_effect **effect)
{ {
unsigned int id = htlc_id_from_pkt(pkt); unsigned int id = htlc_id_from_pkt(pkt);
const struct htlc *h = find_htlc(peer, id); const struct htlc *h = find_htlc(peer, id);
@ -818,9 +813,7 @@ Pkt *accept_pkt_update_signature(const tal_t *ctx,
return NULL; return NULL;
} }
Pkt *accept_pkt_close(const tal_t *ctx, Pkt *accept_pkt_close(const tal_t *ctx, struct peer *peer, const Pkt *pkt)
const struct peer *peer, const Pkt *pkt,
struct state_effect **effect)
{ {
if (fail(peer, FAIL_ACCEPT_CLOSE)) if (fail(peer, FAIL_ACCEPT_CLOSE))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -828,8 +821,7 @@ Pkt *accept_pkt_close(const tal_t *ctx,
} }
Pkt *accept_pkt_close_complete(const tal_t *ctx, Pkt *accept_pkt_close_complete(const tal_t *ctx,
const struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt)
struct state_effect **effect)
{ {
if (fail(peer, FAIL_ACCEPT_CLOSE_COMPLETE)) if (fail(peer, FAIL_ACCEPT_CLOSE_COMPLETE))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -837,9 +829,8 @@ Pkt *accept_pkt_close_complete(const tal_t *ctx,
} }
Pkt *accept_pkt_simultaneous_close(const tal_t *ctx, Pkt *accept_pkt_simultaneous_close(const tal_t *ctx,
const struct peer *peer, struct peer *peer,
const Pkt *pkt, const Pkt *pkt)
struct state_effect **effect)
{ {
if (fail(peer, FAIL_ACCEPT_SIMULTANEOUS_CLOSE)) if (fail(peer, FAIL_ACCEPT_SIMULTANEOUS_CLOSE))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -847,8 +838,7 @@ Pkt *accept_pkt_simultaneous_close(const tal_t *ctx,
} }
Pkt *accept_pkt_close_ack(const tal_t *ctx, Pkt *accept_pkt_close_ack(const tal_t *ctx,
const struct peer *peer, const Pkt *pkt, struct peer *peer, const Pkt *pkt)
struct state_effect **effect)
{ {
if (fail(peer, FAIL_ACCEPT_CLOSE_ACK)) if (fail(peer, FAIL_ACCEPT_CLOSE_ACK))
return pkt_err(ctx, "Error inject"); return pkt_err(ctx, "Error inject");
@ -1780,7 +1770,6 @@ static void try_input(const struct peer *peer,
{ {
struct peer copy, other; struct peer copy, other;
struct trail t; struct trail t;
struct state_effect *effect;
const char *problem; const char *problem;
Pkt *output; Pkt *output;
struct bitcoin_tx *broadcast; struct bitcoin_tx *broadcast;
@ -1795,7 +1784,7 @@ static void try_input(const struct peer *peer,
copy.trail = &t; copy.trail = &t;
eliminate_input(&hist->inputs_per_state[copy.state], i); eliminate_input(&hist->inputs_per_state[copy.state], i);
cstatus = state(ctx, &copy, i, idata, &output, &broadcast, &effect); cstatus = state(ctx, &copy, i, idata, &output, &broadcast);
normalpath &= normal_path(i, peer->state, copy.state); normalpath &= normal_path(i, peer->state, copy.state);
errorpath |= error_path(i, peer->state, copy.state); errorpath |= error_path(i, peer->state, copy.state);
@ -2208,13 +2197,12 @@ static enum state_input **map_inputs(void)
/* This adds to mapping_inputs every input_is() call */ /* This adds to mapping_inputs every input_is() call */
if (!state_is_error(i)) { if (!state_is_error(i)) {
struct peer dummy; struct peer dummy;
struct state_effect *effect;
struct bitcoin_tx *dummy_tx; struct bitcoin_tx *dummy_tx;
Pkt *dummy_pkt; Pkt *dummy_pkt;
memset(&dummy, 0, sizeof(dummy)); memset(&dummy, 0, sizeof(dummy));
dummy.state = i; dummy.state = i;
state(ctx, &dummy, INPUT_NONE, NULL, &dummy_pkt, state(ctx, &dummy, INPUT_NONE, NULL, &dummy_pkt,
&dummy_tx, &effect); &dummy_tx);
} }
inps[i] = mapping_inputs; inps[i] = mapping_inputs;
} }

Loading…
Cancel
Save