diff --git a/channeld/full_channel.c b/channeld/full_channel.c index c269b34ec..ccc32f745 100644 --- a/channeld/full_channel.c +++ b/channeld/full_channel.c @@ -496,6 +496,18 @@ static enum channel_add_err add_htlc(struct channel *channel, htlc->amount = amount; htlc->state = state; + htlc->rhash = *payment_hash; + if (blinding) + htlc->blinding = tal_dup(htlc, struct pubkey, blinding); + else { + /* Can be taken, even if NULL. */ + taken(blinding); + htlc->blinding = NULL; + } + htlc->failed = NULL; + htlc->r = NULL; + htlc->routing = tal_dup_arr(htlc, u8, routing, TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE), 0); + /* FIXME: Change expiry to simple u32 */ /* BOLT #2: @@ -510,15 +522,6 @@ static enum channel_add_err add_htlc(struct channel *channel, return CHANNEL_ERR_INVALID_EXPIRY; } - htlc->rhash = *payment_hash; - if (blinding) - htlc->blinding = tal_dup(htlc, struct pubkey, blinding); - else - htlc->blinding = NULL; - htlc->failed = NULL; - htlc->r = NULL; - htlc->routing = tal_dup_arr(htlc, u8, routing, TOTAL_PACKET_SIZE(ROUTING_INFO_SIZE), 0); - old = htlc_get(channel->htlcs, htlc->id, htlc_owner(htlc)); if (old) { if (old->state != htlc->state