summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Stancliff <matt@genges.com>2014-10-28 12:25:16 -0400
committerMatt Stancliff <matt@genges.com>2014-10-29 15:09:09 -0400
commit0014966c1e39cf2dcb4ca271900b93990d823bec (patch)
tree0c9939bfb1a8e60538342c1e3aa33b5e14ac815b
parent6fbaeddf3f547217df9f808da80a716661bfa591 (diff)
downloadredis-0014966c1e39cf2dcb4ca271900b93990d823bec.tar.gz
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).
-rw-r--r--src/cluster.c4
-rw-r--r--src/replication.c3
2 files changed, 4 insertions, 3 deletions
diff --git a/src/cluster.c b/src/cluster.c
index 8a788da67..1967b3f42 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 77f9fa8bc..1a4ca2503 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));