Don't reset the client when processCommand returns REDIS_ERR

This commit is contained in:
Pieter Noordhuis 2010-10-15 17:27:05 +02:00
parent dc11daf3b5
commit 9da6caac4e
2 changed files with 8 additions and 4 deletions

View File

@ -820,9 +820,13 @@ void processInputBuffer(redisClient *c) {
} }
/* Multibulk processing could see a <= 0 length. */ /* Multibulk processing could see a <= 0 length. */
if (c->argc > 0) if (c->argc == 0) {
processCommand(c); resetClient(c);
resetClient(c); } else {
/* Only reset the client when the command was executed. */
if (processCommand(c) == REDIS_OK)
resetClient(c);
}
} }
} }

View File

@ -955,7 +955,7 @@ int processCommand(redisClient *c) {
addReply(c,shared.queued); addReply(c,shared.queued);
} else { } else {
if (server.vm_enabled && server.vm_max_threads > 0 && if (server.vm_enabled && server.vm_max_threads > 0 &&
blockClientOnSwappedKeys(c,cmd)) return 1; blockClientOnSwappedKeys(c,cmd)) return REDIS_ERR;
call(c,cmd); call(c,cmd);
} }
return REDIS_OK; return REDIS_OK;