request.message.header.request.keylen= htons((uint16_t)(key_length + memcached_array_size(ptr->_namespace)));
request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
if (verb == APPEND_OP || verb == PREPEND_OP)
+ {
send_length -= 8; /* append & prepend does not contain extras! */
+ }
else
{
request.message.header.request.extlen= 8;
request.message.header.request.extlen));
if (cas)
+ {
request.message.header.request.cas= memcached_htonll(cas);
+ }
flush= (bool) ((server->root->flags.buffer_requests && verb == SET_OP) ? 0 : 1);
struct libmemcached_io_vector_st vector[]=
{
- { send_length, request.bytes },
- { memcached_array_size(ptr->_namespace), memcached_array_string(ptr->_namespace) },
- { key_length, key },
- { value_length, value }
+ { request.bytes, send_length },
+ { memcached_array_string(ptr->_namespace), memcached_array_size(ptr->_namespace) },
+ { key, key_length },
+ { value, value_length }
};
/* write the header */
{
struct libmemcached_io_vector_st vector[]=
{
- { write_length, buffer },
- { value_length, value },
- { 2, "\r\n" }
+ { buffer, write_length },
+ { value, value_length },
+ { memcached_literal_param("\r\n") }
};
if (ptr->flags.buffer_requests && verb == SET_OP)