diff --git a/memcached.c b/memcached.c index 057f5a6..2a363cc 100644 --- a/memcached.c +++ b/memcached.c @@ -4480,7 +4480,15 @@ static char* process_command(conn *c, char *command) { ascii_response_handler)) { conn_set_state(c, conn_closing); } else { - if (c->dynamic_buffer.buffer != NULL) { + if (c->dynamic_buffer.buffer && + !strncmp(c->dynamic_buffer.buffer, + "EWOULDBLOCK", sizeof("EWOULDBLOCK") - 1)) { + token_t *key_token = &tokens[KEY_TOKEN]; + + c->ewouldblock = true; + c->dynamic_buffer.offset = 0; + ret = key_token->value;; + } else if (c->dynamic_buffer.buffer != NULL) { write_and_free(c, c->dynamic_buffer.buffer, c->dynamic_buffer.offset); c->dynamic_buffer.buffer = NULL;