X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_get.c;h=2dcdcccdfd77a4143b340a4ef75a9f499f54ba7f;hb=3efc2e6fb6a17e8eb52dbe3590a5dcb063b30537;hp=ffecba29b9a45535260dae71d4cc94f4fb91ce1b;hpb=1f34771f7ba527e3afb675f1a448d6c5ab66596b;p=awesomized%2Flibmemcached diff --git a/lib/memcached_get.c b/lib/memcached_get.c index ffecba29..2dcdcccd 100644 --- a/lib/memcached_get.c +++ b/lib/memcached_get.c @@ -8,15 +8,21 @@ char *memcached_get(memcached_st *ptr, char *key, size_t key_length, size_t send_length; char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; char *string_ptr; + unsigned int server_key; *error= memcached_connect(ptr); + if (*error != MEMCACHED_SUCCESS) + return NULL; + + server_key= memcached_generate_hash(key, key_length) % ptr->number_of_hosts; + send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, "get %.*s\r\n", key_length, key); if (*error != MEMCACHED_SUCCESS) return NULL; - if ((send(ptr->fd, buffer, send_length, 0) == -1)) + if ((send(ptr->hosts[server_key].fd, buffer, send_length, 0) == -1)) { fprintf(stderr, "failed fetch on %.*s TCP\n", key_length+1, key); *error= MEMCACHED_WRITE_FAILURE; @@ -24,7 +30,7 @@ char *memcached_get(memcached_st *ptr, char *key, size_t key_length, } memset(buffer, 0, MEMCACHED_DEFAULT_COMMAND_SIZE); - *error= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE); + *error= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, server_key); if (*error == MEMCACHED_SUCCESS) { @@ -76,7 +82,7 @@ char *memcached_get(memcached_st *ptr, char *key, size_t key_length, need_to_read= *value_length - need_to_copy; - read_length= read(ptr->fd, pos_ptr, need_to_read); + read_length= read(ptr->hosts[server_key].fd, pos_ptr, need_to_read); if (read_length != need_to_read) { free(value);