mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-31 10:58:21 -07:00
49 lines
2.6 KiB
Diff
49 lines
2.6 KiB
Diff
--- a/libmemcached/memcached.cc
|
|
+++ b/libmemcached/memcached.cc
|
|
@@ -285,6 +285,8 @@ void memcached_servers_reset(memcached_st *shell)
|
|
{
|
|
libmemcached_free(self, self->ketama.continuum);
|
|
self->ketama.continuum= NULL;
|
|
+ self->ketama.continuum_count= 0;
|
|
+ self->ketama.continuum_points_counter= 0;
|
|
|
|
memcached_instance_list_free(memcached_instance_list(self), self->number_of_hosts);
|
|
memcached_instance_set(self, NULL, 0);
|
|
--- a/tests/libmemcached-1.0/all_tests.h
|
|
+++ b/tests/libmemcached-1.0/all_tests.h
|
|
@@ -452,6 +452,7 @@ collection_st collection[] ={
|
|
{"hsieh_availability", 0, 0, hsieh_availability},
|
|
{"murmur_availability", 0, 0, murmur_availability},
|
|
{"memcached_server_add", (test_callback_fn*)memcached_servers_reset_SETUP, 0, memcached_server_add_TESTS},
|
|
+ {"memcached_server_add(continuum)", (test_callback_fn*)memcached_servers_reset_CONTINUUM, 0, memcached_server_add_TESTS},
|
|
{"memcached_server_add(MEMCACHED_DISTRIBUTION_CONSISTENT)", (test_callback_fn*)memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP, 0, memcached_server_add_TESTS},
|
|
{"memcached_server_add(MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED)", (test_callback_fn*)memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED_SETUP, 0, memcached_server_add_TESTS},
|
|
{"block", 0, 0, tests},
|
|
--- a/tests/libmemcached-1.0/setup_and_teardowns.cc
|
|
+++ b/tests/libmemcached-1.0/setup_and_teardowns.cc
|
|
@@ -177,6 +177,16 @@ test_return_t memcached_servers_reset_SETUP(memcached_st *memc)
|
|
return TEST_SUCCESS;
|
|
}
|
|
|
|
+test_return_t memcached_servers_reset_CONTINUUM(memcached_st *memc)
|
|
+{
|
|
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, MEMCACHED_DISTRIBUTION_CONSISTENT);
|
|
+ memcached_servers_reset(memc);
|
|
+ test_compare(0, memc->ketama.continuum_count);
|
|
+ // If memc->ketama.continuum_count is non-zero at this point, any call to
|
|
+ // memcached_server_add will cause a segfault.
|
|
+ return TEST_SUCCESS;
|
|
+}
|
|
+
|
|
test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP(memcached_st *memc)
|
|
{
|
|
test_compare(TEST_SUCCESS, memcached_servers_reset_SETUP(memc));
|
|
--- a/tests/libmemcached-1.0/setup_and_teardowns.h
|
|
+++ b/tests/libmemcached-1.0/setup_and_teardowns.h
|
|
@@ -64,3 +64,4 @@ test_return_t pre_buffer(memcached_st*);
|
|
test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_SETUP(memcached_st *memc);
|
|
test_return_t memcached_servers_reset_MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED_SETUP(memcached_st *memc);
|
|
test_return_t memcached_servers_reset_SETUP(memcached_st *memc);
|
|
+test_return_t memcached_servers_reset_CONTINUUM(memcached_st *memc);
|
|
|