Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F132618904
D25000.id72404.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D25000.id72404.diff
View Options
Index: tcp_input.c
===================================================================
--- tcp_input.c
+++ tcp_input.c
@@ -2989,7 +2989,7 @@
*/
tfo_syn = ((tp->t_state == TCPS_SYN_RECEIVED) &&
IS_FASTOPEN(tp->t_flags));
- if ((tlen || (thflags & TH_FIN) || tfo_syn) &&
+ if ((tlen || (thflags & TH_FIN) || (tfo_syn && tlen > 0)) &&
TCPS_HAVERCVDFIN(tp->t_state) == 0) {
tcp_seq save_start = th->th_seq;
tcp_seq save_rnxt = tp->rcv_nxt;
Index: tcp_stacks/bbr.c
===================================================================
--- tcp_stacks/bbr.c
+++ tcp_stacks/bbr.c
@@ -6028,7 +6028,7 @@
* or FIN if seq_out is adding more on and a FIN is present
* (and we are not resending).
*/
- if (th_flags & TH_SYN)
+ if ((th_flags & TH_SYN) && (tp->iss == seq_out))
len++;
if (th_flags & TH_FIN)
len++;
@@ -8369,7 +8369,7 @@
*/
tfo_syn = ((tp->t_state == TCPS_SYN_RECEIVED) &&
IS_FASTOPEN(tp->t_flags));
- if ((tlen || (thflags & TH_FIN) || tfo_syn) &&
+ if ((tlen || (thflags & TH_FIN) || (tfo_syn && tlen > 0)) &&
TCPS_HAVERCVDFIN(tp->t_state) == 0) {
tcp_seq save_start = th->th_seq;
tcp_seq save_rnxt = tp->rcv_nxt;
Index: tcp_stacks/rack.c
===================================================================
--- tcp_stacks/rack.c
+++ tcp_stacks/rack.c
@@ -6237,7 +6237,7 @@
* or FIN if seq_out is adding more on and a FIN is present
* (and we are not resending).
*/
- if (th_flags & TH_SYN)
+ if ((th_flags & TH_SYN) && (seq_out == tp->iss))
len++;
if (th_flags & TH_FIN)
len++;
@@ -6280,6 +6280,7 @@
rsm->usec_orig_send = us_cts;
if (th_flags & TH_SYN) {
/* The data space is one beyond snd_una */
+ rsm->r_flags |= RACK_HAS_SIN;
rsm->r_start = seq_out + 1;
rsm->r_end = rsm->r_start + (len - 1);
} else {
@@ -8724,7 +8725,7 @@
*/
tfo_syn = ((tp->t_state == TCPS_SYN_RECEIVED) &&
IS_FASTOPEN(tp->t_flags));
- if ((tlen || (thflags & TH_FIN) || tfo_syn) &&
+ if ((tlen || (thflags & TH_FIN) || (tfo_syn && tlen > 0)) &&
TCPS_HAVERCVDFIN(tp->t_state) == 0) {
tcp_seq save_start = th->th_seq;
tcp_seq save_rnxt = tp->rcv_nxt;
@@ -12563,8 +12564,10 @@
len = 0;
}
/* Without fast-open there should never be data sent on a SYN */
- if ((flags & TH_SYN) && (!IS_FASTOPEN(tp->t_flags)))
+ if ((flags & TH_SYN) && (!IS_FASTOPEN(tp->t_flags))) {
+ tp->snd_nxt = tp->iss;
len = 0;
+ }
orig_len = len;
if (len <= 0) {
/*
Index: tcp_stacks/tcp_rack.h
===================================================================
--- tcp_stacks/tcp_rack.h
+++ tcp_stacks/tcp_rack.h
@@ -39,6 +39,7 @@
#define RACK_RWND_COLLAPSED 0x0100/* The peer collapsed the rwnd on the segment */
#define RACK_APP_LIMITED 0x0200/* We went app limited after this send */
#define RACK_WAS_ACKED 0x0400/* a RTO undid the ack, but it already had a rtt calc done */
+#define RACK_HAS_SIN 0x0800/* SIN is on this guy */
#define RACK_NUM_OF_RETRANS 3
#define RACK_INITIAL_RTO 1000 /* 1 second in milli seconds */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 19, 11:55 AM (9 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23924008
Default Alt Text
D25000.id72404.diff (2 KB)
Attached To
Mode
D25000: Skyzaller crash found by Michael Tuexen
Attached
Detach File
Event Timeline
Log In to Comment