Print this page
1775 1631's fix missed the case of data on the handshake's ACK

@@ -3747,10 +3747,17 @@
                                 ASSERT(TCP_IS_DETACHED(tcp));
                                 (void) tcp_close_detached(tcp);
                                 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.
                          */
                         DTRACE_TCP5(accept__established, mlbk_t *, NULL,
                             ip_xmit_attr_t *, connp->conn_ixa, void_ip_t *,