From ce68caea371cc75378c2261927c953fbd27147c7 Mon Sep 17 00:00:00 2001 From: Matt Stancliff Date: Wed, 19 Feb 2014 17:30:07 -0500 Subject: [PATCH] Cluster: error out quicker if port is unusable The default cluster control port is 10,000 ports higher than the base Redis port. If Redis is started on a too-high port, Cluster can't start and everything will exit later anyway. --- src/cluster.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/cluster.c b/src/cluster.c index f47799ac..52ace9eb 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -329,6 +329,19 @@ void clusterInit(void) { /* We need a listening TCP port for our cluster messaging needs. */ server.cfd_count = 0; + + /* Port sanity check II + The other handshake port check is triggered too late to stop + us from trying to use a too-high cluster port number. + */ + if (server.port > (65535-REDIS_CLUSTER_PORT_INCR)) { + redisLog(REDIS_WARNING, "Redis port number too high. " + "Cluster communication port is 10,000 port " + "numbers higher than your Redis port. " + "Your Redis port number must be " + "lower than 55535."); + } + if (listenToPort(server.port+REDIS_CLUSTER_PORT_INCR, server.cfd,&server.cfd_count) == REDIS_ERR) {