diff --git a/src/js/static-filtering-parser.js b/src/js/static-filtering-parser.js index 53889d1dd..31b50901c 100644 --- a/src/js/static-filtering-parser.js +++ b/src/js/static-filtering-parser.js @@ -1489,6 +1489,7 @@ export class AstFilterParser { } getNetOptionValue(type) { + if ( this.nodeTypeRegister.includes(type) === false ) { return ''; } const optionNode = this.nodeTypeLookupTable[type]; if ( optionNode === 0 ) { return ''; } const valueNode = this.findDescendantByType(optionNode, NODE_TYPE_NET_OPTION_VALUE); diff --git a/src/js/static-net-filtering.js b/src/js/static-net-filtering.js index 8bbe869c9..da803cac5 100644 --- a/src/js/static-net-filtering.js +++ b/src/js/static-net-filtering.js @@ -3336,15 +3336,16 @@ class FilterCompiler { this.processMethodOption(parser.getNetOptionValue(id)); this.optionUnitBits |= this.METHOD_BIT; break; - case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT: - if ( this.action === AllowAction ) { - id = sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE; - } - if ( this.processModifierOption(id, parser.getNetOptionValue(id)) === false ) { + case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT: { + const actualId = this.action === AllowAction + ? sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE + : id; + if ( this.processModifierOption(actualId, parser.getNetOptionValue(id)) === false ) { return false; } this.optionUnitBits |= this.REDIRECT_BIT; break; + } case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE: if ( this.processModifierOption(id, parser.getNetOptionValue(id)) === false ) { return false;