unsigned int pos = find_cached(cache, sa);
// It's in the first spot, so nothing to do
- if (pos == 0) {
+ if(pos == 0) {
return;
}
// Shift everything, move/add the address to the first slot
if(pos == NOT_CACHED) {
- if(cache->data.used < MAX_CACHED_ADDRESSES)
+ if(cache->data.used < MAX_CACHED_ADDRESSES) {
cache->data.used++;
+ }
+
pos = cache->data.used - 1;
}
if(cache->ai) {
if(cache->aip) {
- sockaddr_t *sa = (sockaddr_t *)cache->aip;
+ sockaddr_t *sa = (sockaddr_t *)cache->aip->ai_addr;
if(find_cached(cache, sa) != NOT_CACHED) {
continue;
cache->cfg = lookup_config_next(cache->config_tree, cache->cfg);
}
- if(cache->aip) {
- sockaddr_t *sa = (sockaddr_t *)cache->aip->ai_addr;
- cache->aip = cache->aip->ai_next;
+ if(cache->ai) {
+ if(cache->aip) {
+ sockaddr_t *sa = (sockaddr_t *)cache->aip->ai_addr;
- if(!cache->aip) {
+ cache->aip = cache->aip->ai_next;
+ return sa;
+ } else {
freeaddrinfo(cache->ai);
- cache->ai = cache->aip = NULL;
+ cache->ai = NULL;
}
-
- return sa;
}
// We're all out of addresses.