X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fdelete.c;h=324e3c2c87d77256f52dec5cdea8ca80412552b5;hb=814d911f182e08fb4401df649270f5fff2e8ed4c;hp=bbdd2527bf7945b686242b3d84c5dc1e90dbb783;hpb=7c7750f02368b570353ea109f23a0ea26d226e02;p=m6w6%2Flibmemcached diff --git a/libmemcached/delete.c b/libmemcached/delete.c index bbdd2527..324e3c2c 100644 --- a/libmemcached/delete.c +++ b/libmemcached/delete.c @@ -32,7 +32,7 @@ memcached_return_t memcached_delete_by_key(memcached_st *ptr, unlikely (rc != MEMCACHED_SUCCESS) return rc; - unlikely (ptr->hosts == NULL || ptr->number_of_hosts == 0) + unlikely (ptr->hosts == NULL || memcached_server_count(ptr) == 0) return MEMCACHED_NO_SERVERS; server_key= memcached_generate_hash(ptr, master_key, master_key_length); @@ -59,6 +59,14 @@ memcached_return_t memcached_delete_by_key(memcached_st *ptr, } else { + /* ensure that we are connected, otherwise we might bump the + * command counter before connection */ + if ((rc= memcached_connect(&ptr->hosts[server_key])) != MEMCACHED_SUCCESS) + { + WATCHPOINT_ERROR(rc); + return rc; + } + if (ptr->hosts[server_key].minor_version == 0) { if (no_reply || !to_write) @@ -168,7 +176,7 @@ static inline memcached_return_t binary_delete(memcached_st *ptr, for (uint32_t x= 0; x < ptr->number_of_replicas; ++x) { ++server_key; - if (server_key == ptr->number_of_hosts) + if (server_key == memcached_server_count(ptr)) server_key= 0; memcached_server_st* server= &ptr->hosts[server_key];