static int continuum_item_cmp(const void *t1, const void *t2)
{
- memcached_continuum_item_st *ct1 = (memcached_continuum_item_st *)t1;
- memcached_continuum_item_st *ct2 = (memcached_continuum_item_st *)t2;
+ memcached_continuum_item_st *ct1= (memcached_continuum_item_st *)t1;
+ memcached_continuum_item_st *ct2= (memcached_continuum_item_st *)t2;
+ /* Why 153? Hmmm... */
WATCHPOINT_ASSERT(ct1->value != 153);
if (ct1->value == ct2->value)
return 0;
pointer_counter+= pointer_per_server;
}
+ WATCHPOINT_ASSERT(ptr);
+ WATCHPOINT_ASSERT(ptr->continuum);
+ WATCHPOINT_ASSERT(ptr->number_of_hosts);
WATCHPOINT_ASSERT(ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER <= MEMCACHED_CONTINUUM_SIZE);
qsort(ptr->continuum, ptr->number_of_hosts * MEMCACHED_POINTS_PER_SERVER, sizeof(memcached_continuum_item_st), continuum_item_cmp);
memcached_return memcached_server_remove(memcached_server_st *st_ptr)
{
- int x,index;
+ uint32_t x, index;
memcached_st *ptr= st_ptr->root;
- memcached_server_st *list=ptr->hosts;
- index= 0;
- for (x= 0; x< ptr->number_of_hosts; ++x)
+ memcached_server_st *list= ptr->hosts;
+
+ for (x= 0, index= 0; x < ptr->number_of_hosts; x++)
{
if (strncmp(list[x].hostname, st_ptr->hostname, MEMCACHED_MAX_HOST_LENGTH)!=0 || list[x].port != st_ptr->port)
{
memcpy(list+index, list+x, sizeof(memcached_server_st));
index++;
- } else
- {
- ptr->number_of_hosts-=1;
- }
+ }
}
- if(st_ptr->address_info)
+ ptr->number_of_hosts= index;
+
+ if (st_ptr->address_info)
{
- freeaddrinfo(st_ptr->address_info);
+ freeaddrinfo(st_ptr->address_info);
+ st_ptr->address_info= NULL;
}
run_distribution(ptr);
+
return MEMCACHED_SUCCESS;
}