Skip to content

Commit

Permalink
openingd/openingd.c: Fix a mild deviation from BOLT#2.
Browse files Browse the repository at this point in the history
Fixes: #3815

Changelog-Fixed: Fixed a deviation from BOLT#2: if both nodes advertised `option_upfront_shutdown_script` feature: MUST include ... a zero-length `shutdown_scriptpubkey`.
  • Loading branch information
ZmnSCPxj committed Jul 6, 2020
1 parent fc2561f commit a6374ad
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions openingd/openingd.c
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,28 @@ struct state {
struct feature_set *our_features;
};

static u8 *dev_upfront_shutdown_script(const tal_t *ctx)
static u8 *no_upfront_shutdown_script(const tal_t *ctx, struct state *state)
{
#if DEVELOPER
/* This is a hack, for feature testing */
const char *e = getenv("DEV_OPENINGD_UPFRONT_SHUTDOWN_SCRIPT");
if (e)
return tal_hexdata(ctx, e, strlen(e));
#endif

/* BOLT #2:
*
* - if both nodes advertised the `option_upfront_shutdown_script`
* feature:
* - MUST include `upfront_shutdown_script` with either a valid
* `shutdown_scriptpubkey` as required by `shutdown`
* `scriptpubkey`, or a zero-length `shutdown_scriptpubkey`
* (ie. `0x0000`).
*/
if (feature_negotiated(state->our_features, state->their_features,
OPT_UPFRONT_SHUTDOWN_SCRIPT))
return tal_arr(ctx, u8, 0);

return NULL;
}

Expand Down Expand Up @@ -522,17 +536,8 @@ static u8 *funder_channel_start(struct state *state, u8 channel_flags)
if (!setup_channel_funder(state))
return NULL;

/* BOLT #2:
*
* - if both nodes advertised the `option_upfront_shutdown_script`
* feature:
* - MUST include `upfront_shutdown_script` with either a valid
* `shutdown_scriptpubkey` as required by `shutdown`
* `scriptpubkey`, or a zero-length `shutdown_scriptpubkey`
* (ie. `0x0000`).
*/
if (!state->upfront_shutdown_script[LOCAL])
state->upfront_shutdown_script[LOCAL] = dev_upfront_shutdown_script(state);
state->upfront_shutdown_script[LOCAL] = no_upfront_shutdown_script(state, state);

open_tlvs = tlv_open_channel_tlvs_new(tmpctx);
open_tlvs->upfront_shutdown_script
Expand Down Expand Up @@ -1092,7 +1097,7 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg)
}

if (!state->upfront_shutdown_script[LOCAL])
state->upfront_shutdown_script[LOCAL] = dev_upfront_shutdown_script(state);
state->upfront_shutdown_script[LOCAL] = no_upfront_shutdown_script(state, state);

/* OK, we accept! */
accept_tlvs = tlv_accept_channel_tlvs_new(tmpctx);
Expand Down

0 comments on commit a6374ad

Please sign in to comment.