projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Bug #442914: 'delete noreply' may hang the client
[m6w6/libmemcached]
/
libmemcached
/
memcached_response.c
diff --git
a/libmemcached/memcached_response.c
b/libmemcached/memcached_response.c
index f617f27f9a14379b8c6b4276e2b7318ead302a69..fe13ddd53f8045efabdfb51e8fd4fbf583f21555 100644
(file)
--- 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)
{
{
switch (header.response.opcode)
{
- case PROTOCOL_BINARY_CMD_GETK:
case PROTOCOL_BINARY_CMD_GETKQ:
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);
{
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_KEY_EEXISTS:
rc= MEMCACHED_DATA_EXISTS;
break;
+ case PROTOCOL_BINARY_RESPONSE_NOT_STORED:
+ rc= MEMCACHED_NOTSTORED;
+ break;
case PROTOCOL_BINARY_RESPONSE_E2BIG:
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_EINVAL:
- case PROTOCOL_BINARY_RESPONSE_NOT_STORED:
case PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND:
case PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND:
- case PROTOCOL_BINARY_RESPONSE_ENOMEM:
default:
/* @todo fix the error mappings */
rc= MEMCACHED_PROTOCOL_ERROR;
default:
/* @todo fix the error mappings */
rc= MEMCACHED_PROTOCOL_ERROR;