summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2013-07-05 11:07:55 +0200
committerantirez <antirez@gmail.com>2013-07-05 11:07:55 +0200
commitc978b864f74a86dcffc54d66873f7eae6c2c7121 (patch)
treee84f24a023b2e52e73e95492206eba666169fdeb
parent90b0d66cce97aaac3a6437ac77b5dad9064136d1 (diff)
downloadredis-c978b864f74a86dcffc54d66873f7eae6c2c7121.tar.gz
Revert "anet.c: Allow creation of TCP listening sockets bound to N addresses."
Bind() can't be called multiple times against the same socket, multiple sockets are required to bind multiple interfaces, silly me. This reverts commit bd234d62bbfe9feb735fd6d1cdb8f5ce811f54b4.
-rw-r--r--src/anet.c23
-rw-r--r--src/anet.h2
2 files changed, 9 insertions, 16 deletions
diff --git a/src/anet.c b/src/anet.c
index 7a6b7d4bf..963b6688e 100644
--- a/src/anet.c
+++ b/src/anet.c
@@ -331,9 +331,9 @@ static int anetListen(char *err, int s, struct sockaddr *sa, socklen_t len) {
return ANET_OK;
}
-int anetTcpServer(char *err, int port, char **bindaddr, int bindaddr_count)
+int anetTcpServer(char *err, int port, char *bindaddr)
{
- int s, j;
+ int s;
struct sockaddr_in sa;
if ((s = anetCreateSocket(err,AF_INET)) == ANET_ERR)
@@ -343,20 +343,13 @@ int anetTcpServer(char *err, int port, char **bindaddr, int bindaddr_count)
sa.sin_family = AF_INET;
sa.sin_port = htons(port);
sa.sin_addr.s_addr = htonl(INADDR_ANY);
- if (bindaddr_count) {
- for (j = 0; j < bindaddr_count; j++) {
- if (inet_aton(bindaddr[j], &sa.sin_addr) == 0) {
- anetSetError(err, "invalid bind address");
- close(s);
- return ANET_ERR;
- }
- if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR)
- return ANET_ERR;
- }
- } else {
- if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR)
- return ANET_ERR;
+ if (bindaddr && inet_aton(bindaddr, &sa.sin_addr) == 0) {
+ anetSetError(err, "invalid bind address");
+ close(s);
+ return ANET_ERR;
}
+ if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR)
+ return ANET_ERR;
return s;
}
diff --git a/src/anet.h b/src/anet.h
index bf76dd24d..696c2c225 100644
--- a/src/anet.h
+++ b/src/anet.h
@@ -45,7 +45,7 @@ int anetUnixConnect(char *err, char *path);
int anetUnixNonBlockConnect(char *err, char *path);
int anetRead(int fd, char *buf, int count);
int anetResolve(char *err, char *host, char *ipbuf);
-int anetTcpServer(char *err, int port, char **bindaddr, int bindaddr_count);
+int anetTcpServer(char *err, int port, char *bindaddr);
int anetUnixServer(char *err, char *path, mode_t perm);
int anetTcpAccept(char *err, int serversock, char *ip, int *port);
int anetUnixAccept(char *err, int serversock);