mirror of
https://github.com/gorhill/uBlock.git
synced 2024-09-04 18:19:38 +02:00
Fix broken http header filtering
Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/2552
This commit is contained in:
parent
285ce54d9c
commit
72cc9a8fe8
@ -41,12 +41,10 @@ const $exceptions = new Set();
|
||||
let acceptedCount = 0;
|
||||
let discardedCount = 0;
|
||||
|
||||
const headerIndexFromName = function(name, headers) {
|
||||
let i = headers.length;
|
||||
while ( i-- ) {
|
||||
if ( headers[i].name.toLowerCase() === name ) {
|
||||
return i;
|
||||
}
|
||||
const headerIndexFromName = function(name, headers, start = 0) {
|
||||
for ( let i = start; i < headers.length; i++ ) {
|
||||
if ( headers[i].name.toLowerCase() !== name ) { continue; }
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
@ -138,7 +136,7 @@ httpheaderFilteringEngine.fromCompiledContent = function(reader) {
|
||||
duplicates.add(fingerprint);
|
||||
const args = reader.args();
|
||||
if ( args.length < 4 ) { continue; }
|
||||
filterDB.store(args[1], args[2], args[3].slice(15, -1));
|
||||
filterDB.store(args[1], args[2], args[3]);
|
||||
}
|
||||
};
|
||||
|
||||
@ -175,18 +173,20 @@ httpheaderFilteringEngine.apply = function(fctxt, headers) {
|
||||
const hasGlobalException = $exceptions.has('');
|
||||
|
||||
let modified = false;
|
||||
let i = 0;
|
||||
|
||||
for ( const name of $headers ) {
|
||||
for (;;) {
|
||||
const i = headerIndexFromName(name, headers);
|
||||
if ( i === -1 ) { break; }
|
||||
const isExcepted = hasGlobalException || $exceptions.has(name);
|
||||
if ( isExcepted ) {
|
||||
if ( logger.enabled ) {
|
||||
logOne(true, hasGlobalException ? '' : name, fctxt);
|
||||
}
|
||||
break;
|
||||
const isExcepted = hasGlobalException || $exceptions.has(name);
|
||||
if ( isExcepted ) {
|
||||
if ( logger.enabled ) {
|
||||
logOne(true, hasGlobalException ? '' : name, fctxt);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
i = 0;
|
||||
for (;;) {
|
||||
i = headerIndexFromName(name, headers, i);
|
||||
if ( i === -1 ) { break; }
|
||||
headers.splice(i, 1);
|
||||
if ( logger.enabled ) {
|
||||
logOne(false, name, fctxt);
|
||||
|
Loading…
Reference in New Issue
Block a user