X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fresponse.cc;h=67b0999f7f2afff67e462ec9c2c5a4894577aea8;hb=674c7578fa870c3b57e81e765c355ce98434b310;hp=4ba856489f81e9a16aa121a81843dbcc537e4bf9;hpb=cb08b8d0a35a78bde8a5b4caccab5dd2d789cca3;p=m6w6%2Flibmemcached diff --git a/libmemcached/response.cc b/libmemcached/response.cc index 4ba85648..67b0999f 100644 --- a/libmemcached/response.cc +++ b/libmemcached/response.cc @@ -38,7 +38,7 @@ #include #include -static memcached_return_t textual_value_fetch(memcached_server_write_instance_st instance, +static memcached_return_t textual_value_fetch(org::libmemcached::Instance* instance, char *buffer, memcached_result_st *result) { @@ -207,7 +207,7 @@ read_error: return MEMCACHED_PARTIAL_READ; } -static memcached_return_t textual_read_one_response(memcached_server_write_instance_st instance, +static memcached_return_t textual_read_one_response(org::libmemcached::Instance* instance, char *buffer, const size_t buffer_length, memcached_result_st *result) { @@ -470,7 +470,7 @@ static memcached_return_t textual_read_one_response(memcached_server_write_insta buffer, total_read); } -static memcached_return_t binary_read_one_response(memcached_server_write_instance_st instance, +static memcached_return_t binary_read_one_response(org::libmemcached::Instance* instance, char *buffer, const size_t buffer_length, memcached_result_st *result) { @@ -584,6 +584,21 @@ static memcached_return_t binary_read_one_response(memcached_server_write_instan break; case PROTOCOL_BINARY_CMD_SASL_LIST_MECHS: + { + if (header.response.keylen != 0 || bodylen + 1 > buffer_length) + { + return MEMCACHED_UNKNOWN_READ_FAILURE; + } + else + { + if ((rc= memcached_safe_read(instance, buffer, bodylen)) != MEMCACHED_SUCCESS) + { + return MEMCACHED_UNKNOWN_READ_FAILURE; + } + } + } + break; + case PROTOCOL_BINARY_CMD_VERSION: { char version_buffer[32]; // @todo document this number @@ -772,7 +787,7 @@ static memcached_return_t binary_read_one_response(memcached_server_write_instan return rc; } -static memcached_return_t _read_one_response(memcached_server_write_instance_st instance, +static memcached_return_t _read_one_response(org::libmemcached::Instance* instance, char *buffer, const size_t buffer_length, memcached_result_st *result) { @@ -802,7 +817,7 @@ static memcached_return_t _read_one_response(memcached_server_write_instance_st return rc; } -memcached_return_t memcached_read_one_response(memcached_server_write_instance_st instance, +memcached_return_t memcached_read_one_response(org::libmemcached::Instance* instance, memcached_result_st *result) { char buffer[SMALL_STRING_LEN]; @@ -816,7 +831,7 @@ memcached_return_t memcached_read_one_response(memcached_server_write_instance_s return _read_one_response(instance, buffer, sizeof(buffer), result); } -memcached_return_t memcached_response(memcached_server_write_instance_st instance, +memcached_return_t memcached_response(org::libmemcached::Instance* instance, memcached_result_st *result) { char buffer[1024]; @@ -824,7 +839,7 @@ memcached_return_t memcached_response(memcached_server_write_instance_st instanc return memcached_response(instance, buffer, sizeof(buffer), result); } -memcached_return_t memcached_response(memcached_server_write_instance_st instance, +memcached_return_t memcached_response(org::libmemcached::Instance* instance, char *buffer, size_t buffer_length, memcached_result_st *result) {