X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=libmemcached%2Fmemcached.c;h=a15cd2f2824adf60bf00d091f8998e9973b849f9;hb=7e0ffed050b62cc5dcf5d16c148185074bfd7d50;hp=accf24b717dc073dc530263445c784ea0896b1ba;hpb=c4b0fc53b348067c6a6e5eaf335869393cf347bf;p=m6w6%2Flibmemcached diff --git a/libmemcached/memcached.c b/libmemcached/memcached.c index accf24b7..a15cd2f2 100644 --- a/libmemcached/memcached.c +++ b/libmemcached/memcached.c @@ -15,7 +15,7 @@ memcached_st *memcached_create(memcached_st *ptr) return NULL; /* MEMCACHED_MEMORY_ALLOCATION_FAILURE */ memset(ptr, 0, sizeof(memcached_st)); - ptr->is_allocated= MEMCACHED_ALLOCATED; + ptr->is_allocated= true; } else { @@ -28,8 +28,9 @@ memcached_st *memcached_create(memcached_st *ptr) ptr->retry_timeout= 0; ptr->distribution= MEMCACHED_DISTRIBUTION_MODULA; - ptr->io_msg_watermark = 500; - ptr->io_bytes_watermark = 65 * 1024; + /* TODO, Document why we picked these defaults */ + ptr->io_msg_watermark= 500; + ptr->io_bytes_watermark= 65 * 1024; return ptr; } @@ -52,7 +53,7 @@ void memcached_free(memcached_st *ptr) free(ptr->continuum); } - if (ptr->is_allocated == MEMCACHED_ALLOCATED) + if (ptr->is_allocated) { if (ptr->call_free) ptr->call_free(ptr, ptr); @@ -60,7 +61,7 @@ void memcached_free(memcached_st *ptr) free(ptr); } else - ptr->is_allocated= MEMCACHED_USED; + memset(ptr, 0, sizeof(memcached_st)); } /* @@ -76,7 +77,7 @@ memcached_st *memcached_clone(memcached_st *clone, memcached_st *source) if (source == NULL) return memcached_create(clone); - if (clone && clone->is_allocated == MEMCACHED_USED) + if (clone && clone->is_allocated) { return NULL; } @@ -86,17 +87,6 @@ memcached_st *memcached_clone(memcached_st *clone, memcached_st *source) if (new_clone == NULL) return NULL; - if (source->hosts) - rc= memcached_server_push(new_clone, source->hosts); - - if (rc != MEMCACHED_SUCCESS) - { - memcached_free(new_clone); - - return NULL; - } - - new_clone->flags= source->flags; new_clone->send_size= source->send_size; new_clone->recv_size= source->recv_size; @@ -119,6 +109,17 @@ memcached_st *memcached_clone(memcached_st *clone, memcached_st *source) new_clone->get_key_failure= source->get_key_failure; new_clone->delete_trigger= source->delete_trigger; + if (source->hosts) + rc= memcached_server_push(new_clone, source->hosts); + + if (rc != MEMCACHED_SUCCESS) + { + memcached_free(new_clone); + + return NULL; + } + + if (source->prefix_key[0] != 0) { strcpy(new_clone->prefix_key, source->prefix_key);