From 3472d045d8bf983e9e017bcf00146ee8bbe5df35 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 9 Jul 2013 15:46:34 +0200 Subject: [PATCH] getClientPeerId() refactored into two functions. --- src/networking.c | 16 ++++++++++++---- src/redis.h | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/networking.c b/src/networking.c index 759abe7b..84895262 100644 --- a/src/networking.c +++ b/src/networking.c @@ -1122,6 +1122,17 @@ void getClientsMaxBuffers(unsigned long *longest_output_list, *biggest_input_buffer = bib; } +/* This is an helper function for getClientPeerId(). + * It writes the specified ip/port to "peerid" as a null termiated string + * in the form ip:port if ip does not contain ":" itself, otherwise + * [ip]:port format is used (for IPv6 addresses basically). */ +void formatPeerId(char *peerid, size_t peerid_len, char *ip, int port) { + if (strchr(ip,':')) + snprintf(peerid,peerid_len,"[%s]:%d",ip,port); + else + snprintf(peerid,peerid_len,"%s:%d",ip,port); +} + /* A Redis "Peer ID" is a colon separated ip:port pair. * For IPv4 it's in the form x.y.z.k:pork, example: "127.0.0.1:1234". * For IPv6 addresses we use [] around the IP part, like in "[::1]:1234". @@ -1146,10 +1157,7 @@ int getClientPeerId(redisClient *client, char *peerid, size_t peerid_len) { } else { /* TCP client. */ int retval = anetPeerToString(client->fd,ip,sizeof(ip),&port); - if (strchr(ip,':')) - snprintf(peerid,peerid_len,"[%s]:%d",ip,port); - else - snprintf(peerid,peerid_len,"%s:%d",ip,port); + formatPeerId(peerid,peerid_len,ip,port); return (retval == -1) ? REDIS_ERR : REDIS_OK; } } diff --git a/src/redis.h b/src/redis.h index 48c96695..2fbd930b 100644 --- a/src/redis.h +++ b/src/redis.h @@ -909,6 +909,7 @@ void copyClientOutputBuffer(redisClient *dst, redisClient *src); void *dupClientReplyValue(void *o); void getClientsMaxBuffers(unsigned long *longest_output_list, unsigned long *biggest_input_buffer); +void formatPeerId(char *peerid, size_t peerid_len, char *ip, int port); int getClientPeerId(redisClient *client, char *peerid, size_t peerid_len); sds getClientInfoString(redisClient *client); sds getAllClientsInfoString(void); -- GitLab