fix a logic error on memcached_server_remove which will cause double free problem
[awesomized/libmemcached] / libmemcached / memcached_connect.c
index d58b354f38b21ca9221a78570758bc041535c726..de69e4465ef8c68e34d608f4bace32d4d0cd5042 100644 (file)
@@ -34,7 +34,10 @@ static memcached_return set_hostinfo(memcached_server_st *server)
   }
 
   if (server->address_info)
+  {
     freeaddrinfo(server->address_info);
+    server->address_info= NULL;
+  }
   server->address_info= ai;
 
   return MEMCACHED_SUCCESS;
@@ -177,6 +180,7 @@ static memcached_return network_connect(memcached_server_st *ptr)
       if (ptr->server_failure_counter >= ptr->root->server_failure_limit) 
       {
           memcached_server_remove(ptr);
+          return MEMCACHED_FAILURE;
       }
     }
     /* Old connection junk still is in the structure */