summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorakolb <none@none>2007-02-15 11:50:23 -0800
committerakolb <none@none>2007-02-15 11:50:23 -0800
commitb6626b4d40a665ed3ab7e68bd66c1f040d3c31bc (patch)
tree83ea3d92f403b70ba708341c9b55a64b62d22107 /usr/src
parentf7b6b8cf514e35127b23a2915c8853eb8b92a540 (diff)
downloadillumos-joyent-b6626b4d40a665ed3ab7e68bd66c1f040d3c31bc.tar.gz
6460268 Connection is refused on local unix socket when many connect/close request are generated in one time
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/io/tl.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/usr/src/uts/common/io/tl.c b/usr/src/uts/common/io/tl.c
index 3f65e4f733..ad0e49c281 100644
--- a/usr/src/uts/common/io/tl.c
+++ b/usr/src/uts/common/io/tl.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -2971,15 +2971,10 @@ tl_conn_req(queue_t *wq, mblk_t *mp)
(void) (STRLOG(TL_ID, tep->te_minor, 2, SL_TRACE,
"tl_conn_req: qlen overflow connection refused"));
err = ECONNREFUSED;
- } else if (!((peer_tep->te_state == TS_IDLE) ||
- (peer_tep->te_state == TS_WRES_CIND))) {
- (void) (STRLOG(TL_ID, tep->te_minor, 2, SL_TRACE,
- "tl_conn_req:peer in bad state"));
- err = ECONNREFUSED;
}
/*
- * preallocate now for T_DISCON_IND or T_CONN_IND
+ * Send T_DISCON_IND in case of error
*/
if (err != 0) {
if (peer_tep != NULL)
@@ -3078,6 +3073,9 @@ tl_conn_req_ser(mblk_t *mp, tl_endpt_t *tep)
if (peer_tep->te_closing ||
!((peer_tep->te_state == TS_IDLE) ||
(peer_tep->te_state == TS_WRES_CIND))) {
+ (void) (STRLOG(TL_ID, tep->te_minor, 2, SL_TRACE | SL_ERROR,
+ "tl_conn_req:peer in bad state (%d)",
+ peer_tep->te_state));
TL_UNCONNECT(tep->te_oconp);
tl_error_ack(wq, mp, TSYSERR, ECONNREFUSED, T_CONN_REQ);
freemsg(ackmp);