Networking: add more outbound IP binding fixes

Same as the original bind fixes (we just missed these the
first time around).

This helps Redis not automatically send
connections from the first IP on an interface if we are bound
to a specific IP address (e.g. with multiple IP aliases on one
interface, you want to send from _your_ IP, not from the first IP
on the interface).
This commit is contained in:
Matt Stancliff 2014-10-28 12:25:16 -04:00
parent 6fbaeddf3f
commit 0014966c1e
2 changed files with 4 additions and 3 deletions

View File

@ -4307,8 +4307,8 @@ int migrateGetSocket(redisClient *c, robj *host, robj *port, long timeout) {
} }
/* Create the socket */ /* Create the socket */
fd = anetTcpNonBlockConnect(server.neterr,c->argv[1]->ptr, fd = anetTcpNonBlockBindConnect(server.neterr,c->argv[1]->ptr,
atoi(c->argv[2]->ptr)); atoi(c->argv[2]->ptr),REDIS_BIND_ADDR);
if (fd == -1) { if (fd == -1) {
sdsfree(name); sdsfree(name);
addReplyErrorFormat(c,"Can't connect to target node: %s", addReplyErrorFormat(c,"Can't connect to target node: %s",

View File

@ -1357,7 +1357,8 @@ error:
int connectWithMaster(void) { int connectWithMaster(void) {
int fd; int fd;
fd = anetTcpNonBlockConnect(NULL,server.masterhost,server.masterport); fd = anetTcpNonBlockBindConnect(NULL,
server.masterhost,server.masterport,REDIS_BIND_ADDR);
if (fd == -1) { if (fd == -1) {
redisLog(REDIS_WARNING,"Unable to connect to MASTER: %s", redisLog(REDIS_WARNING,"Unable to connect to MASTER: %s",
strerror(errno)); strerror(errno));