Page MenuHomeFreeBSD

D61149.1794115916.diff
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

D61149.1794115916.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
@@ -6860,7 +6860,7 @@
rack_setup_offset_for_rsm(struct tcp_rack *rack, struct rack_sendmap *src_rsm, struct rack_sendmap *rsm)
{
struct mbuf *m;
- uint32_t soff;
+ uint32_t soff, start;
if (src_rsm->m &&
((src_rsm->orig_m_len != src_rsm->m->m_len) ||
@@ -6869,7 +6869,10 @@
rack_adjust_orig_mlen(src_rsm);
}
m = src_rsm->m;
- soff = src_rsm->soff + (src_rsm->r_end - src_rsm->r_start);
+ start = src_rsm->r_start;
+ if ((src_rsm->r_flags & RACK_HAS_SYN) != 0)
+ start++;
+ soff = src_rsm->soff + (src_rsm->r_end - start);
while (soff >= m->m_len) {
/* Move out past this mbuf */
soff -= m->m_len;
@@ -6892,6 +6895,14 @@
return;
}
}
+ if ((src_rsm->r_flags & RACK_HAS_SYN) != 0 &&
+ src_rsm->r_end == src_rsm->r_start + 1) {
+ /* src_rsm is a SYN segment without data */
+ src_rsm->m = NULL;
+ src_rsm->soff = 0;
+ src_rsm->orig_m_len = 0;
+ src_rsm->orig_t_space = 0;
+ }
rsm->m = m;
rsm->soff = soff;
rsm->orig_m_len = m->m_len;

File Metadata

Mime Type
text/plain
Expires
Sun, Nov 8, 5:31 AM (2 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41385914
Default Alt Text
D61149.1794115916.diff (1 KB)

Event Timeline