X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fresponse.cc;h=445b92338b29ca5d45d4c6988298dc1600860b99;hb=70f02eac18862c95ebe45e1b410904910281be6c;hp=35a9f74de40f1c32015fd41cb5f87893b9b58b54;hpb=06d0eaed5e274bc0ba93a3a61788a4bab480adf2;p=m6w6%2Flibmemcached diff --git a/libmemcached/response.cc b/libmemcached/response.cc index 35a9f74d..445b9233 100644 --- a/libmemcached/response.cc +++ b/libmemcached/response.cc @@ -46,11 +46,6 @@ static memcached_return_t textual_value_fetch(memcached_server_write_instance_st ssize_t read_length= 0; size_t value_length; - if (ptr->root->flags.use_udp) - { - return memcached_set_error(*ptr, MEMCACHED_NOT_SUPPORTED, MEMCACHED_AT); - } - WATCHPOINT_ASSERT(ptr->root); char *end_ptr= buffer + MEMCACHED_DEFAULT_COMMAND_SIZE; @@ -345,11 +340,13 @@ static memcached_return_t textual_read_one_response(memcached_server_write_insta if (auto_return_value == ULLONG_MAX and errno == ERANGE) { - return MEMCACHED_UNKNOWN_READ_FAILURE; + return memcached_set_error(*ptr, MEMCACHED_UNKNOWN_READ_FAILURE, MEMCACHED_AT, + memcached_literal_param("Numeric response was out of range")); } else if (errno == EINVAL) { - return MEMCACHED_UNKNOWN_READ_FAILURE; + return memcached_set_error(*ptr, MEMCACHED_UNKNOWN_READ_FAILURE, MEMCACHED_AT, + memcached_literal_param("Numeric response was out of range")); } numeric_value= uint64_t(auto_return_value); @@ -362,7 +359,8 @@ static memcached_return_t textual_read_one_response(memcached_server_write_insta break; } - return MEMCACHED_UNKNOWN_READ_FAILURE; + return memcached_set_error(*ptr, MEMCACHED_UNKNOWN_READ_FAILURE, MEMCACHED_AT, + memcached_literal_param("Could not determine response")); } static memcached_return_t binary_read_one_response(memcached_server_write_instance_st ptr, @@ -660,6 +658,11 @@ memcached_return_t memcached_read_one_response(memcached_server_write_instance_s memcached_result_st *result, uint64_t& numeric_value) { + if (memcached_is_udp(ptr->root)) + { + return memcached_set_error(*ptr, MEMCACHED_NOT_SUPPORTED, MEMCACHED_AT); + } + memcached_server_response_decrement(ptr); if (result == NULL) @@ -704,10 +707,15 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr, memcached_result_st *result, uint64_t& numeric_value) { + if (memcached_is_udp(ptr->root)) + { + return memcached_set_error(*ptr, MEMCACHED_NOT_SUPPORTED, MEMCACHED_AT); + } + /* We may have old commands in the buffer not set, first purge */ - if ((ptr->root->flags.no_block) && (memcached_is_processing_input(ptr->root) == false)) + if ((ptr->root->flags.no_block) and (memcached_is_processing_input(ptr->root) == false)) { - (void)memcached_io_write(ptr, NULL, 0, true); + (void)memcached_io_write(ptr); } /* @@ -715,7 +723,7 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr, * returned the last one. Purge all pending messages to ensure backwards * compatibility. */ - if (ptr->root->flags.binary_protocol == false) + if (memcached_is_binary(ptr->root) == false) { while (memcached_server_response_count(ptr) > 1) {