summaryrefslogtreecommitdiff
path: root/src/tracking.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracking.c')
-rw-r--r--src/tracking.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/tracking.c b/src/tracking.c
index 3737f6859..913577eab 100644
--- a/src/tracking.c
+++ b/src/tracking.c
@@ -171,9 +171,14 @@ void trackingRememberKeys(client *c) {
uint64_t caching_given = c->flags & CLIENT_TRACKING_CACHING;
if ((optin && !caching_given) || (optout && caching_given)) return;
- int numkeys;
- int *keys = getKeysFromCommand(c->cmd,c->argv,c->argc,&numkeys);
- if (keys == NULL) return;
+ getKeysResult result = GETKEYS_RESULT_INIT;
+ int numkeys = getKeysFromCommand(c->cmd,c->argv,c->argc,&result);
+ if (!numkeys) {
+ getKeysFreeResult(&result);
+ return;
+ }
+
+ int *keys = result.keys;
for(int j = 0; j < numkeys; j++) {
int idx = keys[j];
@@ -188,7 +193,7 @@ void trackingRememberKeys(client *c) {
if (raxTryInsert(ids,(unsigned char*)&c->id,sizeof(c->id),NULL,NULL))
TrackingTableTotalItems++;
}
- getKeysFreeResult(keys);
+ getKeysFreeResult(&result);
}
/* Given a key name, this function sends an invalidation message in the