#include "common.h"
#include "memcached_io.h"
-static memcached_return textual_read_one_response(memcached_server_st *ptr,
+static memcached_return_t textual_read_one_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result);
-static memcached_return binary_read_one_response(memcached_server_st *ptr,
+static memcached_return_t binary_read_one_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result);
-memcached_return memcached_read_one_response(memcached_server_st *ptr,
+memcached_return_t memcached_read_one_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result)
{
if (result == NULL)
result = &ptr->root->result;
- memcached_return rc;
- if (ptr->root->flags & MEM_BINARY_PROTOCOL)
+ memcached_return_t rc;
+ if (ptr->root->flags.binary_protocol)
rc= binary_read_one_response(ptr, buffer, buffer_length, result);
else
rc= textual_read_one_response(ptr, buffer, buffer_length, result);
return rc;
}
-memcached_return memcached_response(memcached_server_st *ptr,
+memcached_return_t memcached_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
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.no_block)
(void)memcached_io_write(ptr, NULL, 0, 1);
/*
* returned the last one. Purge all pending messages to ensure backwards
* compatibility.
*/
- if ((ptr->root->flags & MEM_BINARY_PROTOCOL) == 0)
+ if (ptr->root->flags.binary_protocol == false)
while (memcached_server_response_count(ptr) > 1)
{
- memcached_return rc= memcached_read_one_response(ptr, buffer, buffer_length, result);
+ memcached_return_t rc= memcached_read_one_response(ptr, buffer, buffer_length, result);
unlikely (rc != MEMCACHED_END &&
rc != MEMCACHED_STORED &&
return memcached_read_one_response(ptr, buffer, buffer_length, result);
}
-static memcached_return textual_value_fetch(memcached_server_st *ptr,
+static memcached_return_t textual_value_fetch(memcached_server_st *ptr,
char *buffer,
memcached_result_st *result)
{
- memcached_return rc= MEMCACHED_SUCCESS;
+ memcached_return_t rc= MEMCACHED_SUCCESS;
char *string_ptr;
char *end_ptr;
char *next_ptr;
size_t to_read;
char *value_ptr;
- if (ptr->root->flags & MEM_USE_UDP)
+ if (ptr->root->flags.use_udp)
return MEMCACHED_NOT_SUPPORTED;
WATCHPOINT_ASSERT(ptr->root);
*/
to_read= (value_length) + 2;
ssize_t read_length= 0;
- memcached_return rrc= memcached_io_read(ptr, value_ptr, to_read, &read_length);
+ memcached_return_t rrc= memcached_io_read(ptr, value_ptr, to_read, &read_length);
if (rrc != MEMCACHED_SUCCESS)
return rrc;
return MEMCACHED_PARTIAL_READ;
}
-static memcached_return textual_read_one_response(memcached_server_st *ptr,
+static memcached_return_t textual_read_one_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result)
{
- memcached_return rc= memcached_io_readline(ptr, buffer, buffer_length);
+ memcached_return_t rc= memcached_io_readline(ptr, buffer, buffer_length);
if (rc != MEMCACHED_SUCCESS)
return rc;
return memcached_string_length(sptr);
}
-static memcached_return binary_read_one_response(memcached_server_st *ptr,
+static memcached_return_t binary_read_one_response(memcached_server_st *ptr,
char *buffer, size_t buffer_length,
memcached_result_st *result)
{
{
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);
}
}
- memcached_return rc= MEMCACHED_SUCCESS;
+ memcached_return_t rc= MEMCACHED_SUCCESS;
unlikely(header.response.status != 0)
switch (header.response.status)
{