diff options
author | Pavlo Yatsukhnenko <yatsukhnenko@gmail.com> | 2018-05-31 11:02:39 +0300 |
---|---|---|
committer | Pavlo Yatsukhnenko <yatsukhnenko@gmail.com> | 2018-05-31 11:24:28 +0300 |
commit | 28ec432247f597216846593d62b21e2eef8461c5 (patch) | |
tree | 01dd9f4b15bae3339de21d5ce8158be5a44d9afa /redis_cluster.c | |
parent | 97bb6bd85e3fa38dbb13b97c50bd315490265a80 (diff) |
Issue #1358
Use `cluster_free` in `free_cluster_context` to free cluster object.
Call `cluster_disconnect` before destroying cluster object.
Diffstat (limited to 'redis_cluster.c')
-rw-r--r-- | redis_cluster.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/redis_cluster.c b/redis_cluster.c index 9b33d435..d2788a7d 100644 --- a/redis_cluster.c +++ b/redis_cluster.c @@ -362,34 +362,26 @@ create_cluster_context(zend_class_entry *class_type TSRMLS_DC) { } /* Free redisCluster context */ -void #if (PHP_MAJOR_VERSION < 7) -free_cluster_context(void *object TSRMLS_DC) { +void +free_cluster_context(void *object TSRMLS_DC) +{ redisCluster *cluster = (redisCluster*)object; + + cluster_free(cluster, 0 TSRMLS_CC); + zend_object_std_dtor(&cluster->std TSRMLS_CC); + efree(cluster); +} #else -free_cluster_context(zend_object *object) { +void +free_cluster_context(zend_object *object) +{ redisCluster *cluster = (redisCluster*)((char*)(object) - XtOffsetOf(redisCluster, std)); -#endif - // Free any allocated prefix, as well as the struct - if (cluster->flags->prefix) efree(cluster->flags->prefix); - efree(cluster->flags); - - // Free seeds HashTable itself - zend_hash_destroy(cluster->seeds); - efree(cluster->seeds); - - // Destroy all Redis objects and free our nodes HashTable - zend_hash_destroy(cluster->nodes); - efree(cluster->nodes); - - if (cluster->err) zend_string_release(cluster->err); + cluster_free(cluster, 0 TSRMLS_CC); zend_object_std_dtor(&cluster->std TSRMLS_CC); - -#if (PHP_MAJOR_VERSION < 7) - efree(cluster); -#endif } +#endif /* Attempt to connect to a Redis cluster provided seeds and timeout options */ void redis_cluster_init(redisCluster *c, HashTable *ht_seeds, double timeout, |