X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmemcached_storage.c;h=3df4913ad10fb23cb06d9b61a9c0ef4246bd3ec6;hb=8ed85f5e5e82146dcd869c5f260252e92bad2662;hp=a40296dffca76384d2d8e6cc24e675190adb4a8a;hpb=1f34771f7ba527e3afb675f1a448d6c5ab66596b;p=awesomized%2Flibmemcached diff --git a/lib/memcached_storage.c b/lib/memcached_storage.c index a40296df..3df4913a 100644 --- a/lib/memcached_storage.c +++ b/lib/memcached_storage.c @@ -19,13 +19,19 @@ static memcached_return memcached_send(memcached_st *ptr, size_t send_length; memcached_return rc; char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; + unsigned int server_key; rc= memcached_connect(ptr); + if (rc != MEMCACHED_SUCCESS) + return rc; + + server_key= memcached_generate_hash(key, key_length) % ptr->number_of_hosts; + send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, "%s %.*s %u %u %u\r\n", verb, key_length, key, flags, expiration, value_length); - if ((send(ptr->fd, buffer, send_length, 0) == -1)) + if ((send(ptr->hosts[server_key].fd, buffer, send_length, 0) == -1)) { fprintf(stderr, "failed set on %.*s TCP\n", key_length+1, key); @@ -35,14 +41,14 @@ static memcached_return memcached_send(memcached_st *ptr, send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, "%.*s\r\n", value_length, value); - if ((send(ptr->fd, buffer, send_length, 0) == -1)) + if ((send(ptr->hosts[server_key].fd, buffer, send_length, 0) == -1)) { fprintf(stderr, "failed set on %.*s TCP\n", key_length+1, key); return MEMCACHED_WRITE_FAILURE; } - send_length= read(ptr->fd, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE); + send_length= read(ptr->hosts[server_key].fd, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE); if (send_length && buffer[0] == 'S') /* STORED */ return MEMCACHED_SUCCESS;