Page MenuHomeFreeBSD

D45075.diff
No OneTemporary

D45075.diff

diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
--- a/sys/netinet/tcp_sack.c
+++ b/sys/netinet/tcp_sack.c
@@ -558,6 +558,7 @@
int i, j, num_sack_blks;
sackstatus_t sack_changed;
int delivered_data, left_edge_delta;
+ int maxseg = tp->t_maxseg - MAX_TCPOPTLEN;
tcp_seq loss_hiack = 0;
int loss_thresh = 0;
@@ -604,7 +605,9 @@
SEQ_GT(sack.start, th_ack) &&
SEQ_LT(sack.start, tp->snd_max) &&
SEQ_GT(sack.end, tp->snd_una) &&
- SEQ_LEQ(sack.end, tp->snd_max)) {
+ SEQ_LEQ(sack.end, tp->snd_max) &&
+ ((sack.end - sack.start) >= maxseg ||
+ SEQ_GEQ(sack.end, tp->snd_max))) {
sack_blocks[num_sack_blks++] = sack;
} else if (SEQ_LEQ(sack.start, th_ack) &&
SEQ_LEQ(sack.end, th_ack)) {

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 11, 9:38 AM (14 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15752556
Default Alt Text
D45075.diff (772 B)

Event Timeline