X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fhosts.c;h=e0224222176626e0d63dee54c765ca1df236cb83;hb=9cab202576a66e3150d283ea2066ee88a6502cea;hp=09924f10ca9eb2920056de9e58de24d36a998072;hpb=7f9bc55d79a4e7133fdeaaa1150451717c103b28;p=awesomized%2Flibmemcached diff --git a/libmemcached/hosts.c b/libmemcached/hosts.c index 09924f10..e0224222 100644 --- a/libmemcached/hosts.c +++ b/libmemcached/hosts.c @@ -6,7 +6,7 @@ static memcached_return_t server_add(memcached_st *ptr, const char *hostname, in_port_t port, uint32_t weight, memcached_connection_t type); -memcached_return_t update_continuum(memcached_st *ptr); +static memcached_return_t update_continuum(memcached_st *ptr); static int compare_servers(const void *p1, const void *p2) { @@ -36,6 +36,9 @@ static void sort_hosts(memcached_st *ptr) memcached_return_t run_distribution(memcached_st *ptr) { + if (ptr->flags.use_sort_hosts) + sort_hosts(ptr); + switch (ptr->distribution) { case MEMCACHED_DISTRIBUTION_CONSISTENT: @@ -43,8 +46,6 @@ memcached_return_t run_distribution(memcached_st *ptr) case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY: return update_continuum(ptr); case MEMCACHED_DISTRIBUTION_MODULA: - if (ptr->flags.use_sort_hosts) - sort_hosts(ptr); break; case MEMCACHED_DISTRIBUTION_RANDOM: srandom((uint32_t) time(NULL)); @@ -105,7 +106,7 @@ static int continuum_item_cmp(const void *t1, const void *t2) return -1; } -memcached_return_t update_continuum(memcached_st *ptr) +static memcached_return_t update_continuum(memcached_st *ptr) { uint32_t host_index; uint32_t continuum_index= 0; @@ -255,16 +256,17 @@ memcached_return_t update_continuum(memcached_st *ptr) if (list[host_index].port == MEMCACHED_DEFAULT_PORT) { sort_host_length= (size_t) snprintf(sort_host, MEMCACHED_MAX_HOST_SORT_LENGTH, - "%s-%d", + "%s-%u", list[host_index].hostname, pointer_index - 1); } else { sort_host_length= (size_t) snprintf(sort_host, MEMCACHED_MAX_HOST_SORT_LENGTH, - "%s:%d-%d", + "%s:%u-%u", list[host_index].hostname, - list[host_index].port, pointer_index - 1); + (uint32_t)list[host_index].port, + pointer_index - 1); } WATCHPOINT_ASSERT(sort_host_length);