mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 12:37:37 +00:00
ef52c3bbf9
This patch adds a) a test for the fixed proxy bypass in bug 751465 and makes b) some underlying changes to the nsDNSService to be able to write that test in the first place.
69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var ioService = Cc["@mozilla.org/network/io-service;1"].
|
|
getService(Ci.nsIIOService);
|
|
|
|
var prefs = Cc["@mozilla.org/preferences-service;1"].
|
|
getService(Ci.nsIPrefBranch);
|
|
|
|
var url = "ws://dnsleak.example.com";
|
|
|
|
var dnsRequestObserver = {
|
|
register: function() {
|
|
this.obs = Cc["@mozilla.org/observer-service;1"].
|
|
getService(Ci.nsIObserverService);
|
|
this.obs.addObserver(this, "dns-resolution-request", false);
|
|
},
|
|
|
|
unregister: function() {
|
|
if (this.obs) {
|
|
this.obs.removeObserver(this, "dns-resolution-request");
|
|
}
|
|
},
|
|
|
|
observe: function(subject, topic, data) {
|
|
if (topic == "dns-resolution-request") {
|
|
do_print(data);
|
|
if (data.indexOf("dnsleak.example.com") > -1) {
|
|
try {
|
|
do_check_true(false);
|
|
} catch (e) {}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
var listener = {
|
|
onAcknowledge: function(aContext, aSize) {},
|
|
onBinaryMessageAvailable: function(aContext, aMsg) {},
|
|
onMessageAvailable: function(aContext, aMsg) {},
|
|
onServerClose: function(aContext, aCode, aReason) {},
|
|
onStart: function(aContext) {},
|
|
onStop: function(aContext, aStatusCode) {
|
|
prefs.clearUserPref("network.proxy.socks");
|
|
prefs.clearUserPref("network.proxy.socks_port");
|
|
prefs.clearUserPref("network.proxy.type");
|
|
prefs.clearUserPref("network.proxy.socks_remote_dns");
|
|
prefs.clearUserPref("network.dns.notifyResolution");
|
|
dnsRequestObserver.unregister();
|
|
do_test_finished();
|
|
}
|
|
};
|
|
|
|
function run_test() {
|
|
dnsRequestObserver.register();
|
|
prefs.setBoolPref("network.dns.notifyResolution", true);
|
|
prefs.setCharPref("network.proxy.socks", "127.0.0.1");
|
|
prefs.setIntPref("network.proxy.socks_port", 9000);
|
|
prefs.setIntPref("network.proxy.type", 1);
|
|
prefs.setBoolPref("network.proxy.socks_remote_dns", true);
|
|
var chan = Cc["@mozilla.org/network/protocol;1?name=ws"].
|
|
createInstance(Components.interfaces.nsIWebSocketChannel);
|
|
var uri = ioService.newURI(url, null, null);
|
|
chan.asyncOpen(uri, url, listener, null);
|
|
do_test_pending();
|
|
}
|
|
|