|
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