Merge in trunk. Updates to manual/update to latest libtest.
[m6w6/libmemcached] / libmemcached / connect.cc
index dc9f0df01d5f5fc86a5a76927d0c7ce0d932b982..5e6c77f568a44b07c2dcc68ecb4e9163a2eee5fa 100644 (file)
@@ -49,18 +49,14 @@ static memcached_return_t connect_poll(memcached_server_st *ptr)
 
   size_t loop_max= 5;
 
-  while (--loop_max) // Should only loop on cases of ERESTART or EINTR
+  if (ptr->root->poll_timeout == 0)
   {
-    int error;
-    if (ptr->root->poll_timeout)
-    {
-      error= poll(fds, 1, ptr->root->connect_timeout);
-    }
-    else
-    {
-      error= 0;
-    }
+    return memcached_set_error(*ptr, MEMCACHED_TIMEOUT, MEMCACHED_AT);
+  }
 
+  while (--loop_max) // Should only loop on cases of ERESTART or EINTR
+  {
+    int error= poll(fds, 1, ptr->root->connect_timeout);
     switch (error)
     {
     case 1:
@@ -179,7 +175,7 @@ static memcached_return_t set_hostinfo(memcached_server_st *server)
   default:
     {
       WATCHPOINT_STRING(server->hostname);
-      WATCHPOINT_STRING(gai_strerror(e));
+      WATCHPOINT_STRING(gai_strerror(errcode));
       return memcached_set_error(*server, MEMCACHED_HOST_LOOKUP_FAILURE, MEMCACHED_AT, memcached_string_make_from_cstr(gai_strerror(errcode)));
     }
   }
@@ -486,7 +482,6 @@ static memcached_return_t network_connect(memcached_server_st *ptr)
       WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
       (void)closesocket(ptr->fd);
       ptr->fd= INVALID_SOCKET;
-      ptr->state= MEMCACHED_SERVER_STATE_NEW;
       continue;
 
     default: