privops: use SOCK_SEQPACKET sockets when supported
SOCK_SEQPACKET is preferred over SOCK_DGRAM for communication with the helper as the process will get an error when the other end of the socket is closed. It's not supported on all platforms. If SOCK_SEQPACKET is defined, try creating the pair of sockets with this type first and if that fails, fall back to SOCK_DGRAM.
This commit is contained in:
parent
4e32de09a2
commit
aa4bf41400
1 changed files with 5 additions and 1 deletions
|
@ -450,7 +450,11 @@ PRV_Initialise(void)
|
||||||
if (have_helper())
|
if (have_helper())
|
||||||
LOG_FATAL(LOGF_PrivOps, "Helper already running");
|
LOG_FATAL(LOGF_PrivOps, "Helper already running");
|
||||||
|
|
||||||
if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sock_pair))
|
if (
|
||||||
|
#ifdef SOCK_SEQPACKET
|
||||||
|
socketpair(AF_UNIX, SOCK_SEQPACKET, 0, sock_pair) &&
|
||||||
|
#endif
|
||||||
|
socketpair(AF_UNIX, SOCK_DGRAM, 0, sock_pair))
|
||||||
LOG_FATAL(LOGF_PrivOps, "socketpair() failed : %s", strerror(errno));
|
LOG_FATAL(LOGF_PrivOps, "socketpair() failed : %s", strerror(errno));
|
||||||
|
|
||||||
UTI_FdSetCloexec(sock_pair[0]);
|
UTI_FdSetCloexec(sock_pair[0]);
|
||||||
|
|
Loading…
Reference in a new issue