X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fserver_list.c;h=ca37f7f9a4b3f159e5f8747d50be33c4918a3698;hb=18ace40ddb7271f3f5e71965f74fe11d7754bd8f;hp=10b6a6b37cc8e9517ecdb0a1464c2a70fa355cdc;hpb=ba24508f51eed2af4f0192589801db2f945eac7b;p=awesomized%2Flibmemcached diff --git a/libmemcached/server_list.c b/libmemcached/server_list.c index 10b6a6b3..ca37f7f9 100644 --- a/libmemcached/server_list.c +++ b/libmemcached/server_list.c @@ -24,7 +24,9 @@ memcached_server_list_append_with_weight(memcached_server_list_st ptr, if (hostname == NULL || error == NULL) return NULL; - if (! port) + if (hostname[0] == '/') + port = 0; + else if (! port) port= MEMCACHED_DEFAULT_PORT; /* Increment count for hosts */ @@ -37,12 +39,16 @@ memcached_server_list_append_with_weight(memcached_server_list_st ptr, new_host_list= (memcached_server_write_instance_st)realloc(ptr, sizeof(memcached_server_st) * count); if (!new_host_list) { + ptr->cached_errno= errno; *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE; return NULL; } - /* TODO: Check return type */ - memcached_server_create_with(NULL, &new_host_list[count-1], hostname, port, weight, MEMCACHED_CONNECTION_TCP); + /* @todo Check return type */ + memcached_server_create_with(NULL, &new_host_list[count-1], hostname, port, weight, port ? MEMCACHED_CONNECTION_TCP : MEMCACHED_CONNECTION_UNIX_SOCKET); + + // Handset allocated since + new_host_list->options.is_allocated= true; /* Backwards compatibility hack */ memcached_servers_set_count(new_host_list, count); @@ -59,19 +65,19 @@ memcached_server_list_append(memcached_server_list_st ptr, return memcached_server_list_append_with_weight(ptr, hostname, port, 0, error); } -inline uint32_t memcached_server_list_count(const memcached_server_list_st self) +uint32_t memcached_server_list_count(const memcached_server_list_st self) { return (self == NULL) ? 0 : self->number_of_hosts; } -inline memcached_server_st *memcached_server_list(const memcached_st *self) +memcached_server_st *memcached_server_list(const memcached_st *self) { return self->servers; } -inline void memcached_server_list_set(memcached_st *self, memcached_server_st *list) +void memcached_server_list_set(memcached_st *self, memcached_server_st *list) { self->servers= list; }