Page MenuHomeFreeBSD

D30497.id.diff
No OneTemporary

D30497.id.diff

Index: sys/netinet/tcp_input.c
===================================================================
--- sys/netinet/tcp_input.c
+++ sys/netinet/tcp_input.c
@@ -3191,7 +3191,12 @@
* when trimming from the head.
*/
tcp_seq temp = save_start;
- if (tlen) {
+ if (tlen || (th->th_seq != tp->rcv_nxt)) {
+ /*
+ * We add the th_seq != rcv_nxt to
+ * catch the case of a stand alone out
+ * of order FIN.
+ */
thflags = tcp_reass(tp, th, &temp, &tlen, m);
tp->t_flags |= TF_ACKNOW;
}
Index: sys/netinet/tcp_stacks/bbr.c
===================================================================
--- sys/netinet/tcp_stacks/bbr.c
+++ sys/netinet/tcp_stacks/bbr.c
@@ -8320,7 +8320,12 @@
* trimming from the head.
*/
tcp_seq temp = save_start;
- if (tlen) {
+ if (tlen || (th->th_seq != tp->rcv_nxt)) {
+ /*
+ * We add the th_seq != rcv_nxt to
+ * catch the case of a stand alone out
+ * of order FIN.
+ */
thflags = tcp_reass(tp, th, &temp, &tlen, m);
tp->t_flags |= TF_ACKNOW;
}
Index: sys/netinet/tcp_stacks/rack.c
===================================================================
--- sys/netinet/tcp_stacks/rack.c
+++ sys/netinet/tcp_stacks/rack.c
@@ -10235,7 +10235,12 @@
* trimming from the head.
*/
tcp_seq temp = save_start;
- if (tlen) {
+ if (tlen || (th->th_seq != tp->rcv_nxt)) {
+ /*
+ * We add the th_seq != rcv_nxt to
+ * catch the case of a stand alone out
+ * of order FIN.
+ */
thflags = tcp_reass(tp, th, &temp, &tlen, m);
tp->t_flags |= TF_ACKNOW;
}

File Metadata

Mime Type
text/plain
Expires
Mon, Jul 6, 9:40 AM (13 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34749665
Default Alt Text
D30497.id.diff (1 KB)

Event Timeline