Use FD_CLOEXEC on ListenSockets
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 24 Aug 2023 14:03:05 +0000 (17:03 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 24 Aug 2023 14:03:05 +0000 (17:03 +0300)
commitb0bea38705b2d14e57d353a701ecfdb8a04983b1
treeb3f07ebd1df1c51f27b86444d4c0f45bc5c1ec5a
parentd71e6055e45318b5cff2094025d641b954517fa9
Use FD_CLOEXEC on ListenSockets

It's good hygiene if e.g. an extension launches a subprogram when
being loaded. We went through some effort to close them in the child
process in EXEC_BACKEND mode, but it's better to not hand them down to
the child process in the first place. We still need to close them
after fork when !EXEC_BACKEND, but it's a little simpler.

In the passing, LOG a message if closing the client connection or
listen socket fails. Shouldn't happen, but if it does, would be nice
to know.

Reviewed-by: Tristan Partin, Andres Freund, Thomas Munro
Discussion: https://www.postgresql.org/message-id/7a59b073-5b5b-151e-7ed3-8b01ff7ce9ef@iki.fi
src/backend/libpq/pqcomm.c
src/backend/postmaster/postmaster.c