Fix for Linux system for async protocol.
[m6w6/libmemcached] / lib / memcached_do.c
1 #include "common.h"
2
3 memcached_return memcached_do(memcached_st *ptr, unsigned int server_key, char *command,
4 size_t command_length, char with_flush)
5 {
6 memcached_return rc;
7 ssize_t sent_length;
8
9 WATCHPOINT_ASSERT(command_length);
10 WATCHPOINT_ASSERT(command);
11
12 if (ptr->hosts[server_key].cursor_active)
13 {
14 memcached_return rc;
15 rc= memcached_finish_server(ptr, server_key);
16 ptr->hosts[server_key].cursor_active= 0;
17 }
18
19 if ((rc= memcached_connect(ptr, server_key)) != MEMCACHED_SUCCESS)
20 return rc;
21
22 sent_length= memcached_io_write(ptr, server_key, command, command_length, with_flush);
23
24 if (sent_length == -1 || sent_length != command_length)
25 {
26 memcached_quit_server(ptr, server_key);
27 rc= MEMCACHED_WRITE_FAILURE;
28 }
29
30 return rc;
31 }