Browse Source

included feedback by Rusty to check the max_concurrent_htlc value for both peers of a channel

pull/2938/head
Rene Pickhardt 5 years ago
committed by Rusty Russell
parent
commit
dfac1d15a2
  1. 11
      channeld/full_channel.c

11
channeld/full_channel.c

@ -367,6 +367,7 @@ static enum channel_add_err add_htlc(struct channel *channel,
enum side sender = htlc_state_owner(state), recipient = !sender;
const struct htlc **committed, **adding, **removing;
const struct channel_view *view;
u32 min_concurrent_htlcs;
htlc = tal(tmpctx, struct htlc);
@ -443,8 +444,16 @@ static enum channel_add_err add_htlc(struct channel *channel,
* HTLCs to its local commitment transaction...
* - SHOULD fail the channel.
*/
/* Also we should not add more htlc's than sender or recipient
* configured. This mitigates attacks in which a peer can force the
* funder of the channel to pay unnecessary onchain fees during a fee
* spike with large commitment transactions.
*/
min_concurrent_htlcs = channel->config[recipient].max_accepted_htlcs;
if (min_concurrent_htlcs > channel->config[sender].max_accepted_htlcs)
min_concurrent_htlcs = channel->config[sender].max_accepted_htlcs;
if (tal_count(committed) - tal_count(removing) + tal_count(adding)
> channel->config[recipient].max_accepted_htlcs) {
> min_concurrent_htlcs) {
return CHANNEL_ERR_TOO_MANY_HTLCS;
}

Loading…
Cancel
Save