Author: tuexen Date: Fri Jan 24 22:37:53 2020 New Revision: 357100 URL: https://svnweb.freebsd.org/changeset/base/357100
Log: The server side of TCP fast open relies on the delayed ACK timer to allow including user data in the SYN-ACK. When DSACK support was added in r347382, an immediate ACK was sent even for the received SYN with user data. This patch fixes that and allows again to send user data with the SYN-ACK. Reported by: Jeremy Harris Reviewed by: Richard Scheffenegger, rrs@ MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D23212 Modified: head/sys/netinet/tcp_input.c head/sys/netinet/tcp_stacks/rack_bbr_common.c Modified: head/sys/netinet/tcp_input.c ============================================================================== --- head/sys/netinet/tcp_input.c Fri Jan 24 22:15:36 2020 (r357099) +++ head/sys/netinet/tcp_input.c Fri Jan 24 22:37:53 2020 (r357100) @@ -2226,7 +2226,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, stru /* * DSACK - add SACK block for dropped range */ - if (tp->t_flags & TF_SACK_PERMIT) { + if ((todrop > 0) && (tp->t_flags & TF_SACK_PERMIT)) { tcp_update_sack_list(tp, th->th_seq, th->th_seq + todrop); /* Modified: head/sys/netinet/tcp_stacks/rack_bbr_common.c ============================================================================== --- head/sys/netinet/tcp_stacks/rack_bbr_common.c Fri Jan 24 22:15:36 2020 (r357099) +++ head/sys/netinet/tcp_stacks/rack_bbr_common.c Fri Jan 24 22:37:53 2020 (r357100) @@ -548,7 +548,7 @@ ctf_drop_checks(struct tcpopt *to, struct mbuf *m, str /* * DSACK - add SACK block for dropped range */ - if (tp->t_flags & TF_SACK_PERMIT) { + if ((todrop > 0) && (tp->t_flags & TF_SACK_PERMIT)) { tcp_update_sack_list(tp, th->th_seq, th->th_seq + todrop); /* _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"