Initial support for the binary protocol
[awesomized/libmemcached] / libmemcached / memcached_quit.c
index 9749b848306cafaae7b15c693196dd728e0cedf0..a3d114b3e1984a9d23c5f768e425e8f061583627 100644 (file)
@@ -19,9 +19,18 @@ void memcached_quit_server(memcached_server_st *ptr, uint8_t io_death)
       ssize_t read_length;
       char buffer[MEMCACHED_MAX_BUFFER];
 
-      rc= memcached_do(ptr, "quit\r\n", 6, 1);
-      WATCHPOINT_ASSERT(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_FETCH_NOTFINISHED);
+      if (ptr->root->flags & MEM_BINARY_PROTOCOL) 
+      {
+        protocol_binary_request_quit request = {0};
+        request.message.header.request.magic = PROTOCOL_BINARY_REQ;
+        request.message.header.request.opcode = PROTOCOL_BINARY_CMD_QUIT;
+        request.message.header.request.datatype = PROTOCOL_BINARY_RAW_BYTES;
+        rc= memcached_do(ptr, request.bytes, sizeof(request.bytes), 1);
+      } else 
+        rc= memcached_do(ptr, "quit\r\n", 6, 1);
 
+      WATCHPOINT_ASSERT(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_FETCH_NOTFINISHED);
+      
       /* read until socket is closed, or there is an error
        * closing the socket before all data is read
        * results in server throwing away all data which is