Skip to content

dns: refactor default resolver

This patch refactors the DNS default resolver code to make it easier to be included in a snapshot:

  • The code specific for the callback-based DNS resolver are not in a separate module to make the dependency clearer (it's not actually needed if the user only ever loads dns/promises)
  • The common part of the callback-based resolver and the promise- based resolver is now ResolverBase. The other two user-facing resolvers are now subclasses of ResolverBase. The default Resolver is constructed with just ResolverBase. This would be fine as the default resolver is never actually exposed to the user-land and it has been working using duck-typing anyway.
  • Move the construction of Resolver subclasses into a common method createResolverClass() to reduce code duplication. The two subclasses now also share the same base constructor. This would make it possible for them to also share code for snapshot support later.
  • --dns-result-order is now queried and refreshed during pre-execution. To avoid loading the cares_wrap binding unnecessarily the loading of the binding is also made lazy.

Merge request reports

Loading