Page MenuHomeFreeBSD

D46428.diff
No OneTemporary

D46428.diff

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
@@ -527,10 +527,16 @@
}
NET_EPOCH_ENTER(et);
- syncache_respond(sc, NULL, TH_SYN|TH_ACK);
+ if (syncache_respond(sc, NULL, TH_SYN|TH_ACK) == 0) {
+ syncache_timeout(sc, sch, 0);
+ TCPSTAT_INC(tcps_sndacks);
+ TCPSTAT_INC(tcps_sndtotal);
+ TCPSTAT_INC(tcps_sc_retransmitted);
+ } else {
+ syncache_drop(sc, sch);
+ TCPSTAT_INC(tcps_sc_dropped);
+ }
NET_EPOCH_EXIT(et);
- TCPSTAT_INC(tcps_sc_retransmitted);
- syncache_timeout(sc, sch, 0);
}
if (!TAILQ_EMPTY(&(sch)->sch_bucket))
callout_reset(&(sch)->sch_timer, (sch)->sch_nextc - tick,
@@ -688,7 +694,13 @@
"sending challenge ACK\n",
s, __func__,
th->th_seq, sc->sc_irs + 1, sc->sc_wnd);
- syncache_respond(sc, m, TH_ACK);
+ if (syncache_respond(sc, m, TH_ACK) == 0) {
+ TCPSTAT_INC(tcps_sndacks);
+ TCPSTAT_INC(tcps_sndtotal);
+ } else {
+ syncache_drop(sc, sch);
+ TCPSTAT_INC(tcps_sc_dropped);
+ }
}
} else {
if ((s = tcp_log_addrs(inc, th, NULL, NULL)))
@@ -1549,6 +1561,9 @@
syncache_timeout(sc, sch, 1);
TCPSTAT_INC(tcps_sndacks);
TCPSTAT_INC(tcps_sndtotal);
+ } else {
+ syncache_drop(sc, sch);
+ TCPSTAT_INC(tcps_sc_dropped);
}
SCH_UNLOCK(sch);
goto donenoprobe;

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 23, 10:07 PM (20 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16065746
Default Alt Text
D46428.diff (1 KB)

Event Timeline