Mercurial > hg > truffle
comparison src/os/solaris/vm/attachListener_solaris.cpp @ 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 | f95d63e2154a |
children | b9a9ed0f8eeb |
comparison
equal
deleted
inserted
replaced
6016:3c91f2c9fd21 | 6024:973046802b6f |
---|---|
334 } | 334 } |
335 | 335 |
336 // Return 0 (success) + file descriptor, or non-0 (error) | 336 // Return 0 (success) + file descriptor, or non-0 (error) |
337 if (res == 0) { | 337 if (res == 0) { |
338 door_desc_t desc; | 338 door_desc_t desc; |
339 desc.d_attributes = DOOR_DESCRIPTOR; | 339 // DOOR_RELEASE flag makes sure fd is closed after passing it to |
340 // the client. See door_return(3DOOR) man page. | |
341 desc.d_attributes = DOOR_DESCRIPTOR | DOOR_RELEASE; | |
340 desc.d_data.d_desc.d_descriptor = return_fd; | 342 desc.d_data.d_desc.d_descriptor = return_fd; |
341 door_return((char*)&res, sizeof(res), &desc, 1); | 343 door_return((char*)&res, sizeof(res), &desc, 1); |
342 } else { | 344 } else { |
343 door_return((char*)&res, sizeof(res), NULL, 0); | 345 door_return((char*)&res, sizeof(res), NULL, 0); |
344 } | 346 } |