Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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 (backported from master)
  • Loading branch information...
commit efc8a6beee5f8ed034b2c31df3d72cd6eec6df9e 1 parent b059a56
@antirez authored
Showing with 8 additions and 0 deletions.
  1. +8 −0 redis.c
View
8 redis.c
@@ -7752,6 +7752,14 @@ static 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);
Please sign in to comment.
Something went wrong with that request. Please try again.