X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fauto.cc;h=c64ccda45067d79983f9ceae6e72df5804826822;hb=387c65c94bec4333da574771fc82a40deabbc3e2;hp=256a849aec049a3a88de039d5db6e38acf640bc9;hpb=70f02eac18862c95ebe45e1b410904910281be6c;p=m6w6%2Flibmemcached diff --git a/libmemcached/auto.cc b/libmemcached/auto.cc index 256a849a..c64ccda4 100644 --- a/libmemcached/auto.cc +++ b/libmemcached/auto.cc @@ -53,8 +53,9 @@ static memcached_return_t text_incr_decr(memcached_server_write_instance_st inst memcached_literal_param("snprintf(MEMCACHED_DEFAULT_COMMAND_SIZE)")); } - struct libmemcached_io_vector_st vector[]= + libmemcached_io_vector_st vector[]= { + { NULL, 0 }, { memcached_literal_param("incr ") }, { memcached_array_string(instance->root->_namespace), memcached_array_size(instance->root->_namespace) }, { key, key_length }, @@ -65,10 +66,10 @@ static memcached_return_t text_incr_decr(memcached_server_write_instance_st inst if (is_incr == false) { - vector[0].buffer= "decr "; + vector[1].buffer= "decr "; } - memcached_return_t rc= memcached_vdo(instance, vector, 6, true); + memcached_return_t rc= memcached_vdo(instance, vector, 7, true); if (reply == false) { @@ -119,15 +120,16 @@ static memcached_return_t binary_incr_decr(memcached_server_write_instance_st in request.message.body.initial= memcached_htonll(initial); request.message.body.expiration= htonl((uint32_t) expiration); - struct libmemcached_io_vector_st vector[]= + libmemcached_io_vector_st vector[]= { + { NULL, 0 }, { request.bytes, sizeof(request.bytes) }, { memcached_array_string(instance->root->_namespace), memcached_array_size(instance->root->_namespace) }, { key, key_length } }; memcached_return_t rc; - if (memcached_failed(rc= memcached_vdo(instance, vector, 3, true))) + if (memcached_failed(rc= memcached_vdo(instance, vector, 4, true))) { memcached_io_reset(instance); return MEMCACHED_WRITE_FAILURE; @@ -175,14 +177,9 @@ memcached_return_t memcached_increment_by_key(memcached_st *ptr, return rc; } - if (memcached_failed(rc= memcached_validate_key_length(key_length, ptr->flags.binary_protocol))) - { - return rc; - } - if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) { - return memcached_set_error(*ptr, rc, MEMCACHED_AT); + return rc; } uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); @@ -229,7 +226,7 @@ memcached_return_t memcached_decrement_by_key(memcached_st *ptr, if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) { - return memcached_set_error(*ptr, rc, MEMCACHED_AT); + return rc; } @@ -294,7 +291,7 @@ memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr, if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) { - return memcached_set_error(*ptr, rc, MEMCACHED_AT); + return rc; } uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); @@ -313,7 +310,8 @@ memcached_return_t memcached_increment_with_initial_by_key(memcached_st *ptr, } else { - rc= MEMCACHED_PROTOCOL_ERROR; + rc= memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, + memcached_literal_param("memcached_increment_with_initial_by_key() is not supported via the ASCII protocol")); } LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_END(); @@ -358,7 +356,7 @@ memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1))) { - return memcached_set_error(*ptr, rc, MEMCACHED_AT); + return rc; } uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length); @@ -378,7 +376,8 @@ memcached_return_t memcached_decrement_with_initial_by_key(memcached_st *ptr, } else { - rc= MEMCACHED_PROTOCOL_ERROR; + rc= memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, + memcached_literal_param("memcached_decrement_with_initial_by_key() is not supported via the ASCII protocol")); } LIBMEMCACHED_MEMCACHED_INCREMENT_WITH_INITIAL_END();