From f1a6f780242a804d9ae38ecfd974c2c728955d32 Mon Sep 17 00:00:00 2001 From: Matt Stancliff Date: Tue, 28 Oct 2014 12:25:16 -0400 Subject: [PATCH] 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). --- src/cluster.c | 4 ++-- src/replication.c | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cluster.c b/src/cluster.c index 8a788da6..1967b3f4 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -4307,8 +4307,8 @@ int migrateGetSocket(redisClient *c, robj *host, robj *port, long timeout) { } /* Create the socket */ - fd = anetTcpNonBlockConnect(server.neterr,c->argv[1]->ptr, - atoi(c->argv[2]->ptr)); + fd = anetTcpNonBlockBindConnect(server.neterr,c->argv[1]->ptr, + atoi(c->argv[2]->ptr),REDIS_BIND_ADDR); if (fd == -1) { sdsfree(name); addReplyErrorFormat(c,"Can't connect to target node: %s", diff --git a/src/replication.c b/src/replication.c index 77f9fa8b..1a4ca250 100644 --- a/src/replication.c +++ b/src/replication.c @@ -1357,7 +1357,8 @@ error: int connectWithMaster(void) { int fd; - fd = anetTcpNonBlockConnect(NULL,server.masterhost,server.masterport); + fd = anetTcpNonBlockBindConnect(NULL, + server.masterhost,server.masterport,REDIS_BIND_ADDR); if (fd == -1) { redisLog(REDIS_WARNING,"Unable to connect to MASTER: %s", strerror(errno));