summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_syncache.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/tcp_syncache.c')
-rw-r--r--sys/netinet/tcp_syncache.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c
index b95efb6..e2e9254 100644
--- a/sys/netinet/tcp_syncache.c
+++ b/sys/netinet/tcp_syncache.c
@@ -977,14 +977,17 @@ syncache_add(inc, to, th, sop, m)
sc->sc_flags = SCF_NOOPT;
#ifdef TCP_SIGNATURE
/*
- * If listening socket requested TCP digests, and received SYN
- * contains the option, flag this in the syncache so that
- * syncache_respond() will do the right thing with the SYN+ACK.
- * XXX Currently we always record the option by default and will
- * attempt to use it in syncache_respond().
+ * If listening socket requested TCP digests, flag this in the
+ * syncache so that syncache_respond() will do the right thing
+ * with the SYN+ACK.
+ *
+ * RFC 2395, Section 2.0, says
+ * "Unlike other TCP extensions (e.g., the Window Scale option
+ * [RFC1323]), the absence of the option in the SYN,ACK segment must not
+ * cause the sender to disable its sending of signatures".
*/
- if (to->to_flags & TOF_SIGNATURE)
- sc->sc_flags = SCF_SIGNATURE;
+ if (tp->t_flags & TF_SIGNATURE)
+ sc->sc_flags |= SCF_SIGNATURE;
#endif
if (to->to_flags & TOF_SACK)
OpenPOWER on IntegriCloud