Source code

Revision control

Copy as Markdown

Other Tools

# Constants
The `ERRORS` constants for the IP Protection feature are defined in
`toolkit/components/ipprotection/IPPProxyManager.sys.mjs`.
## Error Codes
The `ERRORS` object collects all error string constants used across the
feature. Each value is a stable identifier that travels as a rejection
reason or a state payload through the proxy activation pipeline and into
the UI layer.
`ERRORS.GENERIC`
: Catch-all fallback used when no more-specific code is available.
The UI surfaces a generic error message.
`ERRORS.NETWORK`
: The device is offline at activation time. The UI renders a dedicated
network error message distinct from the generic one.
`ERRORS.TIMEOUT`
: Activation exceeded the 30-second deadline. The activation is aborted
and the proxy moves to the `ERROR` state.
`ERRORS.PASS_UNAVAILABLE`
: The server did not return a valid proxy pass during activation.
`ERRORS.SERVER_NOT_FOUND`
: No proxy server is available for the default location.
`ERRORS.MISSING_PROMISE`
: Internal consistency guard: the activation promise was unexpectedly
absent while the proxy was in the `ACTIVATING` state. Should never
occur in normal operation.
`ERRORS.MISSING_ABORT`
: Internal consistency guard: the abort controller was unexpectedly
absent while stopping an in-progress activation. Should never occur
in normal operation.
`ERRORS.CANCELED`
: The activation was canceled by calling `stop()` while the proxy was
still in the `ACTIVATING` state. The UI suppresses the error message
in this case.
### Error propagation
Errors thrown inside `IPPProxyManager.start()` are caught by the activation
promise. The proxy reverts to its previous state (typically `READY`) and the
promise resolves with `{ started: false, error }`. The panel reads the error
code from this result to determine which message to show.
Errors that occur while the proxy is already `ACTIVE` (such as a pass
rotation failure) move the state machine to `IPPProxyStates.ERROR`; in that
case the panel always surfaces them as a generic error.
`ERRORS.NETWORK` is the only code that maps to a dedicated network error
message in the UI; all other codes surface as a generic error.
`ERRORS.MISSING_PROMISE` and `ERRORS.MISSING_ABORT` are thrown directly
from `start()` or `stop()` as `Error` objects and bypass the activation
promise; they represent internal consistency violations and do not affect proxy
state.