Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d247bb6

Browse files
Add prefix support to SUBSCRIBE/PSUBSCRIBE
Now the Redis::OPT_PREFIX will apply to subscribe/psubscribe channels and will be applied before searching for messages.
1 parent 00ff68d commit d247bb6

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

redis.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5283,8 +5283,8 @@ PHPAPI void generic_subscribe_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sub_cmd)
52835283
HashTable *arr_hash;
52845284
HashPosition pointer;
52855285
RedisSock *redis_sock;
5286-
char *cmd = "", *old_cmd = NULL;
5287-
int cmd_len, array_count;
5286+
char *cmd = "", *old_cmd = NULL, *key;
5287+
int cmd_len, array_count, key_len, key_free;
52885288
zval *z_tab, **tmp;
52895289
char *type_response;
52905290

@@ -5319,10 +5319,24 @@ PHPAPI void generic_subscribe_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sub_cmd)
53195319
if(*cmd) {
53205320
old_cmd = cmd;
53215321
}
5322-
cmd_len = spprintf(&cmd, 0, "%s %s", cmd, Z_STRVAL_PP(data));
5322+
5323+
// Grab our key and len
5324+
key = Z_STRVAL_PP(data);
5325+
key_len = Z_STRLEN_PP(data);
5326+
5327+
// Prefix our key if neccisary
5328+
key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC);
5329+
5330+
cmd_len = spprintf(&cmd, 0, "%s %s", cmd, key);
5331+
53235332
if(old_cmd) {
53245333
efree(old_cmd);
53255334
}
5335+
5336+
// Free our key if it was prefixed
5337+
if(key_free) {
5338+
efree(key);
5339+
}
53265340
}
53275341
}
53285342

0 commit comments

Comments
 (0)