Page MenuHomeFreeBSD

D30241.diff
No OneTemporary

D30241.diff

diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c
--- a/sys/netinet/tcp_stacks/rack.c
+++ b/sys/netinet/tcp_stacks/rack.c
@@ -6054,6 +6054,12 @@
for (idx = 0; idx < nrsm->r_rtr_cnt; idx++) {
nrsm->r_tim_lastsent[idx] = rsm->r_tim_lastsent[idx];
}
+ /* Now if we have SYN flag we keep it on the left edge */
+ if (nrsm->r_flags & RACK_HAS_SYN)
+ nrsm->r_flags &= ~RACK_HAS_SYN;
+ /* Now if we have a FIN flag we keep it on the right edge */
+ if (nrsm->r_flags & RACK_HAS_FIN)
+ nrsm->r_flags &= ~RACK_HAS_FIN;
/*
* Now we need to find nrsm's new location in the mbuf chain
* we basically calculate a new offset, which is soff +
@@ -6061,9 +6067,11 @@
* chain to find the righ postion, it may be the same mbuf
* or maybe not.
*/
- KASSERT((rsm->m != NULL),
+ KASSERT(((rsm->m != NULL) ||
+ (rsm->r_flags & (RACK_HAS_SYN|RACK_HAS_FIN))),
("rsm:%p nrsm:%p rack:%p -- rsm->m is NULL?", rsm, nrsm, rack));
- rack_setup_offset_for_rsm(rsm, nrsm);
+ if (rsm->m)
+ rack_setup_offset_for_rsm(rsm, nrsm);
}
static struct rack_sendmap *

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 16, 10:00 AM (20 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15823727
Default Alt Text
D30241.diff (1 KB)

Event Timeline