mirror of
https://github.com/fluencelabs/redis
synced 2025-06-12 00:31:21 +00:00
BLPOP inside MULTI/EXEC block no longer crashes, instead if the list is empty the behavior is like if the timeout is reached. This fixes Issue 285
This commit is contained in:
@ -823,6 +823,13 @@ void blockingPopGenericCommand(redisClient *c, int where) {
|
||||
}
|
||||
}
|
||||
}
|
||||
/* If we are inside a MULTI/EXEC and the list is empty the only thing
|
||||
* we can do is treating it as a timeout (even with timeout 0). */
|
||||
if (c->flags & REDIS_MULTI) {
|
||||
addReply(c,shared.nullmultibulk);
|
||||
return;
|
||||
}
|
||||
|
||||
/* If the list is empty or the key does not exists we must block */
|
||||
timeout = strtol(c->argv[c->argc-1]->ptr,NULL,10);
|
||||
if (timeout > 0) timeout += time(NULL);
|
||||
|
Reference in New Issue
Block a user