summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2013-07-09 10:47:17 +0200
committerantirez <antirez@gmail.com>2013-07-09 10:47:17 +0200
commitf19e267e9a422e2c791489e5d46ec16e966f55d6 (patch)
tree0b02c41e3b22ecd0b59f73790052aa48a556bf71
parent90038906f44be7adef9ac656f24f2f32889e1975 (diff)
downloadredis-f19e267e9a422e2c791489e5d46ec16e966f55d6.tar.gz
IPv6: bind IPv4 and IPv6 interfaces by default.
-rw-r--r--src/anet.c2
-rw-r--r--src/redis.c13
2 files changed, 13 insertions, 2 deletions
diff --git a/src/anet.c b/src/anet.c
index 434d8311e..bf8c92549 100644
--- a/src/anet.c
+++ b/src/anet.c
@@ -392,7 +392,7 @@ static int _anetTcpServer(char *err, int port, char *bindaddr, int af)
if ((s = socket(p->ai_family,p->ai_socktype,p->ai_protocol)) == -1)
continue;
- if (AF_INET6 == af && anetV6Only(err,s) == ANET_ERR)
+ if (af == AF_INET6 && anetV6Only(err,s) == ANET_ERR)
goto error; /* could continue here? */
if (anetListen(err,s,p->ai_addr,p->ai_addrlen) == ANET_ERR)
diff --git a/src/redis.c b/src/redis.c
index 3b522bb10..a2bcdd6d0 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -1431,7 +1431,18 @@ void initServer() {
* entering the loop if j == 0. */
if (server.bindaddr_count == 0) server.bindaddr[0] = NULL;
for (j = 0; j < server.bindaddr_count || j == 0; j++) {
- server.ipfd[server.ipfd_count] = anetTcpServer(server.neterr,server.port,server.bindaddr[j]);
+ if (server.bindaddr[j] == NULL) {
+ /* Bind * for both IPv6 and IPv4. */
+ server.ipfd[0] = anetTcp6Server(server.neterr,server.port,NULL);
+ if (server.ipfd[0] != ANET_ERR) server.ipfd_count++;
+ server.ipfd[1] = anetTcpServer(server.neterr,server.port,NULL);
+ } else if (strchr(server.bindaddr[j],':')) {
+ /* Bind IPv6 address. */
+ server.ipfd[server.ipfd_count] = anetTcp6Server(server.neterr,server.port,server.bindaddr[j]);
+ } else {
+ /* Bind IPv4 address. */
+ server.ipfd[server.ipfd_count] = anetTcpServer(server.neterr,server.port,server.bindaddr[j]);
+ }
if (server.ipfd[server.ipfd_count] == ANET_ERR) {
redisLog(REDIS_WARNING,
"Creating Server TCP listening socket %s:%d: %s",