Skip to content

dns.js not properly iterating through DNS array #21391

Closed
@MatthewPinheiro

Description

  • Version: 8.11.3
  • Platform: Windows 10 Pro v1709
  • Subsystem: dns

I'll preface this by saying that there's a significant chance I'm simply misunderstanding dns.setServers, but that being said, I believe I'm experiencing undesired functionality.

Given var dnsServer1 and var dnsServer2 are two valid IP Address strings of two valid DNS servers, and given that var host is a valid string which resolves to an IP on dnsServer1 but not on dnsServer2, consider the following code:

dns.setServers([dnsServer2, dnsServer1]);
dns.resolve(host, (err, records) => {
    if (err) {
        console.log(err);
    } else {
        console.log(records);
});

If the above is run, an ENOTFOUND error will be produced and records will be undefined. However, if the order of the array passed into dns.setServers is reversed, i.e.

dns.setServers([dnsServer1, dnsServer2])

and the same call to dns.resolve is made, no error will be produced and records will have resolved to a valid IP.

Isn't dns.resolve supposed to check through each DNS IP set by dns.setServers until either one is able to resolve host or none of them are able to do so? Here it instead seems the entire resolve operation fails as soon as the first DNS IP fails, and succeeds as soon as the first DNS IP succeeds.

I've tried to find more thorough documentation but couldn't find anything that said one way or the other.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    caresIssues and PRs related to the c-ares dependency or the cares_wrap binding.dnsIssues and PRs related to the dns subsystem.docIssues and PRs related to the documentations.good first issueIssues that are suitable for first-time contributors.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions