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>2018-05-31 11:02:39 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2018-05-31 11:24:28 +0300
commit28ec432247f597216846593d62b21e2eef8461c5 (patch)
tree01dd9f4b15bae3339de21d5ce8158be5a44d9afa /redis_cluster.c
parent97bb6bd85e3fa38dbb13b97c50bd315490265a80 (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.c34
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,