[DCCP] ACKVEC: fix ackvector length calculation
Fix ackvector length calculation upon receiving an "ack-of-ack". This patch avoids the ackvector from growing too large which causes it to not be inserted into packets. Signed-off-by: Andrea Bittau <a.bittau@cs.ucl.ac.uk> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a1e59abf82
commit
23d06e3b98
1 changed files with 7 additions and 5 deletions
|
@ -353,11 +353,13 @@ static void dccp_ackvec_throw_record(struct dccp_ackvec *av,
|
|||
{
|
||||
struct dccp_ackvec_record *next;
|
||||
|
||||
av->dccpav_buf_tail = avr->dccpavr_ack_ptr - 1;
|
||||
if (av->dccpav_buf_tail == 0)
|
||||
av->dccpav_buf_tail = DCCP_MAX_ACKVEC_LEN - 1;
|
||||
|
||||
av->dccpav_vec_len -= avr->dccpavr_sent_len;
|
||||
/* sort out vector length */
|
||||
if (av->dccpav_buf_head <= avr->dccpavr_ack_ptr)
|
||||
av->dccpav_vec_len = avr->dccpavr_ack_ptr - av->dccpav_buf_head;
|
||||
else
|
||||
av->dccpav_vec_len = DCCP_MAX_ACKVEC_LEN - 1
|
||||
- av->dccpav_buf_head
|
||||
+ avr->dccpavr_ack_ptr;
|
||||
|
||||
/* free records */
|
||||
list_for_each_entry_safe_from(avr, next, &av->dccpav_records,
|
||||
|
|
Loading…
Reference in a new issue