projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Update for release
[m6w6/libmemcached]
/
libmemcached
/
connect.cc
diff --git
a/libmemcached/connect.cc
b/libmemcached/connect.cc
index 589c40c51dd06fff0f9230a18eaf4e768e42dade..1c4ea913689ca54b513d7a8ded2660c9ca13100a 100644
(file)
--- a/
libmemcached/connect.cc
+++ b/
libmemcached/connect.cc
@@
-400,9
+400,13
@@
static memcached_return_t network_connect(memcached_server_st *server)
WATCHPOINT_ASSERT(server->fd == INVALID_SOCKET);
WATCHPOINT_ASSERT(server->cursor_active == 0);
WATCHPOINT_ASSERT(server->fd == INVALID_SOCKET);
WATCHPOINT_ASSERT(server->cursor_active == 0);
+ /*
+ We want to check both of these because if address_info_next has been fully tried, we want to do a new lookup to make sure we have picked up on any new DNS information.
+ */
if (server->address_info == NULL or server->address_info_next == NULL)
{
WATCHPOINT_ASSERT(server->state == MEMCACHED_SERVER_STATE_NEW);
if (server->address_info == NULL or server->address_info_next == NULL)
{
WATCHPOINT_ASSERT(server->state == MEMCACHED_SERVER_STATE_NEW);
+ server->address_info_next= NULL;
memcached_return_t rc;
uint32_t counter= 5;
while (--counter)
memcached_return_t rc;
uint32_t counter= 5;
while (--counter)
@@
-428,6
+432,12
@@
static memcached_return_t network_connect(memcached_server_st *server)
}
}
}
}
+ if (server->address_info_next == NULL)
+ {
+ server->address_info_next= server->address_info;
+ server->state= MEMCACHED_SERVER_STATE_ADDRINFO;
+ }
+
/* Create the socket */
while (server->address_info_next and server->fd == INVALID_SOCKET)
{
/* Create the socket */
while (server->address_info_next and server->fd == INVALID_SOCKET)
{