X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_storage.c;h=443389e029a583f03418a73f35695a39bef77f4c;hb=8a86b578acc594d37a8638e3e0afba1286c4b6ca;hp=4c36edc6dfc8ff2b8af9222410eef0b4aba3fab3;hpb=b1d5d8be2237f04ccc99939399ebe7efad3f684e;p=m6w6%2Flibmemcached diff --git a/lib/memcached_storage.c b/lib/memcached_storage.c index 4c36edc6..443389e0 100644 --- a/lib/memcached_storage.c +++ b/lib/memcached_storage.c @@ -20,7 +20,7 @@ typedef enum { } memcached_storage_action; /* Inline this */ -char *storage_op_string(memcached_storage_action verb) +static char *storage_op_string(memcached_storage_action verb) { switch (verb) { @@ -66,6 +66,9 @@ static inline memcached_return memcached_send(memcached_st *ptr, if (ptr->number_of_hosts == 0) return MEMCACHED_NO_SERVERS; + if ((ptr->flags & MEM_VERIFY_KEY) && (memcachd_key_test(&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED)) + return MEMCACHED_BAD_KEY_PROVIDED; + server_key= memcached_generate_hash(ptr, master_key, master_key_length); if (cas) @@ -86,31 +89,31 @@ static inline memcached_return memcached_send(memcached_st *ptr, goto error; } - rc= memcached_do(ptr, server_key, buffer, write_length, 0); + rc= memcached_do(&ptr->hosts[server_key], buffer, write_length, 0); if (rc != MEMCACHED_SUCCESS) goto error; - if ((sent_length= memcached_io_write(ptr, server_key, value, value_length, 0)) == -1) + if ((sent_length= memcached_io_write(&ptr->hosts[server_key], value, value_length, 0)) == -1) { rc= MEMCACHED_WRITE_FAILURE; goto error; } - if ((ptr->flags & MEM_NO_BLOCK) && verb == SET_OP) + if ((ptr->flags & MEM_BUFFER_REQUESTS) && verb == SET_OP) to_write= 0; else to_write= 1; - if ((sent_length= memcached_io_write(ptr, server_key, "\r\n", 2, to_write)) == -1) + if ((sent_length= memcached_io_write(&ptr->hosts[server_key], "\r\n", 2, to_write)) == -1) { rc= MEMCACHED_WRITE_FAILURE; goto error; } if (to_write == 0) - rc= MEMCACHED_SUCCESS; - else - rc= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL, server_key); + return MEMCACHED_BUFFERED; + + rc= memcached_response(&ptr->hosts[server_key], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL); if (rc == MEMCACHED_STORED) return MEMCACHED_SUCCESS; @@ -118,7 +121,7 @@ static inline memcached_return memcached_send(memcached_st *ptr, return rc; error: - memcached_io_reset(ptr, server_key); + memcached_io_reset(&ptr->hosts[server_key]); return rc; }