summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>1994-08-26 22:27:16 +0000
committerwollman <wollman@FreeBSD.org>1994-08-26 22:27:16 +0000
commit9489a8e21b05852697c1ba0cb2f1eb5b712ab5d6 (patch)
tree3ae2edc49c3ba83ddc4ee96ff81515b95dbf5876
parentbc652e20929b5cc726e4d55dc13f033e39c46287 (diff)
downloadFreeBSD-src-9489a8e21b05852697c1ba0cb2f1eb5b712ab5d6.zip
FreeBSD-src-9489a8e21b05852697c1ba0cb2f1eb5b712ab5d6.tar.gz
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).
-rw-r--r--sys/netinet/tcp_fsm.h3
-rw-r--r--sys/netinet/tcp_input.c4
-rw-r--r--sys/netinet/tcp_reass.c4
3 files changed, 6 insertions, 5 deletions
diff --git a/sys/netinet/tcp_fsm.h b/sys/netinet/tcp_fsm.h
index 45c7993..cbd07c5 100644
--- a/sys/netinet/tcp_fsm.h
+++ b/sys/netinet/tcp_fsm.h
@@ -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
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 674b7d9..68fc751 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -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 @@ present:
* 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)
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index 674b7d9..68fc751 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -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 @@ present:
* 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)
OpenPOWER on IntegriCloud