Use WSA_FLAG_NO_HANDLE_INHERIT
on Windows for cloexec sockets
#910
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The call to
is equivalent to
the latter offering more (needed) control over the creation of
sockets.
On Windows, in order to mark sockets non-inheritable (close-on-exec),
it is sometimes not sufficient to use
SetHandleInformation
. There'ssome explanation why in 1 and KB2398202.
Introduced in the hotfix KB2398202 and supported on Windows 7 with
SP1, Windows Server 2008 R2 with SP1, and later, the flag
WSA_FLAG_NO_HANDLE_INHERIT
can be used withWSASocket
to create anon-inheritable socket.
We can still call
SetHandleInformation
to clear the inheritable flagon the socket in case the flag isn't supported (running on an early
Windows Vista or 7).
Related OCaml PR:
socket
withWSASocket
and setWSA_FLAG_NO_HANDLE_INHERIT
ocaml/ocaml#10809.