Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_input.c
Show First 20 Lines • Show All 1,686 Lines • ▼ Show 20 Lines | if (IS_FASTOPEN(tp->t_flags)) { | ||||
} else | } else | ||||
tcp_fastopen_disable_path(tp); | tcp_fastopen_disable_path(tp); | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
* If timestamps were negotiated during SYN/ACK and a | * If timestamps were negotiated during SYN/ACK and a | ||||
* segment without a timestamp is received, silently drop | * segment without a timestamp is received, silently drop | ||||
* the segment, unless it is a RST segment. | * the segment, unless it is a RST segment or missing timestamps are | ||||
* tolerated. | |||||
* See section 3.2 of RFC 7323. | * See section 3.2 of RFC 7323. | ||||
*/ | */ | ||||
if ((tp->t_flags & TF_RCVD_TSTMP) && !(to.to_flags & TOF_TS)) { | if ((tp->t_flags & TF_RCVD_TSTMP) && !(to.to_flags & TOF_TS)) { | ||||
if ((thflags & TH_RST) != 0) { | if (((thflags & TH_RST) != 0) || V_tcp_tolerate_missing_ts) { | ||||
if ((s = tcp_log_addrs(inc, th, NULL, NULL))) { | if ((s = tcp_log_addrs(inc, th, NULL, NULL))) { | ||||
log(LOG_DEBUG, "%s; %s: Timestamp missing, " | log(LOG_DEBUG, "%s; %s: Timestamp missing, " | ||||
"segment processed normally\n", | "segment processed normally\n", | ||||
s, __func__); | s, __func__); | ||||
free(s, M_TCPLOG); | free(s, M_TCPLOG); | ||||
} | } | ||||
} else { | } else { | ||||
if ((s = tcp_log_addrs(inc, th, NULL, NULL))) { | if ((s = tcp_log_addrs(inc, th, NULL, NULL))) { | ||||
▲ Show 20 Lines • Show All 2,336 Lines • Show Last 20 Lines |