Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2022-07-15 16:14:23 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2022-07-15 16:14:23 +0300
commit0f1ca0ccf815352d79e716dac49b854491ecc994 (patch)
tree30c669b4c16fff653ac50095ad0ba152c531324f
parent8e747ecec9658dfbd2f0d64d7cf5cf4b7899f19e (diff)
Unsubscribe from all channels
-rw-r--r--redis_commands.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/redis_commands.c b/redis_commands.c
index 7ed18a3d..f85a764b 100644
--- a/redis_commands.c
+++ b/redis_commands.c
@@ -1166,11 +1166,6 @@ int redis_unsubscribe_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
ht_arr = Z_ARRVAL_P(z_arr);
sctx->argc = zend_hash_num_elements(ht_arr);
- if (sctx->argc == 0) {
- efree(sctx);
- return FAILURE;
- }
-
redis_cmd_init_sstr(&cmdstr, sctx->argc, kw, strlen(kw));
ZEND_HASH_FOREACH_VAL(ht_arr, z_chan) {
@@ -1183,6 +1178,10 @@ int redis_unsubscribe_cmd(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock,
if (key_free) efree(key);
} ZEND_HASH_FOREACH_END();
+ if (!sctx->argc && redis_sock->subs) {
+ sctx->argc = zend_hash_num_elements(redis_sock->subs);
+ }
+
// Push out vals
*cmd_len = cmdstr.len;
*cmd = cmdstr.c;