From: Miroslav Lichvar Date: Tue, 8 Dec 2015 09:20:20 +0000 (+0100) Subject: privops: use SOCK_SEQPACKET sockets when supported X-Git-Tag: 2.3-pre1~72 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa4bf4140023dc009753a7b1ea41e85dbb18dd16;p=thirdparty%2Fchrony.git 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. --- diff --git a/privops.c b/privops.c index d53583c8..82b56602 100644 --- a/privops.c +++ b/privops.c @@ -450,7 +450,11 @@ PRV_Initialise(void) if (have_helper()) 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)); UTI_FdSetCloexec(sock_pair[0]);