X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=libmemcached%2Fconnect.cc;h=8727b289d3831b5ed29dca65fb7654ffd548774f;hb=a4f7c3b9413014291d0ca549f32455b3be10a6c0;hp=ecff63865c5904a4213e5c53e866b61acb9d07f2;hpb=c5c5f2799a24eac8df5e11f447b48e031299579a;p=awesomized%2Flibmemcached diff --git a/libmemcached/connect.cc b/libmemcached/connect.cc index ecff6386..8727b289 100644 --- a/libmemcached/connect.cc +++ b/libmemcached/connect.cc @@ -515,11 +515,20 @@ static memcached_return_t network_connect(memcached_server_st *ptr) struct timeval next_time; if (gettimeofday(&next_time, NULL) == 0) + { ptr->next_retry= next_time.tv_sec + ptr->root->retry_timeout; + } + } + + if (memcached_has_current_error(*ptr)) + { + return memcached_server_error_return(ptr); } - if (timeout_error_occured) + if (timeout_error_occured and ptr->state < MEMCACHED_SERVER_STATE_IN_PROGRESS) + { return memcached_set_error(*ptr, MEMCACHED_TIMEOUT, MEMCACHED_AT); + } return memcached_set_error(*ptr, MEMCACHED_CONNECTION_FAILURE, MEMCACHED_AT); /* The last error should be from connect() */ } @@ -617,6 +626,11 @@ memcached_return_t memcached_connect(memcached_server_write_instance_st ptr) ptr->server_failure_counter= 0; ptr->next_retry= 0; } + else if (memcached_has_current_error(*ptr)) + { + ptr->server_failure_counter++; + set_last_disconnected_host(ptr); + } else { memcached_set_error(*ptr, rc, MEMCACHED_AT);