summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/anet.h1
-rw-r--r--src/sentinel.c9
2 files changed, 5 insertions, 5 deletions
diff --git a/src/anet.h b/src/anet.h
index ff5897af1..b23411cbb 100644
--- a/src/anet.h
+++ b/src/anet.h
@@ -57,5 +57,6 @@ int anetDisableTcpNoDelay(char *err, int fd);
int anetTcpKeepAlive(char *err, int fd);
int anetPeerToString(int fd, char *ip, size_t ip_len, int *port);
int anetKeepAlive(char *err, int fd, int interval);
+int anetSockName(int fd, char *ip, size_t ip_len, int *port);
#endif
diff --git a/src/sentinel.c b/src/sentinel.c
index cb7008727..e89199fec 100644
--- a/src/sentinel.c
+++ b/src/sentinel.c
@@ -1837,14 +1837,13 @@ void sentinelPingInstance(sentinelRedisInstance *ri) {
(now - ri->last_pub_time) > SENTINEL_PUBLISH_PERIOD)
{
/* PUBLISH hello messages only to masters. */
- struct sockaddr_in sa;
- socklen_t salen = sizeof(sa);
-
- if (getsockname(ri->cc->c.fd,(struct sockaddr*)&sa,&salen) != -1) {
+ char ip[INET6_ADDRSTRLEN];
+ if (anetSockName(ri->cc->c.fd,ip,sizeof(ip),NULL) != -1) {
char myaddr[128];
+ // FIXME: IPv6 will break this due to nested : characters -geoffgarside
snprintf(myaddr,sizeof(myaddr),"%s:%d:%s:%d",
- inet_ntoa(sa.sin_addr), server.port, server.runid,
+ ip, server.port, server.runid,
(ri->flags & SRI_CAN_FAILOVER) != 0);
retval = redisAsyncCommand(ri->cc,
sentinelPublishReplyCallback, NULL, "PUBLISH %s %s",