projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Cleanup warnings/found issue in store by key functions.
[awesomized/libmemcached]
/
libmemcached
/
memcached_connect.c
diff --git
a/libmemcached/memcached_connect.c
b/libmemcached/memcached_connect.c
index 33a8a521924ca32faadf5cbcb00a9ea625ecbee6..54316c59f90e677eae6752a7bedc45b318adfca0 100644
(file)
--- a/
libmemcached/memcached_connect.c
+++ b/
libmemcached/memcached_connect.c
@@
-13,7
+13,7
@@
static memcached_return set_hostinfo(memcached_server_st *server)
memset(&hints, 0, sizeof(hints));
memset(&hints, 0, sizeof(hints));
- hints.ai_family= AF_INET;
+
//
hints.ai_family= AF_INET;
if (server->type == MEMCACHED_CONNECTION_UDP)
{
hints.ai_protocol= IPPROTO_UDP;
if (server->type == MEMCACHED_CONNECTION_UDP)
{
hints.ai_protocol= IPPROTO_UDP;
@@
-34,7
+34,10
@@
static memcached_return set_hostinfo(memcached_server_st *server)
}
if (server->address_info)
}
if (server->address_info)
+ {
freeaddrinfo(server->address_info);
freeaddrinfo(server->address_info);
+ server->address_info= NULL;
+ }
server->address_info= ai;
return MEMCACHED_SUCCESS;
server->address_info= ai;
return MEMCACHED_SUCCESS;
@@
-172,6
+175,14
@@
static memcached_return network_connect(memcached_server_st *ptr)
{
struct addrinfo *use;
{
struct addrinfo *use;
+ if (ptr->root->server_failure_limit != 0)
+ {
+ 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 */
WATCHPOINT_ASSERT(ptr->cursor_active == 0);
/* Old connection junk still is in the structure */
WATCHPOINT_ASSERT(ptr->cursor_active == 0);
@@
-224,7
+235,7
@@
test_connect:
{
goto handle_retry;
}
{
goto handle_retry;
}
- else if (error != 1)
+ else if (error != 1
|| fds[0].revents & POLLERR
)
{
ptr->cached_errno= errno;
WATCHPOINT_ERRNO(ptr->cached_errno);
{
ptr->cached_errno= errno;
WATCHPOINT_ERRNO(ptr->cached_errno);
@@
-237,6
+248,14
@@
test_connect:
ptr->address_info= NULL;
}
ptr->address_info= NULL;
}
+ if (ptr->root->retry_timeout)
+ {
+ struct timeval next_time;
+
+ gettimeofday(&next_time, NULL);
+ ptr->next_retry= next_time.tv_sec + ptr->root->retry_timeout;
+ }
+ ptr->server_failure_counter+= 1;
return MEMCACHED_ERRNO;
}
return MEMCACHED_ERRNO;
}
@@
-264,15
+283,19
@@
handle_retry:
else
{
WATCHPOINT_ASSERT(ptr->cursor_active == 0);
else
{
WATCHPOINT_ASSERT(ptr->cursor_active == 0);
+ ptr->server_failure_counter= 0;
return MEMCACHED_SUCCESS;
}
use = use->ai_next;
}
}
return MEMCACHED_SUCCESS;
}
use = use->ai_next;
}
}
- if (ptr->fd == -1)
+ if (ptr->fd == -1) {
+ ptr->server_failure_counter+= 1;
return MEMCACHED_ERRNO; /* The last error should be from connect() */
return MEMCACHED_ERRNO; /* The last error should be from connect() */
+ }
+ ptr->server_failure_counter= 0;
return MEMCACHED_SUCCESS; /* The last error should be from connect() */
}
return MEMCACHED_SUCCESS; /* The last error should be from connect() */
}