|
50 | 50 | const parsedURL = new URL('about:blank');
|
51 | 51 |
|
52 | 52 | // Canonical name-uncloaking feature.
|
53 |
| - let cnameUncloak = browser.dns instanceof Object; |
| 53 | + let cnameUncloakEnabled = browser.dns instanceof Object; |
54 | 54 | let cnameUncloakProxied = false;
|
55 | 55 |
|
56 | 56 | // https://github.com/uBlockOrigin/uBlock-issues/issues/911
|
|
59 | 59 | // DNS leaks.
|
60 | 60 | const proxyDetector = function(details) {
|
61 | 61 | if ( details.proxyInfo instanceof Object ) {
|
62 |
| - cnameUncloak = false; |
| 62 | + cnameUncloakEnabled = false; |
63 | 63 | proxyDetectorTryCount = 0;
|
64 | 64 | }
|
65 | 65 | if ( proxyDetectorTryCount === 0 ) {
|
|
81 | 81 | constructor() {
|
82 | 82 | super();
|
83 | 83 | this.pendingRequests = [];
|
| 84 | + this.canUncloakCnames = browser.dns instanceof Object; |
84 | 85 | this.cnames = new Map([ [ '', '' ] ]);
|
85 | 86 | this.cnameIgnoreList = null;
|
86 | 87 | this.cnameIgnore1stParty = true;
|
|
92 | 93 | }
|
93 | 94 | setOptions(options) {
|
94 | 95 | super.setOptions(options);
|
95 |
| - if ( 'cnameUncloak' in options ) { |
96 |
| - cnameUncloak = browser.dns instanceof Object && |
97 |
| - options.cnameUncloak !== false; |
| 96 | + if ( 'cnameUncloakEnabled' in options ) { |
| 97 | + cnameUncloakEnabled = |
| 98 | + this.canUncloakCnames && |
| 99 | + options.cnameUncloakEnabled !== false; |
98 | 100 | }
|
99 | 101 | if ( 'cnameUncloakProxied' in options ) {
|
100 | 102 | cnameUncloakProxied = options.cnameUncloakProxied === true;
|
|
127 | 129 | // Install/remove proxy detector.
|
128 | 130 | if ( vAPI.webextFlavor.major < 80 ) {
|
129 | 131 | const wrohr = browser.webRequest.onHeadersReceived;
|
130 |
| - if ( cnameUncloak === false || cnameUncloakProxied ) { |
| 132 | + if ( cnameUncloakEnabled === false || cnameUncloakProxied ) { |
131 | 133 | if ( wrohr.hasListener(proxyDetector) ) {
|
132 | 134 | wrohr.removeListener(proxyDetector);
|
133 | 135 | }
|
|
266 | 268 | }
|
267 | 269 | onBeforeSuspendableRequest(details) {
|
268 | 270 | const r = super.onBeforeSuspendableRequest(details);
|
269 |
| - if ( cnameUncloak === false ) { return r; } |
| 271 | + if ( cnameUncloakEnabled === false ) { return r; } |
270 | 272 | if ( r !== undefined ) {
|
271 | 273 | if (
|
272 | 274 | r.cancel === true ||
|
|
0 commit comments