Now MONITOR/SYNC cannot be issued multiple times

This commit is contained in:
antirez 2009-03-23 21:33:15 +01:00
parent 87eca72788
commit cf3f0c012d
2 changed files with 8 additions and 0 deletions

2
TODO
View File

@ -34,3 +34,5 @@ ROLLBACK command:
COMMIT
but this sucks since there is no way to check the error message.
- Prevent the client to issue SYNC or MONITOR multiple times

View File

@ -2919,6 +2919,9 @@ static void syncCommand(redisClient *c) {
time_t start = time(NULL);
char sizebuf[32];
/* ignore SYNC if aleady slave or in monitor mode */
if (c->flags & REDIS_SLAVE) return;
redisLog(REDIS_NOTICE,"Slave ask for syncronization");
if (flushClientOutput(c) == REDIS_ERR || saveDb(server.dbfilename) != REDIS_OK)
goto closeconn;
@ -3029,6 +3032,9 @@ static int syncWithMaster(void) {
}
static void monitorCommand(redisClient *c) {
/* ignore MONITOR if aleady slave or in monitor mode */
if (c->flags & REDIS_SLAVE) return;
c->flags |= (REDIS_SLAVE|REDIS_MONITOR);
c->slaveseldb = 0;
if (!listAddNodeTail(server.monitors,c)) oom("listAddNodeTail");