From f3924c18b899b4af631fd49a64283b5748dd4b99 Mon Sep 17 00:00:00 2001 From: Michael Penick Date: Tue, 24 May 2016 09:54:24 -0700 Subject: [PATCH 1/2] PHP7 build fixes for whitelist/blacklist policies --- ext/src/Cassandra/Cluster/Builder.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ext/src/Cassandra/Cluster/Builder.c b/ext/src/Cassandra/Cluster/Builder.c index 78f3622f2..4fe14de9c 100644 --- a/ext/src/Cassandra/Cluster/Builder.c +++ b/ext/src/Cassandra/Cluster/Builder.c @@ -1144,29 +1144,29 @@ php_cassandra_cluster_builder_properties(zval *object TSRMLS_DC) } PHP5TO7_ZVAL_MAYBE_MAKE(blacklistHosts); - if (!PHP5TO7_ZVAL_IS_UNDEF(self->blacklist_hosts)) { - PHP5TO7_ZVAL_COPY(PHP5TO7_ZVAL_MAYBE_P(blacklistHosts), PHP5TO7_ZVAL_MAYBE_P(self->blacklist_hosts)); + if (self->blacklist_hosts) { + PHP5TO7_ZVAL_STRING(PHP5TO7_ZVAL_MAYBE_P(blacklistHosts), self->blacklist_hosts); } else { ZVAL_NULL(PHP5TO7_ZVAL_MAYBE_P(blacklistHosts)); } PHP5TO7_ZVAL_MAYBE_MAKE(whitelistHosts); - if (!PHP5TO7_ZVAL_IS_UNDEF(self->whitelist_hosts)) { - PHP5TO7_ZVAL_COPY(PHP5TO7_ZVAL_MAYBE_P(whitelistHosts), PHP5TO7_ZVAL_MAYBE_P(self->whitelist_hosts)); + if (self->whitelist_hosts) { + PHP5TO7_ZVAL_STRING(PHP5TO7_ZVAL_MAYBE_P(whitelistHosts), self->whitelist_hosts); } else { ZVAL_NULL(PHP5TO7_ZVAL_MAYBE_P(whitelistHosts)); } PHP5TO7_ZVAL_MAYBE_MAKE(blacklistDCs); - if (!PHP5TO7_ZVAL_IS_UNDEF(self->blacklist_dcs)) { - PHP5TO7_ZVAL_COPY(PHP5TO7_ZVAL_MAYBE_P(blacklistDCs), PHP5TO7_ZVAL_MAYBE_P(self->blacklist_dcs)); + if (self->blacklist_dcs) { + PHP5TO7_ZVAL_STRING(PHP5TO7_ZVAL_MAYBE_P(blacklistDCs), self->blacklist_dcs); } else { ZVAL_NULL(PHP5TO7_ZVAL_MAYBE_P(blacklistDCs)); } PHP5TO7_ZVAL_MAYBE_MAKE(whitelistDCs); - if (!PHP5TO7_ZVAL_IS_UNDEF(self->whitelist_dcs)) { - PHP5TO7_ZVAL_COPY(PHP5TO7_ZVAL_MAYBE_P(whitelistDCs), PHP5TO7_ZVAL_MAYBE_P(self->whitelist_dcs)); + if (self->whitelist_dcs) { + PHP5TO7_ZVAL_STRING(PHP5TO7_ZVAL_MAYBE_P(whitelistDCs), self->whitelist_dcs); } else { ZVAL_NULL(PHP5TO7_ZVAL_MAYBE_P(whitelistDCs)); } From 84e760f04a31fdc574eeccd3fbcdf36eb90c0f95 Mon Sep 17 00:00:00 2001 From: Michael Penick Date: Thu, 16 Jun 2016 13:17:53 -0700 Subject: [PATCH 2/2] Added whitelist/blacklist host and dcs to hash key --- ext/src/Cassandra/Cluster/Builder.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/ext/src/Cassandra/Cluster/Builder.c b/ext/src/Cassandra/Cluster/Builder.c index 4fe14de9c..15c3582ca 100644 --- a/ext/src/Cassandra/Cluster/Builder.c +++ b/ext/src/Cassandra/Cluster/Builder.c @@ -50,7 +50,7 @@ PHP_METHOD(ClusterBuilder, build) php5to7_zend_resource_le *le; hash_key_len = spprintf(&hash_key, 0, - "cassandra:%s:%d:%d:%s:%d:%d:%d:%s:%s:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d", + "cassandra:%s:%d:%d:%s:%d:%d:%d:%s:%s:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%s:%s:%s:%s", builder->contact_points, builder->port, builder->load_balancing_policy, SAFE_STR(builder->local_dc), builder->used_hosts_per_remote_dc, builder->allow_remote_dcs_for_local_cl, builder->use_token_aware_routing, @@ -60,7 +60,9 @@ PHP_METHOD(ClusterBuilder, build) builder->core_connections_per_host, builder->max_connections_per_host, builder->reconnect_interval, builder->enable_latency_aware_routing, builder->enable_tcp_nodelay, builder->enable_tcp_keepalive, - builder->tcp_keepalive_delay, builder->enable_schema); + builder->tcp_keepalive_delay, builder->enable_schema, + SAFE_STR(builder->whitelist_hosts), SAFE_STR(builder->whitelist_dcs), + SAFE_STR(builder->blacklist_hosts), SAFE_STR(builder->blacklist_dcs)); cluster->hash_key = hash_key; cluster->hash_key_len = hash_key_len; @@ -1278,6 +1280,26 @@ php_cassandra_cluster_builder_free(php5to7_zend_object_free *object TSRMLS_DC) self->password = NULL; } + if (self->whitelist_hosts) { + efree(self->whitelist_hosts); + self->whitelist_hosts = NULL; + } + + if (self->blacklist_hosts) { + efree(self->blacklist_hosts); + self->blacklist_hosts = NULL; + } + + if (self->whitelist_dcs) { + efree(self->whitelist_dcs); + self->whitelist_dcs = NULL; + } + + if (self->blacklist_dcs) { + efree(self->blacklist_dcs); + self->whitelist_dcs = NULL; + } + PHP5TO7_ZVAL_MAYBE_DESTROY(self->ssl_options); PHP5TO7_ZVAL_MAYBE_DESTROY(self->default_timeout); PHP5TO7_ZVAL_MAYBE_DESTROY(self->retry_policy);