X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_response.c;h=01db41690978ba501b3254809f245d6a0ce0fc80;hb=24020ff57ce7b83038650c42952d3fe6d49fd417;hp=ea13bb151ce09065cd37f4d958206a7140d1465b;hpb=771170f522f2186b7fb0cde6052dbe37c1a9f1b7;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_response.c b/libmemcached/memcached_response.c index ea13bb15..01db4169 100644 --- a/libmemcached/memcached_response.c +++ b/libmemcached/memcached_response.c @@ -44,7 +44,7 @@ memcached_return memcached_response(memcached_server_st *ptr, memcached_result_st *result) { /* We may have old commands in the buffer not set, first purge */ - if (ptr->root->flags & MEM_NO_BLOCK) + if ((ptr->root->flags & MEM_NO_BLOCK) && (!ptr->root->processing_input)) (void)memcached_io_write(ptr, NULL, 0, 1); /* @@ -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);