Fix for a SACK (receiver) bug where incorrect SACK blocks are
reported to the sender - in the case where the sender sends data outside the window (as WinXP does :(). Reported by: Sam Jensen <sam at wand dot net dot nz> Submitted by: Mohan Srinivasan
This commit is contained in:
parent
a4a07104a2
commit
050a349d74
@ -1102,8 +1102,6 @@ after_listen:
|
||||
if (tp->sack_enable) {
|
||||
/* Delete stale (cumulatively acked) SACK holes */
|
||||
tcp_del_sackholes(tp, th);
|
||||
tp->rcv_laststart = th->th_seq; /* last recv'd segment*/
|
||||
tp->rcv_lastend = th->th_seq + tlen;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2297,8 +2295,11 @@ dodata: /* XXX */
|
||||
thflags = tcp_reass(tp, th, &tlen, m);
|
||||
tp->t_flags |= TF_ACKNOW;
|
||||
}
|
||||
if (tp->sack_enable)
|
||||
tcp_update_sack_list(tp);
|
||||
if (tp->sack_enable) {
|
||||
tp->rcv_laststart = th->th_seq; /* last recv'd segment*/
|
||||
tp->rcv_lastend = th->th_seq + tlen;
|
||||
tcp_update_sack_list(tp);
|
||||
}
|
||||
/*
|
||||
* Note the amount of data that peer has sent into
|
||||
* our window, in order to estimate the sender's
|
||||
|
@ -1102,8 +1102,6 @@ after_listen:
|
||||
if (tp->sack_enable) {
|
||||
/* Delete stale (cumulatively acked) SACK holes */
|
||||
tcp_del_sackholes(tp, th);
|
||||
tp->rcv_laststart = th->th_seq; /* last recv'd segment*/
|
||||
tp->rcv_lastend = th->th_seq + tlen;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2297,8 +2295,11 @@ dodata: /* XXX */
|
||||
thflags = tcp_reass(tp, th, &tlen, m);
|
||||
tp->t_flags |= TF_ACKNOW;
|
||||
}
|
||||
if (tp->sack_enable)
|
||||
tcp_update_sack_list(tp);
|
||||
if (tp->sack_enable) {
|
||||
tp->rcv_laststart = th->th_seq; /* last recv'd segment*/
|
||||
tp->rcv_lastend = th->th_seq + tlen;
|
||||
tcp_update_sack_list(tp);
|
||||
}
|
||||
/*
|
||||
* Note the amount of data that peer has sent into
|
||||
* our window, in order to estimate the sender's
|
||||
|
Loading…
x
Reference in New Issue
Block a user