changeset 13521:901a793ed0dd

1775 1631's fix missed the case of data on the handshake's ACK Reviewed by: Michael Speer <michael.speer@pluribusnetworks.com> Reviewed by: Garrett D'Amore <Garrett.DAmore@nexenta.com> Reviewed by: Gordon Ross <gwr@nexenta.com> Approved by: Gordon Ross <gwr@nexenta.com>
author Dan McDonald <danmcd@nexenta.com>
date Mon, 14 Nov 2011 19:23:57 -0500
parents fd89fd56f8d7
children 03c15f1e19ad
files usr/src/uts/common/inet/tcp/tcp_input.c
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/inet/tcp/tcp_input.c	Sun May 15 22:37:34 2011 +0100
+++ b/usr/src/uts/common/inet/tcp/tcp_input.c	Mon Nov 14 19:23:57 2011 -0500
@@ -3749,6 +3749,13 @@
 				return;
 			}
 			/*
+			 * tcp_newconn_notify() changes conn_upcalls and
+			 * connp->conn_upper_handle.  Fix things now, in case
+			 * there's data attached to this ack.
+			 */
+			if (connp->conn_upcalls != NULL)
+				sockupcalls = connp->conn_upcalls;
+			/*
 			 * For passive open, trace receipt of final ACK as
 			 * tcp:::accept-established.
 			 */