Page MenuHomeFreeBSD

D40982.id.diff
No OneTemporary

D40982.id.diff

diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1963,6 +1963,10 @@
* if seg contains an ACK, but not for our SYN/ACK, send a RST.
*/
case TCPS_SYN_RECEIVED:
+ if (thflags & TH_RST) {
+ /* Handle RST segments later. */
+ break;
+ }
if ((thflags & TH_ACK) &&
(SEQ_LEQ(th->th_ack, tp->snd_una) ||
SEQ_GT(th->th_ack, tp->snd_max))) {
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c
--- a/sys/netinet/tcp_syncache.c
+++ b/sys/netinet/tcp_syncache.c
@@ -623,18 +623,6 @@
sc = syncache_lookup(inc, &sch); /* returns locked sch */
SCH_LOCK_ASSERT(sch);
- /*
- * Any RST to our SYN|ACK must not carry ACK, SYN or FIN flags.
- * See RFC 793 page 65, section SEGMENT ARRIVES.
- */
- if (tcp_get_flags(th) & (TH_ACK|TH_SYN|TH_FIN)) {
- if ((s = tcp_log_addrs(inc, th, NULL, NULL)))
- log(LOG_DEBUG, "%s; %s: Spurious RST with ACK, SYN or "
- "FIN flag set, segment ignored\n", s, __func__);
- TCPSTAT_INC(tcps_badrst);
- goto done;
- }
-
/*
* No corresponding connection was found in syncache.
* If syncookies are enabled and possibly exclusively

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 25, 5:22 PM (17 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16095796
Default Alt Text
D40982.id.diff (1 KB)

Event Timeline