Replication: more strict error checking for master PING reply.

This commit is contained in:
antirez 2013-02-12 16:53:27 +01:00
parent dc24a6b132
commit 3419c8ce70

View File

@ -1058,11 +1058,16 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) {
goto error; goto error;
} }
/* We don't care about the reply, it can be +PONG or an error since /* We accept only two replies as valid, a positive +PONG reply
* the server requires AUTH. As long as it replies correctly, it's * (we just check for "+") or an authentication error.
* fine from our point of view. */ * Note that older versions of Redis replied with "operation not
if (buf[0] != '-' && buf[0] != '+') { * permitted" instead of using a proper error code, so we test
redisLog(REDIS_WARNING,"Unexpected reply to PING from master."); * both. */
if (buf[0] != '+' &&
strncmp(buf,"-NOAUTH",7) != 0 &&
strncmp(buf,"-ERR operation not permitted",28) != 0)
{
redisLog(REDIS_WARNING,"Error reply to PING from master: '%s'",buf);
goto error; goto error;
} else { } else {
redisLog(REDIS_NOTICE, redisLog(REDIS_NOTICE,