diff options
author | antirez <antirez@gmail.com> | 2014-12-11 15:19:23 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2014-12-11 15:19:23 +0100 |
commit | f24a0bc1c5ba15518cff8d058af7b8e49f02468f (patch) | |
tree | 0df5707809e98d672a79b62541bd815dfc208d8c /src | |
parent | ff01ce55d8c71335eb5a69f71d2712013d8480ed (diff) | |
download | redis-f24a0bc1c5ba15518cff8d058af7b8e49f02468f.tar.gz |
In redisIsSupervised() use MSG_NOSIGNAL only for Linux.
Diffstat (limited to 'src')
-rw-r--r-- | src/config.h | 5 | ||||
-rw-r--r-- | src/redis.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/config.h b/src/config.h index 1f2919ed2..2b5004baa 100644 --- a/src/config.h +++ b/src/config.h @@ -61,6 +61,11 @@ #define HAVE_BACKTRACE 1 #endif +/* MSG_NOSIGNAL. */ +#ifdef __linux__ +#define HAVE_MSG_NOSIGNAL 1 +#endif + /* Test for polling API */ #ifdef __linux__ #define HAVE_EPOLL 1 diff --git a/src/redis.c b/src/redis.c index 45140139c..030cfbb48 100644 --- a/src/redis.c +++ b/src/redis.c @@ -3586,6 +3586,7 @@ int redisIsSupervised(void) { struct sockaddr_un su; struct iovec iov; struct msghdr hdr; + int sendto_flags = 0; if (upstart_job == NULL && notify_socket == NULL) return 0; @@ -3631,8 +3632,11 @@ int redisIsSupervised(void) { hdr.msg_iovlen = 1; unsetenv("NOTIFY_SOCKET"); - if (sendmsg(fd, &hdr, MSG_NOSIGNAL) < 0) { - redisLog(REDIS_WARNING, "cannot send notification to systemd"); +#ifdef HAVE_MSG_NOSIGNAL + sendto_flags |= MSG_NOSIGNAL; +#endif + if (sendmsg(fd, &hdr, sendto_flags) < 0) { + redisLog(REDIS_WARNING, "Cannot send notification to systemd"); close(fd); return 0; } |