Hostname resolution cache for upload plugins #973
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The curl library does not utilize the host's DNS cache, and relies on an internal mechanism to determine when to resolve a hostname query.
However, the curl easy handles and multi handles found in uploader plugins are not reused, nor do they exist long enough to benefit from this internal mechanism. Every curl-based upload currently must start with a DNS lookup, no matter how recently the last one occurred. Trunk Recorder users with a home DNS server likely noticed that the top domains may be
api.openmhz.com
orapi.broadcastify.com
by several orders of magnitude.This patch implements a shared curl cache within each of the three main uploaders (OpenMHz, Broadcastify, Rdio Scanner). These resolved hostnames will persist between uploads, and use a standard 300 second TTL to determine when to refresh the address.
The result of implementing this could reduce millions of unnecessary DNS lookups, and speed up uploads ~100 ms by maintaining a per-plugin hostname cache.