diff --git a/openingd/opening.c b/openingd/opening.c index 50321900a..cc506f0ec 100644 --- a/openingd/opening.c +++ b/openingd/opening.c @@ -61,7 +61,7 @@ struct state { struct bitcoin_txid funding_txid; u16 funding_txout; - struct channel_config localconf, *remoteconf; + struct channel_config localconf, remoteconf; /* Limits on what remote config we accept */ u32 max_to_self_delay; @@ -315,8 +315,6 @@ static u8 *funder_channel(struct state *state, channel_flags); sync_crypto_write(&state->cs, PEER_FD, msg); - state->remoteconf = tal(state, struct channel_config); - peer_billboard(false, "Funding channel: offered, now waiting for accept_channel"); msg = opening_read_peer_msg(tmpctx, state); @@ -330,15 +328,15 @@ static u8 *funder_channel(struct state *state, * valid DER-encoded compressed secp256k1 pubkeys. */ if (!fromwire_accept_channel(msg, &id_in, - &state->remoteconf->dust_limit_satoshis, + &state->remoteconf.dust_limit_satoshis, &state->remoteconf - ->max_htlc_value_in_flight_msat, + .max_htlc_value_in_flight_msat, &state->remoteconf - ->channel_reserve_satoshis, - &state->remoteconf->htlc_minimum_msat, + .channel_reserve_satoshis, + &state->remoteconf.htlc_minimum_msat, &minimum_depth, - &state->remoteconf->to_self_delay, - &state->remoteconf->max_accepted_htlcs, + &state->remoteconf.to_self_delay, + &state->remoteconf.max_accepted_htlcs, &their_funding_pubkey, &theirs.revocation, &theirs.payment, @@ -385,22 +383,22 @@ static u8 *funder_channel(struct state *state, * less than `dust_limit_satoshis`: * - MUST reject the channel. */ - if (state->remoteconf->channel_reserve_satoshis + if (state->remoteconf.channel_reserve_satoshis < state->localconf.dust_limit_satoshis) negotiation_failed(state, "channel reserve %"PRIu64 " would be below our dust %"PRIu64, - state->remoteconf->channel_reserve_satoshis, + state->remoteconf.channel_reserve_satoshis, state->localconf.dust_limit_satoshis); if (state->localconf.channel_reserve_satoshis - < state->remoteconf->dust_limit_satoshis) + < state->remoteconf.dust_limit_satoshis) negotiation_failed(state, "dust limit %"PRIu64 " would be above our reserve %"PRIu64, - state->remoteconf->dust_limit_satoshis, + state->remoteconf.dust_limit_satoshis, state->localconf.channel_reserve_satoshis); - check_config_bounds(state, state->remoteconf); + check_config_bounds(state, &state->remoteconf); /* Now, ask create funding transaction to pay those two addresses. */ if (change_satoshis) { @@ -428,7 +426,7 @@ static u8 *funder_channel(struct state *state, - state->push_msat, state->feerate_per_kw, &state->localconf, - state->remoteconf, + &state->remoteconf, &state->our_points, &theirs, &state->our_funding_pubkey, &their_funding_pubkey, @@ -543,7 +541,7 @@ static u8 *funder_channel(struct state *state, * - SHOULD broadcast the funding transaction. */ return towire_opening_funder_reply(state, - state->remoteconf, + &state->remoteconf, tx, &sig, &state->cs, @@ -571,8 +569,6 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg) const u8 *wscript; u8 channel_flags; - state->remoteconf = tal(state, struct channel_config); - /* BOLT #2: * * The receiving node MUST fail the channel if: @@ -584,13 +580,13 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg) if (!fromwire_open_channel(open_channel_msg, &chain_hash, &state->channel_id, &state->funding_satoshis, &state->push_msat, - &state->remoteconf->dust_limit_satoshis, - &state->remoteconf->max_htlc_value_in_flight_msat, - &state->remoteconf->channel_reserve_satoshis, - &state->remoteconf->htlc_minimum_msat, + &state->remoteconf.dust_limit_satoshis, + &state->remoteconf.max_htlc_value_in_flight_msat, + &state->remoteconf.channel_reserve_satoshis, + &state->remoteconf.htlc_minimum_msat, &state->feerate_per_kw, - &state->remoteconf->to_self_delay, - &state->remoteconf->max_accepted_htlcs, + &state->remoteconf.to_self_delay, + &state->remoteconf.max_accepted_htlcs, &their_funding_pubkey, &theirs.revocation, &theirs.payment, @@ -609,7 +605,6 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg) "Already have active channel"); sync_crypto_write(&state->cs, PEER_FD, take(errmsg)); - state->remoteconf = tal_free(state->remoteconf); return NULL; } @@ -679,21 +674,21 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg) * `channel_reserve_satoshis` from the `open_channel` message. */ if (state->localconf.channel_reserve_satoshis - < state->remoteconf->dust_limit_satoshis) + < state->remoteconf.dust_limit_satoshis) negotiation_failed(state, "Our channel reserve %"PRIu64 " would be below their dust %"PRIu64, state->localconf.channel_reserve_satoshis, - state->remoteconf->dust_limit_satoshis); + state->remoteconf.dust_limit_satoshis); if (state->localconf.dust_limit_satoshis - > state->remoteconf->channel_reserve_satoshis) + > state->remoteconf.channel_reserve_satoshis) negotiation_failed(state, "Our dust limit %"PRIu64 " would be above their reserve %"PRIu64, state->localconf.dust_limit_satoshis, - state->remoteconf->channel_reserve_satoshis); + state->remoteconf.channel_reserve_satoshis); - check_config_bounds(state, state->remoteconf); + check_config_bounds(state, &state->remoteconf); msg = towire_accept_channel(state, &state->channel_id, state->localconf.dust_limit_satoshis, @@ -745,7 +740,7 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg) state->push_msat, state->feerate_per_kw, &state->localconf, - state->remoteconf, + &state->remoteconf, &state->our_points, &theirs, &state->our_funding_pubkey, &their_funding_pubkey, @@ -822,7 +817,7 @@ static u8 *fundee_channel(struct state *state, const u8 *open_channel_msg) msg = towire_funding_signed(state, &state->channel_id, &sig); return towire_opening_fundee(state, - state->remoteconf, + &state->remoteconf, local_commit, &theirsig, &state->cs,