]> git.saurik.com Git - redis.git/blobdiff - redis.c
a few more fixes, still broken
[redis.git] / redis.c
diff --git a/redis.c b/redis.c
index 3d8cc702fbb722da7f27fc556d31f65f5c5499e0..43a86ca97c51679fce8cae189050f394ca426ca9 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -5479,6 +5479,7 @@ static void blockForKey(redisClient *c, robj *key, time_t timeout) {
     dictEntry *de;
     list *l;
 
+    printf("blockForKey %p %s\n", c, key->ptr);
     c->blockingkey = key;
     incrRefCount(key);
     c->blockingto = timeout;
@@ -5487,7 +5488,8 @@ static void blockForKey(redisClient *c, robj *key, time_t timeout) {
         int retval;
 
         l = listCreate();
-        retval = dictAdd(c->db->blockingkeys,c,l);
+        retval = dictAdd(c->db->blockingkeys,key,l);
+        incrRefCount(key);
         assert(retval == DICT_OK);
     } else {
         l = dictGetEntryVal(de);
@@ -5502,6 +5504,7 @@ static void unblockClient(redisClient *c) {
     dictEntry *de;
     list *l;
 
+    printf("unblockClient %p %s\n", c, c->blockingkey->ptr);
     /* Remove this client from the list of clients waiting for this key. */
     assert(c->blockingkey != NULL);
     de = dictFind(c->db->blockingkeys,c->blockingkey);