From ac7825c789ce8f8b3ffe8cfc34aa121df63c2d27 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sat, 7 Sep 2019 07:39:56 -0400 Subject: [PATCH] Remove bad fast-path optimization in redirect engine This was reported internally by @okiehsch, and cause was pinpointed by @gwarser. The issue could cause redirection rules to be ignored under some circumstances. The repro steps were: - Navigate `https://adblockplus.org` Result: A delay before the page renders. Expected: No delay before the page renders, because uBO is supposed to redirect to a local neutered version of `googletagmanager.com/gtm.js`. --- dist/version | 2 +- src/js/redirect-engine.js | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/dist/version b/dist/version index 57807d6d0..6fee2fedb 100644 --- a/dist/version +++ b/dist/version @@ -1 +1 @@ -1.22.0 +1.22.2 diff --git a/src/js/redirect-engine.js b/src/js/redirect-engine.js index 4825588a8..fc40b3880 100644 --- a/src/js/redirect-engine.js +++ b/src/js/redirect-engine.js @@ -279,7 +279,6 @@ RedirectEngine.prototype.reset = function() { }; RedirectEngine.prototype.resetCache = function() { - this._missedQueryHash = ''; this._src = ''; this._srcAll = [ '*' ]; this._des = ''; @@ -321,26 +320,16 @@ RedirectEngine.prototype.lookup = function(fctxt) { const src = fctxt.getDocHostname(); const des = fctxt.getHostname(); const type = fctxt.type; - const queryHash = `${src} ${des} ${type}`; - if ( queryHash === this._missedQueryHash ) { - return; - } if ( src !== this._src ) { this._src = src; this.decomposeHostname(src, this.ruleSources, this._srcAll); } - if ( this._srcAll.length === 0 ) { - this._missedQueryHash = queryHash; - return; - } + if ( this._srcAll.length === 0 ) { return; } if ( des !== this._des ) { this._des = des; this.decomposeHostname(des, this.ruleDestinations, this._desAll); } - if ( this._desAll.length === 0 ) { - this._missedQueryHash = queryHash; - return; - } + if ( this._desAll.length === 0 ) { return; } const reqURL = fctxt.url; for ( const src of this._srcAll ) { for ( const des of this._desAll ) { @@ -356,7 +345,6 @@ RedirectEngine.prototype.lookup = function(fctxt) { } } } - this._missedQueryHash = queryHash; }; RedirectEngine.prototype.lookupRule = function(entries, reqURL) {