--- a/usr/src/uts/common/inet/tcp/tcp_fusion.c Mon Jun 29 13:59:59 2009 -0700
+++ b/usr/src/uts/common/inet/tcp/tcp_fusion.c Mon Jun 29 13:59:59 2009 -0700
@@ -316,8 +316,6 @@
stropt->so_hiwat = tcp_fuse_set_rcv_hiwat(
peer_tcp, peer_rq->q_hiwat);
- tcp->tcp_refuse = B_FALSE;
- peer_tcp->tcp_refuse = B_FALSE;
/* Send the options up */
putnext(peer_rq, mp);
} else {
@@ -339,6 +337,14 @@
(*peer_connp->conn_upcalls->su_set_proto_props)
(peer_connp->conn_upper_handle, &sopp);
}
+ } else {
+ /*
+ * Endpoints are being re-fused, so options will not
+ * be sent up. In case of STREAMS, free the stroptions
+ * mblk.
+ */
+ if (!IPCL_IS_NONSTR(connp))
+ freemsg(mp);
}
tcp->tcp_refuse = B_FALSE;
peer_tcp->tcp_refuse = B_FALSE;