#include <memcached.h>
#include "common.h"
+static void host_reset(memcached_server_st *host, char *new_hostname, unsigned int port)
+{
+ host->stack_responses= 0;
+ host->cursor_active= 0;
+ host->hostname= new_hostname;
+ host->port= port;
+ host->fd= -1;
+}
+
memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list)
{
unsigned int x;
ptr->hosts[ptr->number_of_hosts].hostname= strdup(list[x].hostname);
ptr->hosts[ptr->number_of_hosts].port= list[x].port;
ptr->hosts[ptr->number_of_hosts].fd= list[x].fd;
+ ptr->hosts[ptr->number_of_hosts].stack_responses= list[x].stack_responses;
+ ptr->hosts[ptr->number_of_hosts].cursor_active= list[x].cursor_active;
ptr->number_of_hosts++;
}
- memset(&ptr->hosts[ptr->number_of_hosts], 0, sizeof(memcached_server_st));
+ host_reset(&ptr->hosts[ptr->number_of_hosts], NULL, 0);
return MEMCACHED_SUCCESS;
}
sizeof(memcached_server_st) * (ptr->number_of_hosts+1));
if (!new_host_list)
return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
- memset(&new_host_list[ptr->number_of_hosts], 0, sizeof(memcached_server_st));
+ host_reset(&new_host_list[ptr->number_of_hosts], NULL, 0);
}
else
{
(memcached_server_st *)malloc(sizeof(memcached_server_st) * 2);
if (!new_host_list)
return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
- memset(new_host_list, 0, sizeof(memcached_server_st) * 2);
+ host_reset(&new_host_list[0], NULL, 0);
+ host_reset(&new_host_list[1], NULL, 0);
}
ptr->hosts= new_host_list;
memset(new_hostname, 0, strlen(hostname)+1);
memcpy(new_hostname, hostname, strlen(hostname));
- ptr->hosts[ptr->number_of_hosts].hostname= new_hostname;
- ptr->hosts[ptr->number_of_hosts].port= port;
- ptr->hosts[ptr->number_of_hosts].fd= -1;
+ host_reset(&ptr->hosts[ptr->number_of_hosts], new_hostname, port);
ptr->number_of_hosts++;
LIBMEMCACHED_MEMCACHED_SERVER_ADD_END();
new_host_list= (memcached_server_st *)realloc(ptr, sizeof(memcached_server_st) * count);
if (!new_host_list)
goto error;
- memset(&new_host_list[count-1], 0, sizeof(memcached_server_st));
+ host_reset(&new_host_list[count-1], NULL, 0);
}
else
{
new_host_list= (memcached_server_st *)malloc(sizeof(memcached_server_st) * count);
if (!new_host_list)
goto error;
- memset(new_host_list, 0, sizeof(memcached_server_st) * 2);
+ host_reset(&new_host_list[0], NULL, 0);
+ host_reset(&new_host_list[1], NULL, 0);
}
new_hostname= strdup(hostname);
if (!new_hostname)
goto error;
- new_host_list[count-2].hostname= new_hostname;
- new_host_list[count-2].port= port;
- new_host_list[count-2].fd= -1;
+ host_reset(&new_host_list[count-2], new_hostname, port);
*error= MEMCACHED_SUCCESS;
return new_host_list;
unsigned int x;
for (x= 0; ptr[x].hostname; x++)
- {
- if (ptr[x].fd > 0)
- close(ptr[x].fd);
-
free(ptr[x].hostname);
- }
free(ptr);
}