diff options
author | Pavlo Yatsukhnenko <yatsukhnenko@gmail.com> | 2022-07-15 16:14:23 +0300 |
---|---|---|
committer | Pavlo Yatsukhnenko <yatsukhnenko@gmail.com> | 2022-07-15 16:14:23 +0300 |
commit | 0f1ca0ccf815352d79e716dac49b854491ecc994 (patch) | |
tree | 30c669b4c16fff653ac50095ad0ba152c531324f | |
parent | 8e747ecec9658dfbd2f0d64d7cf5cf4b7899f19e (diff) |
Unsubscribe from all channels
-rw-r--r-- | redis_commands.c | 9 |
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; |