MEMCACHED_BEHAVIOR_USER_DATA work. This allows a client application to store
[m6w6/libmemcached] / lib / memcached_hosts.c
index 3517d824698c4f359d9e188ff1734bc5e49614da..88c255a59d2997222b67f83107fa11cca545665f 100644 (file)
@@ -13,9 +13,6 @@ static void rebalance_wheel(memcached_st *ptr)
   unsigned int x;
   unsigned int y;
   unsigned int latch;
-  unsigned int range;
-
-  range= (MEMCACHED_WHEEL_SIZE / ptr->number_of_hosts);
 
   /* Seed the Wheel */
   memset(ptr->wheel, 0, sizeof(unsigned int) * MEMCACHED_WHEEL_SIZE);
@@ -38,7 +35,7 @@ static void host_reset(memcached_server_st *host, char *hostname, unsigned int p
                        memcached_connection type)
 {
   memset(host,  0, sizeof(memcached_server_st));
-  memcpy(host->hostname, hostname, strlen(hostname));
+  strncpy(host->hostname, hostname, MEMCACHED_MAX_HOST_LENGTH - 1);
   host->port= port;
   host->fd= -1;
   host->type= type;
@@ -148,8 +145,8 @@ memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
   unsigned int count;
   memcached_server_st *new_host_list;
 
-  if (!hostname)
-    return ptr;
+  if (hostname == NULL || error == NULL)
+    return NULL;
 
   if (!port)
     port= MEMCACHED_DEFAULT_PORT; 
@@ -186,8 +183,14 @@ unsigned int memcached_server_list_count(memcached_server_st *ptr)
 
 void memcached_server_list_free(memcached_server_st *ptr)
 {
+  unsigned int x;
+
   if (ptr == NULL)
     return;
 
+  for (x= 0; x < ptr->count; x++)
+    if (ptr[x].address_info)
+      freeaddrinfo(ptr[x].address_info);
+
   free(ptr);
 }