changeset 6024:973046802b6f

7162955: Attach api on Solaris, too many open files Summary: Release server-side socket after client receives it. Reviewed-by: sla, dsamersoff, dcubed, acorn Contributed-by: dean.long@oracle.com
author dlong
date Thu, 26 Apr 2012 16:24:15 -0400
parents 3c91f2c9fd21
children 6f0612ea55ce 8bafad97cd26
files src/os/solaris/vm/attachListener_solaris.cpp
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/os/solaris/vm/attachListener_solaris.cpp	Fri Apr 20 17:13:36 2012 -0700
+++ b/src/os/solaris/vm/attachListener_solaris.cpp	Thu Apr 26 16:24:15 2012 -0400
@@ -336,7 +336,9 @@
     // Return 0 (success) + file descriptor, or non-0 (error)
     if (res == 0) {
       door_desc_t desc;
-      desc.d_attributes = DOOR_DESCRIPTOR;
+      // DOOR_RELEASE flag makes sure fd is closed after passing it to
+      // the client.  See door_return(3DOOR) man page.
+      desc.d_attributes = DOOR_DESCRIPTOR | DOOR_RELEASE;
       desc.d_data.d_desc.d_descriptor = return_fd;
       door_return((char*)&res, sizeof(res), &desc, 1);
     } else {