Skip to content
This repository has been archived by the owner. It is now read-only.

Add an option to cancel a request #197

Merged
merged 5 commits into from Mar 19, 2019
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

Add an explicitcancel option

  • Loading branch information
bbondy committed Mar 16, 2019
commit d9377e2589d770eb6226a8b26fddfa4d3a25badb
@@ -322,6 +322,8 @@ void Filter::parseOption(const char *input, int len) {
*pFilterOption = static_cast<FilterOption>(*pFilterOption | FOWebsocket);
} else if (!strncmp(pStart, "important", len)) {
*pFilterOption = static_cast<FilterOption>(*pFilterOption | FOImportant);
} else if (!strncmp(pStart, "explicitcancel", len)) {
*pFilterOption = static_cast<FilterOption>(*pFilterOption | FOExplicitCancel);
} else {
*pFilterOption = static_cast<FilterOption>(*pFilterOption | FOUnknown);
std::string option(pStart, len);
@@ -445,12 +447,12 @@ bool Filter::matchesOptions(const char *input, FilterOption context,
// blocking a the HTTP level, don't block here because we don't have enough
// information
if (context != FONoFilterOption) {
if ((filterOption & ~FOThirdParty) != FONoFilterOption
if ((filterOption & ~BehavioralFilterOnly) != FONoFilterOption
&& !(filterOption & FOResourcesOnly & context)) {
return false;
}

if ((antiFilterOption & ~FOThirdParty) != FONoFilterOption
if ((antiFilterOption & ~BehavioralFilterOnly) != FONoFilterOption
&& (antiFilterOption & FOResourcesOnly & context)) {
return false;
}
@@ -5,7 +5,6 @@

#ifndef FILTER_H_
#define FILTER_H_

#include <stdint.h>
#include <string.h>
#include "./base.h"
@@ -72,14 +71,18 @@ enum FilterOption {
FOWebsocket = 0200000000,
// important means to ignore all exception filters (those prefixed with @@).
FOImportant = 0400000000,
// Cancel the request instead of using a 200 OK response
FOExplicitCancel = 01000000000,

FOUnknown = 04000000000,
FOResourcesOnly = FOScript|FOImage|FOStylesheet|FOObject|FOXmlHttpRequest|
FOObjectSubrequest|FOSubdocument|FODocument|FOOther|FOXBL|FOFont|FOMedia|
FOWebRTC|FOWebsocket|FOPing,
FOUnsupportedSoSkipCheck = FOPopup|FOCSP|FOElemHide|FOGenericHide|
FOGenericBlock|FOEmpty|FOUnknown,
FOUnsupportedButIgnore = FORedirect|FOImportant
// Non matching related filters, alters behavior
BehavioralFilterOnly = FORedirect|FOImportant|FOExplicitCancel|
FOThirdParty|FONotThirdParty
};

class Filter {
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.