[Lldb-commits] [PATCH] Apply SOCK_CLOEXEC flag to socket API functions in order to avoid handle leakage to a forked child process.

Oleksiy Vyalov ovyalov at google.com
Mon Nov 10 20:03:26 PST 2014


>>! In D6204#10, @zturner wrote:
> Can I also request that the variable *not* be called close_on_exec?.  It is
> possible to implement an equivalent on Windows, but calling it close on
> exec will be confusing to people on Windows.  Can we come up with a more
> generic name?  On Windows this would be called "inherit handles", which to
> me sounds like a better name than close on exec, but I may be biased.  Is
> "inherit handles" confusing to people on non-Windows?
> 
> In other words, I'm proposing
> 
> virtual lldb::ConnectionStatus ConnectionFileDescriptor::Connect(const char
> *s, Error *error_ptr, bool close_on_exec = true);
> 
> would become
> 
> virtual lldb::ConnectionStatus ConnectionFileDescriptor::Connect(const char
> *s, Error *error_ptr, bool inherit_handles = false);

It sounds good to me to call this variable inherit_handles in order to make it more platform-independent.
As I can see ConnectionFileDescriptor::Connect is overrides pure method from Connection::Connect (const char *url, Error *error_ptr)  and I'm a bit reluctant to make such variable visible for Communication layer  - so, I'm thinking about extending  ConnectionFileDescriptor constructor in a way like this:

ConnectionFileDescriptor(int fd, bool owns_fd, bool inherit_handles = false);

In this case methods within ConnectionFileDescriptor::Connect (SocketListen, NamedSocketAccept, NamedSocketAccept, ConnectTCP, ConnectUDP) may use member field m_inherit_handles instead of taking additional argument.

http://reviews.llvm.org/D6204






More information about the lldb-commits mailing list