result_ptr= memcached_result_create(ptr, &ptr->result);
WATCHPOINT_ASSERT(result_ptr);
ptr->poll_timeout= MEMCACHED_DEFAULT_TIMEOUT;
+ ptr->connect_timeout= MEMCACHED_DEFAULT_TIMEOUT;
+ ptr->retry_timeout= 0;
ptr->distribution= MEMCACHED_DISTRIBUTION_MODULA;
return ptr;
if (ptr->on_cleanup)
ptr->on_cleanup(ptr);
+ if (ptr->continuum)
+ {
+ if (ptr->call_free)
+ ptr->call_free(ptr, ptr->continuum);
+ else
+ free(ptr->continuum);
+ }
+
if (ptr->is_allocated == MEMCACHED_ALLOCATED)
{
if (ptr->call_free)
new_clone->send_size= ptr->send_size;
new_clone->recv_size= ptr->recv_size;
new_clone->poll_timeout= ptr->poll_timeout;
+ new_clone->connect_timeout= ptr->connect_timeout;
+ new_clone->retry_timeout= ptr->retry_timeout;
new_clone->distribution= ptr->distribution;
new_clone->hash= ptr->hash;
+ new_clone->hash_continuum= ptr->hash_continuum;
new_clone->user_data= ptr->user_data;
+ new_clone->snd_timeout= ptr->snd_timeout;
+ new_clone->rcv_timeout= ptr->rcv_timeout;
+
new_clone->on_clone= ptr->on_clone;
new_clone->on_cleanup= ptr->on_cleanup;
new_clone->call_free= ptr->call_free;
new_clone->call_malloc= ptr->call_malloc;
new_clone->call_realloc= ptr->call_realloc;
+ new_clone->get_key_failure= ptr->get_key_failure;
+ new_clone->delete_trigger= ptr->delete_trigger;
+
+ if (ptr->prefix_key[0] != 0)
+ {
+ strcpy(new_clone->prefix_key, ptr->prefix_key);
+ new_clone->prefix_key_length= ptr->prefix_key_length;
+ }
+
+ rc= run_distribution(new_clone);
+ if (rc != MEMCACHED_SUCCESS)
+ {
+ memcached_free(new_clone);
+
+ return NULL;
+ }
if (ptr->on_clone)
ptr->on_clone(ptr, new_clone);