aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@FreeBSD.org>2021-02-14 11:10:31 +0000
committerMichael Tuexen <tuexen@FreeBSD.org>2021-02-14 11:16:57 +0000
commited782b9f5a7a05debe944a33b4ac9e5629a95803 (patch)
tree890e2e6e137624142690f31cd195d3908e7b13dd
parent1bd44b11e59f1e9ee7245f8de1f823bc5287b9ef (diff)
downloadsrc-ed782b9f5a7a05debe944a33b4ac9e5629a95803.tar.gz
src-ed782b9f5a7a05debe944a33b4ac9e5629a95803.zip
tcp: improve behaviour when using TCP_NOOPT
Use ISS for SEG.SEQ when sending a SYN-ACK segment in response to an SYN segment received in the SYN-SENT state on a socket having the IPPROTO_TCP level socket option TCP_NOOPT enabled. Reviewed by: rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D28656
-rw-r--r--sys/netinet/tcp_output.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index cacc0c51bd8e..b4c7ab0a1ab7 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -785,6 +785,10 @@ send:
#endif
hdrlen = sizeof (struct tcpiphdr);
+ if (flags & TH_SYN) {
+ tp->snd_nxt = tp->iss;
+ }
+
/*
* Compute options for segment.
* We only have to care about SYN and established connection
@@ -795,7 +799,6 @@ send:
if ((tp->t_flags & TF_NOOPT) == 0) {
/* Maximum segment size. */
if (flags & TH_SYN) {
- tp->snd_nxt = tp->iss;
to.to_mss = tcp_mssopt(&tp->t_inpcb->inp_inc);
to.to_flags |= TOF_MSS;