diff options
author | antirez <antirez@gmail.com> | 2016-09-09 14:59:48 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2016-09-09 14:59:48 +0200 |
commit | f9624813aff019f95e370524152d130d22ee37f3 (patch) | |
tree | 26ecb43d5ad75382069d7ca0f82db11324075720 | |
parent | 92038286e8c047966f779e8d7eefa6d2786bfa43 (diff) | |
download | redis-f9624813aff019f95e370524152d130d22ee37f3.tar.gz |
fix the fix for the TCP binding.
This commit attempts to fix a problem with PR #3467.
-rw-r--r-- | src/server.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/server.c b/src/server.c index fe8364d00..c737a470f 100644 --- a/src/server.c +++ b/src/server.c @@ -1644,19 +1644,24 @@ int listenToPort(int port, int *fds, int *count) { if (fds[*count] != ANET_ERR) { anetNonBlock(NULL,fds[*count]); (*count)++; - } else if (errno == EAFNOSUPPORT) + } else if (errno == EAFNOSUPPORT) { unsupported++; + serverLog(LL_WARNING,"Not listening to IPv6: unsupproted"); + } - /* Bind the IPv4 address as well. */ - fds[*count] = anetTcpServer(server.neterr,port,NULL, - server.tcp_backlog); - if (fds[*count] != ANET_ERR) { - anetNonBlock(NULL,fds[*count]); - (*count)++; - } else if (errno == EAFNOSUPPORT) - unsupported++; + if (*count == 1 || unsupported) { + /* Bind the IPv4 address as well. */ + fds[*count] = anetTcpServer(server.neterr,port,NULL, + server.tcp_backlog); + if (fds[*count] != ANET_ERR) { + anetNonBlock(NULL,fds[*count]); + (*count)++; + } else if (errno == EAFNOSUPPORT) { + unsupported++; + serverLog(LL_WARNING,"Not listening to IPv4: unsupproted"); + } + } /* Exit the loop if we were able to bind * on IPv4 and IPv6, - * or if one is unsupported by th OS. * otherwise fds[*count] will be ANET_ERR and we'll print an * error and return to the caller with an error. */ if (*count + unsupported == 2) break; |