From 6f278a123caa395f0f487a2b04d7992e573a5fc6 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@enterprisedb.com>
Date: Thu, 9 Aug 2018 15:38:17 +0530
Subject: [PATCH 1/4] Use portable close-on-exec syscalls.

---
 src/backend/postmaster/postmaster.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 135aa29bfeb..42134d4ed28 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -6458,7 +6458,7 @@ static void
 InitFsyncFdSocketPair(void)
 {
 	Assert(MyProcPid == PostmasterPid);
-	if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fsync_fds) < 0)
+	if (socketpair(AF_UNIX, SOCK_STREAM, 0, fsync_fds) < 0)
 		ereport(FATAL,
 				(errcode_for_file_access(),
 				 errmsg_internal("could not create fsync sockets: %m")));
@@ -6470,11 +6470,19 @@ InitFsyncFdSocketPair(void)
 		ereport(FATAL,
 				(errcode_for_socket_access(),
 				 errmsg_internal("could not set fsync process socket to nonblocking mode: %m")));
+	if (fcntl(fsync_fds[FSYNC_FD_PROCESS], F_SETFD, FD_CLOEXEC) == -1)
+		ereport(FATAL,
+				(errcode_for_socket_access(),
+				 errmsg_internal("could not set fsync process socket to close-on-exec mode: %m")));
 
 	if (fcntl(fsync_fds[FSYNC_FD_SUBMIT], F_SETFL, O_NONBLOCK) == -1)
 		ereport(FATAL,
 				(errcode_for_socket_access(),
 				 errmsg_internal("could not set fsync submit socket to nonblocking mode: %m")));
+	if (fcntl(fsync_fds[FSYNC_FD_SUBMIT], F_SETFD, FD_CLOEXEC) == -1)
+		ereport(FATAL,
+				(errcode_for_socket_access(),
+				 errmsg_internal("could not set fsync submit socket to close-on-exec mode: %m")));
 
 	/*
 	 * FIXME: do DuplicateHandle dance for windows - can that work
-- 
2.17.0

