X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_response.c;h=fe13ddd53f8045efabdfb51e8fd4fbf583f21555;hb=94cd1cbfb3fe6d0c446be9151ae9b15f775b6511;hp=f617f27f9a14379b8c6b4276e2b7318ead302a69;hpb=49e9e4b85ebfe5f5cbe6f8aea4b6f3a2417a465b;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_response.c b/libmemcached/memcached_response.c index f617f27f..fe13ddd5 100644 --- a/libmemcached/memcached_response.c +++ b/libmemcached/memcached_response.c @@ -356,8 +356,14 @@ static memcached_return binary_read_one_response(memcached_server_st *ptr, { switch (header.response.opcode) { - case PROTOCOL_BINARY_CMD_GETK: case PROTOCOL_BINARY_CMD_GETKQ: + /* + * We didn't increment the response counter for the GETKQ packet + * (only the final NOOP), so we need to increment the counter again. + */ + memcached_server_response_increment(ptr); + /* FALLTHROUGH */ + case PROTOCOL_BINARY_CMD_GETK: { uint16_t keylen= header.response.keylen; memcached_result_reset(result); @@ -493,11 +499,17 @@ static memcached_return binary_read_one_response(memcached_server_st *ptr, case PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS: rc= MEMCACHED_DATA_EXISTS; break; + case PROTOCOL_BINARY_RESPONSE_NOT_STORED: + rc= MEMCACHED_NOTSTORED; + break; case PROTOCOL_BINARY_RESPONSE_E2BIG: + rc= MEMCACHED_E2BIG; + break; + case PROTOCOL_BINARY_RESPONSE_ENOMEM: + rc= MEMCACHED_MEMORY_ALLOCATION_FAILURE; + break; case PROTOCOL_BINARY_RESPONSE_EINVAL: - case PROTOCOL_BINARY_RESPONSE_NOT_STORED: case PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND: - case PROTOCOL_BINARY_RESPONSE_ENOMEM: default: /* @todo fix the error mappings */ rc= MEMCACHED_PROTOCOL_ERROR;