]> git.saurik.com Git - redis.git/blobdiff - src/t_list.c
BLPOP inside MULTI/EXEC block no longer crashes, instead if the list is empty the...
[redis.git] / src / t_list.c
index 2a98103333b71d9014983b78e0b05ea6fe8cccd9..6b4a611e47e257ad4a8b09f90610f96533a995a8 100644 (file)
@@ -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);
     /* 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);