previously, if you called curl_easy_perform and then set the global dns
cache, the global cache wouldn't be used. I don't see this really happening
in practice, but this code allows you to do it.
{
struct SessionHandle *data = (struct SessionHandle *)curl;
- if (!data->hostcache) {
- if (Curl_global_host_cache_use(data)) {
- data->hostcache = Curl_global_host_cache_get();
- }
- else {
- data->hostcache = Curl_hash_alloc(7, Curl_freednsinfo);
+ if (Curl_global_host_cache_use(data) && data->hostcache != Curl_global_host_cache_get()) {
+ if (data->hostcache) {
+ Curl_hash_destroy(data->hostcache);
}
+ data->hostcache = Curl_global_host_cache_get();
}
+ if (!data->hostcache) {
+ data->hostcache = Curl_hash_alloc(7, Curl_freednsinfo);
+ }
+
return Curl_perform(data);
}