X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Faddress_cache.c;h=f28dbf902d003d9fee443c0494bbeef95af13478;hb=1aa8ac8c41ab8580fce1956086d7e6c7e84a09ee;hp=a414f46f4c95315d5a197501689ae76674ecfc21;hpb=914d1be411229c28e6e8e4a0df99afa076a8b448;p=tinc diff --git a/src/address_cache.c b/src/address_cache.c index a414f46f..f28dbf90 100644 --- a/src/address_cache.c +++ b/src/address_cache.c @@ -25,7 +25,7 @@ #include "netutl.h" #include "xalloc.h" -static const unsigned int NOT_CACHED = -1; +static const unsigned int NOT_CACHED = UINT_MAX; // Find edges pointing to this node, and use them to build a list of unique, known addresses. static struct addrinfo *get_known_addresses(node_t *n) { @@ -90,6 +90,8 @@ void add_recent_address(address_cache_t *cache, const sockaddr_t *sa) { return; } + logger(DEBUG_CONNECTIONS, LOG_DEBUG, "Caching recent address for %s", cache->node->name); + // Shift everything, move/add the address to the first slot if(pos == NOT_CACHED) { if(cache->data.used < MAX_CACHED_ADDRESSES) { @@ -213,8 +215,10 @@ const sockaddr_t *get_recent_address(address_cache_t *cache) { } // We're all out of addresses. - exit_configuration(&cache->config_tree); - return false; + exit_configuration(cache->config_tree); + cache->config_tree = NULL; + + return NULL; } address_cache_t *open_address_cache(node_t *node) { @@ -249,13 +253,10 @@ address_cache_t *open_address_cache(node_t *node) { return cache; } -void reset_address_cache(address_cache_t *cache, const sockaddr_t *sa) { - if(sa) { - add_recent_address(cache, sa); - } - +void reset_address_cache(address_cache_t *cache) { if(cache->config_tree) { - exit_configuration(&cache->config_tree); + exit_configuration(cache->config_tree); + cache->config_tree = NULL; } if(cache->ai) { @@ -271,7 +272,8 @@ void reset_address_cache(address_cache_t *cache, const sockaddr_t *sa) { void close_address_cache(address_cache_t *cache) { if(cache->config_tree) { - exit_configuration(&cache->config_tree); + exit_configuration(cache->config_tree); + cache->config_tree = NULL; } if(cache->ai) {