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.
This commit is contained in:
antirez 2013-07-05 11:07:55 +02:00
parent 90b0d66cce
commit c978b864f7
2 changed files with 9 additions and 16 deletions

View File

@ -331,9 +331,9 @@ static int anetListen(char *err, int s, struct sockaddr *sa, socklen_t len) {
return ANET_OK; 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; struct sockaddr_in sa;
if ((s = anetCreateSocket(err,AF_INET)) == ANET_ERR) 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_family = AF_INET;
sa.sin_port = htons(port); sa.sin_port = htons(port);
sa.sin_addr.s_addr = htonl(INADDR_ANY); sa.sin_addr.s_addr = htonl(INADDR_ANY);
if (bindaddr_count) { if (bindaddr && inet_aton(bindaddr, &sa.sin_addr) == 0) {
for (j = 0; j < bindaddr_count; j++) { anetSetError(err, "invalid bind address");
if (inet_aton(bindaddr[j], &sa.sin_addr) == 0) { close(s);
anetSetError(err, "invalid bind address"); return ANET_ERR;
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 (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR)
return ANET_ERR;
return s; return s;
} }

View File

@ -45,7 +45,7 @@ int anetUnixConnect(char *err, char *path);
int anetUnixNonBlockConnect(char *err, char *path); int anetUnixNonBlockConnect(char *err, char *path);
int anetRead(int fd, char *buf, int count); int anetRead(int fd, char *buf, int count);
int anetResolve(char *err, char *host, char *ipbuf); 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 anetUnixServer(char *err, char *path, mode_t perm);
int anetTcpAccept(char *err, int serversock, char *ip, int *port); int anetTcpAccept(char *err, int serversock, char *ip, int *port);
int anetUnixAccept(char *err, int serversock); int anetUnixAccept(char *err, int serversock);