Merge Lee
[awesomized/libmemcached] / libmemcached / io.c
index 5102d95b7b118cda6aae0e8086748395ddcb37d5..bca5ea4bb2f0d1a86b900634182789bf5c092705 100644 (file)
@@ -127,20 +127,21 @@ static bool process_input_buffer(memcached_server_instance_st *ptr)
    */
     memcached_callback_st cb= *ptr->root->callbacks;
 
-    ptr->root->options.is_processing_input= true;
+    memcached_set_processing_input((memcached_st *)ptr->root, true);
 
     char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
     memcached_return_t error;
+    memcached_st *root= (memcached_st *)ptr->root;
     error= memcached_response(ptr, buffer, sizeof(buffer),
-                              &ptr->root->result);
+                              &root->result);
 
-    ptr->root->options.is_processing_input = false;
+    memcached_set_processing_input(root, false);
 
     if (error == MEMCACHED_SUCCESS)
     {
       for (unsigned int x= 0; x < cb.number_of_callback; x++)
       {
-        error= (*cb.callback[x])(ptr->root, &ptr->root->result, cb.context);
+        error= (*cb.callback[x])(ptr->root, &root->result, cb.context);
         if (error != MEMCACHED_SUCCESS)
           break;
       }
@@ -160,8 +161,11 @@ static inline void memcached_io_cork_push(memcached_server_st *ptr)
   if (ptr->root->flags.cork == false || ptr->state.is_corked)
     return;
 
-  ptr->state.is_corked=
-    cork_switch(ptr, true) == MEM_TRUE ? true : false;
+  int enable= 1;
+  int err= setsockopt(ptr->fd, IPPROTO_TCP, CORK,
+                      &enable, (socklen_t)sizeof(int));
+  if (! err)
+    ptr->state.is_corked= true;
 
   WATCHPOINT_ASSERT(ptr->state.is_corked == true);
 #else
@@ -175,8 +179,11 @@ static inline void memcached_io_cork_pop(memcached_server_st *ptr)
   if (ptr->root->flags.cork == false || ptr->state.is_corked == false)
     return;
 
-  ptr->state.is_corked=
-    cork_switch(ptr, false) == MEM_FALSE ? false : true;
+  int enable= 0;
+  int err= setsockopt(ptr->fd, IPPROTO_TCP, CORK,
+                      &enable, (socklen_t)sizeof(int));
+  if (! err)
+    ptr->state.is_corked= false;
 
   WATCHPOINT_ASSERT(ptr->state.is_corked == false);
 #else