Cleanup around the timeout code.
[awesomized/libmemcached] / libmemcached / error.cc
index d23802542f299a113f1f1dc40b00b52df985c2e2..314f3623242898c735f49d90a561b220f7dcc557 100644 (file)
@@ -59,20 +59,21 @@ static void _set(org::libmemcached::Instance& server, Memcached& memc)
     memcached_error_free(server);
   }
 
-  if (memc.error_messages == NULL)
+  if (memc.error_messages)
   {
-    return;
-  }
+    if (memc.error_messages->rc == MEMCACHED_TIMEOUT)
+    {
+      server.io_wait_count.timeouts++;
+    }
 
-  memcached_error_t *error= libmemcached_xmalloc(&memc, memcached_error_t);
-  if (error == NULL) // Bad business if this happens
-  {
-    return;
+    memcached_error_t *error= libmemcached_xmalloc(&memc, memcached_error_t);
+    if (error)
+    {
+      memcpy(error, memc.error_messages, sizeof(memcached_error_t));
+      error->next= server.error_messages;
+      server.error_messages= error;
+    }
   }
-
-  memcpy(error, memc.error_messages, sizeof(memcached_error_t));
-  error->next= server.error_messages;
-  server.error_messages= error;
 }
 
 #if 0