Obey RFC 793, section 3.4:

Several examples of connection initiation follow.  Although these
  examples do not show connection synchronization using data-carrying
  segments, this is perfectly legitimate, so long as the receiving TCP
  doesn't deliver the data to the user until it is clear the data is
  valid (i.e., the data must be buffered at the receiver until the
  connection reaches the ESTABLISHED state).
This commit is contained in:
Garrett Wollman 1994-08-26 22:27:16 +00:00
parent ce234f1240
commit 6a7be6e8e0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=2304
3 changed files with 6 additions and 5 deletions

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_fsm.h 8.1 (Berkeley) 6/10/93
* $Id: tcp_fsm.h,v 1.2 1994/08/02 07:48:58 davidg Exp $
* $Id: tcp_fsm.h,v 1.3 1994/08/21 05:27:36 paul Exp $
*/
#ifndef _NETINET_TCP_FSM_H_
@ -60,6 +60,7 @@
#define TCPS_TIME_WAIT 10 /* in 2*msl quiet wait after close */
#define TCPS_HAVERCVDSYN(s) ((s) >= TCPS_SYN_RECEIVED)
#define TCPS_HAVEESTABLISHED(s) ((s) >= TCPS_ESTABLISHED)
#define TCPS_HAVERCVDFIN(s) ((s) >= TCPS_TIME_WAIT)
#ifdef TCPOUTFLAGS

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_input.c 8.5 (Berkeley) 4/10/94
* $Id: tcp_input.c,v 1.5 1994/08/02 07:49:01 davidg Exp $
* $Id: tcp_input.c,v 1.6 1994/08/18 22:35:32 wollman Exp $
*/
#ifndef TUBA_INCLUDE
@ -182,7 +182,7 @@ tcp_reass(tp, ti, m)
* Present data to user, advancing rcv_nxt through
* completed sequence space.
*/
if (TCPS_HAVERCVDSYN(tp->t_state) == 0)
if (TCPS_HAVEESTABLISHED(tp->t_state) == 0)
return (0);
ti = tp->seg_next;
if (ti == (struct tcpiphdr *)tp || ti->ti_seq != tp->rcv_nxt)

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tcp_input.c 8.5 (Berkeley) 4/10/94
* $Id: tcp_input.c,v 1.5 1994/08/02 07:49:01 davidg Exp $
* $Id: tcp_input.c,v 1.6 1994/08/18 22:35:32 wollman Exp $
*/
#ifndef TUBA_INCLUDE
@ -182,7 +182,7 @@ tcp_reass(tp, ti, m)
* Present data to user, advancing rcv_nxt through
* completed sequence space.
*/
if (TCPS_HAVERCVDSYN(tp->t_state) == 0)
if (TCPS_HAVEESTABLISHED(tp->t_state) == 0)
return (0);
ti = tp->seg_next;
if (ti == (struct tcpiphdr *)tp || ti->ti_seq != tp->rcv_nxt)