From e963327cda6619810ccc5cb4710ec269a4e0b60a Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Tue, 12 Sep 2023 14:58:06 +0900 Subject: [PATCH] Set close on exec for client socket To close the client socket fd, this patch sets O_CLOEXEC flag using fcntl(). Change-Id: I90f60c23ffc8aa0e62c93e26b4494493fb08eedb Signed-off-by: Hwankyu Jhun --- src/client-socket-internal.cc | 7 +++++++ src/client-socket-internal.hh | 1 + src/server-socket-internal.cc | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/client-socket-internal.cc b/src/client-socket-internal.cc index 295d172..8ba4ffb 100644 --- a/src/client-socket-internal.cc +++ b/src/client-socket-internal.cc @@ -41,6 +41,7 @@ ClientSocket::ClientSocket() { } ClientSocket::ClientSocket(int fd) : fd_(fd) { + SetCloseOnExec(); } ClientSocket::~ClientSocket() { @@ -48,6 +49,12 @@ ClientSocket::~ClientSocket() { Close(); } +void ClientSocket::SetCloseOnExec() { + int flags = fcntl(fd_, F_GETFL, 0); + fcntl(fd_, F_SETFL, flags | O_CLOEXEC); + _I("Close on exec. fd(%d)", fd_); +} + void ClientSocket::Close() { if (fd_ > -1) { close(fd_); diff --git a/src/client-socket-internal.hh b/src/client-socket-internal.hh index 9b02047..d033b2e 100644 --- a/src/client-socket-internal.hh +++ b/src/client-socket-internal.hh @@ -37,6 +37,7 @@ class ClientSocket { int GetFd() const; int RemoveFd(); void SetNonblock(); + void SetCloseOnExec(); private: int fd_; diff --git a/src/server-socket-internal.cc b/src/server-socket-internal.cc index 46baa25..a5b1640 100644 --- a/src/server-socket-internal.cc +++ b/src/server-socket-internal.cc @@ -72,7 +72,7 @@ int ServerSocket::Listen(int backlog) { void ServerSocket::SetCloseOnExec() { int flags = fcntl(fd_, F_GETFL, 0); fcntl(fd_, F_SETFL, flags | O_CLOEXEC); - _I("Close on exec"); + _I("Close on exec. fd(%d)", fd_); } // LCOV_EXCL_STOP -- 2.7.4