Send TorConnect "Error" signal before "StateChange".
Merge Info
Related Issues
Backporting
Timeline
-
Immediate: patchset needed as soon as possible -
Next Minor Stable Release: patchset that needs to be verified in nightly before backport -
Eventually: patchset that needs to be verified in alpha before backport -
No Backport (preferred): patchset for the next major stable
(Optional) Justification
-
Emergency security update: patchset fixes CVEs, 0-days, etc -
Censorship event: patchset enables censorship circumvention -
Critical bug-fix: patchset fixes a bug in core-functionality -
Consistency: patchset which would make development easier if it were in both the alpha and release branches; developer tools, build system changes, etc -
Sponsor required: patchset required for sponsor -
Localization: typos and other localization changes that should be also in the release branch -
Other: please explain
Merging
-
Merge to tor-browser
-!fixups
totor-browser
-specific commits, new features, security backports -
Merge to base-browser
-!fixups
tobase-browser
-specific commits, new features to be shared withmullvad-browser
, and security backports-
NOTE: if your changeset includes patches to both
base-browser
andtor-browser
please clearly label in the change description which commits should be cherry-picked tobase-browser
after merging
-
NOTE: if your changeset includes patches to both
Issue Tracking
-
Link resolved issues with appropriate Release Prep issue for changelog generation
Review
Request Reviewer
-
Request review from an applications developer depending on modified system: -
NOTE: if the MR modifies multiple areas, please
/cc
all the relevant reviewers (since gitlab only allows 1 reviewer) - accessibility : henry
- android : clairehurst, dan
- build system : boklm
- extensions : ma1
- firefox internals (XUL/JS/XPCOM) : jwilde, ma1
- fonts : pierov
- frontend (implementation) : henry
- frontend (review) : donuts, richard
- localization : henry, pierov
- macOS : clairehurst, dan
- nightly builds : boklm
- rebases/release-prep : dan, ma1, pierov, richard
- security : jwilde, ma1
- signing : boklm, richard
- updater : pierov
- windows : jwilde, richard
- misc/other : pierov, richard
-
NOTE: if the MR modifies multiple areas, please
Change Description
Changed the order of the "Error" and "StateChange" events. Note, this is not that elegant right now, but I'm planning on removing this Error state eventually in #41710 (closed) since the focus will switch to what the user should see. This should work for 13.5 stable though.
How Tested
Go offline and have bootstrap fail. Note, bootstrapping offline just hangs for me, so I forced it to fail using
// this.#bootstrap = new lazy.TorBootstrapRequest();
this.#bootstrap = {
_timeout: 0,
bootstrap() {
this._timeout = setTimeout(() => {
const err = new Error("Censorship simulation");
err.phase = "conn";
err.reason = "noroute";
this.onbootstraperror(err);
}, 1500);
},
cancel() {
clearTimeout(this._timeout);
},
};
Not tested on android.
/cc @clairehurst @dan
I think the main change is lastKnownError
will be set before the first call to onBootstrapStateChange(TorConnectState.Error.state)
. Note, as far as I can tell, this is called twice on android, once due to the "Error" signal, and once due to the "StateChange" signal, is that intentional? The difference is before:
onBootstrapStateChange(TorConnectState.Error.state);
lastKnownError = ...
onBootstrapStateChange(TorConnectState.Error.state);
and now instead it will be:
lastKnownError = ...
onBootstrapStateChange(TorConnectState.Error.state);
onBootstrapStateChange(TorConnectState.Error.state);
Also, it should ensure that lastKnownError
is set before this call to handleError
when invoked from here.