summaryrefslogtreecommitdiff
path: root/hiredis.c
diff options
context:
space:
mode:
authormichael-grunder <michael.grunder@gmail.com>2020-10-17 18:46:21 -0700
committermichael-grunder <michael.grunder@gmail.com>2020-10-17 19:08:05 -0700
commitb9b9f446feca0dda2148b5e3d541ff5e87627a31 (patch)
treef8bf29ed7f7d233e51f47ca5c08a095292040364 /hiredis.c
parentacc917548dcfd91e5d56387ed58b5f408cdb810a (diff)
Fix handling of NIL invalidation messages.
When CLIENT TRACKING is enabled, Redis will send an invalidation message with a NIL payload to all tracking clients after a FLUSHDB is executed. We didn't account for REDIS_REPLY_PUSH being a valid parent object to a NIL payload, and were failing an assertion. Additionally this commit adds a regression test for the logic.
Diffstat (limited to 'hiredis.c')
-rw-r--r--hiredis.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hiredis.c b/hiredis.c
index 1170d75..3035f79 100644
--- a/hiredis.c
+++ b/hiredis.c
@@ -257,7 +257,8 @@ static void *createNilObject(const redisReadTask *task) {
parent = task->parent->obj;
assert(parent->type == REDIS_REPLY_ARRAY ||
parent->type == REDIS_REPLY_MAP ||
- parent->type == REDIS_REPLY_SET);
+ parent->type == REDIS_REPLY_SET ||
+ parent->type == REDIS_REPLY_PUSH);
parent->element[task->idx] = r;
}
return r;