summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibCore/Stream.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/Userland/Libraries/LibCore/Stream.cpp b/Userland/Libraries/LibCore/Stream.cpp
index 76643d9c9e..e8f26757b2 100644
--- a/Userland/Libraries/LibCore/Stream.cpp
+++ b/Userland/Libraries/LibCore/Stream.cpp
@@ -241,7 +241,14 @@ ErrorOr<int> Socket::create_fd(SocketDomain domain, SocketType type)
VERIFY_NOT_REACHED();
}
- return System::socket(socket_domain, socket_type, 0);
+ // Let's have a safe default of CLOEXEC. :^)
+#ifdef SOCK_CLOEXEC
+ return System::socket(socket_domain, socket_type | SOCK_CLOEXEC, 0);
+#else
+ auto fd = TRY(System::socket(socket_domain, socket_type, 0));
+ TRY(System::fcntl(fd, F_SETFD, FD_CLOEXEC));
+ return fd;
+#endif
}
ErrorOr<IPv4Address> Socket::resolve_host(String const& host, SocketType type)