Commit 0038ebdf authored by Csoregi Natalia's avatar Csoregi Natalia
Browse files

Backed out changeset 6e7c2bd7d2f7 (bug 1673315) for failures on...

Backed out changeset 6e7c2bd7d2f7 (bug 1673315) for failures on test_dns_override_for_localhost.js. CLOSED TREE
parent 77adb00b
Loading
Loading
Loading
Loading
+0 −92
Original line number Diff line number Diff line
"use strict";

const dns = Cc["@mozilla.org/network/dns-service;1"].getService(
  Ci.nsIDNSService
);
const override = Cc["@mozilla.org/network/native-dns-override;1"].getService(
  Ci.nsINativeDNSResolverOverride
);
const defaultOriginAttributes = {};
const threadManager = Cc["@mozilla.org/thread-manager;1"].getService(
  Ci.nsIThreadManager
);
const mainThread = threadManager.currentThread;

class Listener {
  constructor() {
    this.promise = new Promise(resolve => {
      this.resolve = resolve;
    });
  }

  onLookupComplete(inRequest, inRecord, inStatus) {
    this.resolve([inRequest, inRecord, inStatus]);
  }

  async addresses() {
    let [inRequest, inRecord, inStatus] = await this.promise;
    let addresses = [];
    if (!inRecord) {
      return addresses; // returns []
    }
    inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
    while (inRecord.hasMore()) {
      addresses.push(inRecord.getNextAddrAsString());
    }
    return addresses;
  }

  then() {
    return this.promise.then.apply(this.promise, arguments);
  }
}
Listener.prototype.QueryInterface = ChromeUtils.generateQI(["nsIDNSListener"]);

["localhost", "vhost.localhost"].forEach(domain => {
  add_task(async function test_() {
    let listener1 = new Listener();
    const overrides = ["1.2.3.4", "5.6.7.8"];
    overrides.forEach(ip_address => {
      override.addIPOverride(domain, ip_address);
    });

    // Verify that loopback host names are not overridden.
    dns.asyncResolve(
      domain,
      Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
      0,
      null,
      listener1,
      mainThread,
      defaultOriginAttributes
    );
    Assert.deepEqual(
      await listener1.addresses(),
      ["127.0.0.1", "::1"],
      `${domain} is not overridden`
    );

    // Verify that if localhost hijacking is enabled, the overrides
    // registered above are taken into account.
    Services.prefs.setBoolPref("network.proxy.allow_hijacking_localhost", true);
    let listener2 = new Listener();
    dns.asyncResolve(
      domain,
      Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
      0,
      null,
      listener2,
      mainThread,
      defaultOriginAttributes
    );
    Assert.deepEqual(
      await listener2.addresses(),
      overrides,
      `${domain} is overridden`
    );
    Services.prefs.clearUserPref("network.proxy.allow_hijacking_localhost");

    dns.clearCache(false);
    override.clearOverrides();
  });
});
+0 −2
Original line number Diff line number Diff line
@@ -440,8 +440,6 @@ skip-if = asan || tsan || os == 'win' || os =='android'
[test_defaultURI.js]
[test_port_remapping.js]
[test_dns_override.js]
[test_dns_override_for_localhost.js]
skip-if = socketprocess_networking # Bug 1640105
[test_no_cookies_after_last_pb_exit.js]
[test_trr_httpssvc.js]
skip-if = os == "android"