fix refreshing of obsolete dns cache entries

- cache entries must be also refreshed when they are in use
- have the cache count as inuse reference too, freeing timestamp == 0 special
  value
- use timestamp == 0 for CURLOPT_RESOLVE entries which don't get refreshed
- remove CURLOPT_RESOLVE special inuse reference (timestamp == 0 will prevent refresh)
- fix Curl_hostcache_clean - CURLOPT_RESOLVE entries don't have a special
  reference anymore, and it would also release non CURLOPT_RESOLVE references
- fix locking in Curl_hostcache_clean
- fix unit1305.c: hash now keeps a reference, need to set inuse = 1
This commit is contained in:
Stefan Bühler 2015-03-17 09:09:43 +01:00 committed by Daniel Stenberg
parent 369430cd17
commit 0db831976e
3 changed files with 36 additions and 42 deletions

View file

@ -65,11 +65,10 @@ void Curl_global_host_cache_dtor(void);
struct Curl_dns_entry {
Curl_addrinfo *addr;
/* timestamp == 0 -- entry not in hostcache
timestamp != 0 -- entry is in hostcache */
/* timestamp == 0 -- CURLOPT_RESOLVE entry, doesn't timeout */
time_t timestamp;
long inuse; /* use-counter, make very sure you decrease this
when you're done using the address you received */
/* use-counter, use Curl_resolv_unlock to release reference */
long inuse;
};
/*