fix typo [ci skip]
[awesomized/libmemcached] / libmemcached / server.hpp
index 0c6ac798f35a0c7a59695be5a4f60dd77331c10e..582356d27bffe7cf5a79567845bdb3524e5f03aa 100644 (file)
@@ -76,22 +76,31 @@ static inline void memcached_mark_server_for_timeout(memcached_instance_st* serv
 {
   if (server->state != MEMCACHED_SERVER_STATE_IN_TIMEOUT)
   {
-    struct timeval next_time;
-    if (gettimeofday(&next_time, NULL) == 0)
+    if (server->server_timeout_counter_query_id != server->root->query_id)
     {
-      server->next_retry= next_time.tv_sec +server->root->retry_timeout;
-    }
-    else
-    {
-      server->next_retry= 1; // Setting the value to 1 causes the timeout to occur immediatly
+      server->server_timeout_counter++;
+      server->server_timeout_counter_query_id= server->root->query_id;
     }
 
-    server->state= MEMCACHED_SERVER_STATE_IN_TIMEOUT;
-    if (server->server_failure_counter_query_id != server->root->query_id)
+    if (server->server_timeout_counter >= server->root->server_timeout_limit)
     {
-      server->server_failure_counter++;
-      server->server_failure_counter_query_id= server->root->query_id;
+      struct timeval next_time;
+      if (gettimeofday(&next_time, NULL) == 0)
+      {
+        server->next_retry= next_time.tv_sec +server->root->retry_timeout;
+      }
+      else
+      {
+        server->next_retry= 1; // Setting the value to 1 causes the timeout to occur immediately
+      }
+
+      server->state= MEMCACHED_SERVER_STATE_IN_TIMEOUT;
+      if (server->server_failure_counter_query_id != server->root->query_id)
+      {
+        server->server_failure_counter++;
+        server->server_failure_counter_query_id= server->root->query_id;
+      }
+      set_last_disconnected_host(server);
     }
-    set_last_disconnected_host(server);
   }
 }