X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_get.c;h=a18854506d4743b9fb7d404786adbd16434c34e1;hb=dd3711e0fb5dc8ea96253ca28db3d1fe3067a920;hp=1b53b11973cad78f1d7934bd1d17cdda31498d3c;hpb=7cbcd28d0e2958df0572d965996a65e22b18e66a;p=m6w6%2Flibmemcached diff --git a/lib/memcached_get.c b/lib/memcached_get.c index 1b53b119..a1885450 100644 --- a/lib/memcached_get.c +++ b/lib/memcached_get.c @@ -8,26 +8,29 @@ 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; + *value_length= 0; *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); + (int)key_length, key); if (*error != MEMCACHED_SUCCESS) return NULL; - if ((send(ptr->fd, buffer, send_length, 0) == -1)) + if ((write(ptr->hosts[server_key].fd, buffer, send_length) == -1)) { - fprintf(stderr, "failed fetch on %.*s TCP\n", key_length+1, key); *error= MEMCACHED_WRITE_FAILURE; return NULL; } 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) { @@ -79,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);