diff options
Diffstat (limited to 'databases/redis72/files/patch-deps-hiredis-net.c')
| -rw-r--r-- | databases/redis72/files/patch-deps-hiredis-net.c | 39 | 
1 files changed, 39 insertions, 0 deletions
| diff --git a/databases/redis72/files/patch-deps-hiredis-net.c b/databases/redis72/files/patch-deps-hiredis-net.c new file mode 100644 index 000000000000..0dfde3135238 --- /dev/null +++ b/databases/redis72/files/patch-deps-hiredis-net.c @@ -0,0 +1,39 @@ +--- deps/hiredis/net.c.orig	2019-11-28 19:32:05 UTC ++++ deps/hiredis/net.c +@@ -178,14 +178,34 @@ +         __redisSetError(c,REDIS_ERR_OTHER,strerror(errno)); +         return REDIS_ERR; +     } +-#else +-#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) ++#elif defined(__GLIBC__) +     if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val)) < 0) { +         __redisSetError(c,REDIS_ERR_OTHER,strerror(errno)); +         return REDIS_ERR; +     } +  +     val = interval/3; ++    if (val == 0) val = 1; ++    if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &val, sizeof(val)) < 0) { ++        __redisSetError(c,REDIS_ERR_OTHER,strerror(errno)); ++        return REDIS_ERR; ++    } ++ ++    val = 3; ++    if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &val, sizeof(val)) < 0) { ++        __redisSetError(c,REDIS_ERR_OTHER,strerror(errno)); ++        return REDIS_ERR; ++    } ++#else ++#if !defined(__sun) && defined(TCP_KEEPIDLE) && defined(TCP_KEEPINTL) && \ ++    defined(TCP_KEEPCNT) ++    val = interval; ++    if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val)) < 0) { ++        __redisSetError(c,REDIS_ERR_OTHER,strerror(errno)); ++        return REDIS_ERR; ++    } ++ ++    val = internal/3; +     if (val == 0) val = 1; +     if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &val, sizeof(val)) < 0) { +         __redisSetError(c,REDIS_ERR_OTHER,strerror(errno)); | 
