mirror of
https://github.com/freebsd/freebsd-src
synced 2024-11-05 18:22:52 +00:00
Be more conservative when T/TCP extensions are disabled. In particular,
do not send data and/or FIN on SYN segments in this case.
This commit is contained in:
parent
e4ff5c2aef
commit
81165e4880
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=13475
1 changed files with 14 additions and 1 deletions
|
@ -31,7 +31,7 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* @(#)tcp_output.c 8.4 (Berkeley) 5/24/95
|
* @(#)tcp_output.c 8.4 (Berkeley) 5/24/95
|
||||||
* $Id: tcp_output.c,v 1.16 1995/11/03 22:08:08 olah Exp $
|
* $Id: tcp_output.c,v 1.17 1995/12/05 17:46:35 wollman Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
@ -167,6 +167,19 @@ tcp_output(tp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Be careful not to send data and/or FIN on SYN segments
|
||||||
|
* in cases when no CC option will be sent.
|
||||||
|
* This measure is needed to prevent interoperability problems
|
||||||
|
* with not fully conformant TCP implementations.
|
||||||
|
*/
|
||||||
|
if ((flags & TH_SYN) &&
|
||||||
|
((tp->t_flags & TF_NOOPT) || !(tp->t_flags & TF_REQ_CC) ||
|
||||||
|
((flags & TH_ACK) && !(tp->t_flags & TF_RCVD_CC)))) {
|
||||||
|
len = 0;
|
||||||
|
flags &= ~TH_FIN;
|
||||||
|
}
|
||||||
|
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
/*
|
/*
|
||||||
* If FIN has been sent but not acked,
|
* If FIN has been sent but not acked,
|
||||||
|
|
Loading…
Reference in a new issue