Merge pull request #4539 from matrix-org/dbkr/verify_wait_prevent_race

Guard against race when waiting for cross-signing to be ready
This commit is contained in:
David Baker 2020-05-01 11:37:25 +01:00 committed by GitHub
commit 934a7726c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -126,7 +126,7 @@ export class SetupEncryptionStore extends EventEmitter {
this.emit("update");
}
onVerificationRequestChange = () => {
onVerificationRequestChange = async () => {
if (this.verificationRequest.cancelled) {
this.verificationRequest.off("change", this.onVerificationRequestChange);
this.verificationRequest = null;
@ -136,8 +136,9 @@ export class SetupEncryptionStore extends EventEmitter {
this.verificationRequest = null;
// At this point, the verification has finished, we just need to wait for
// cross signing to be ready to use, so wait for the user trust status to
// change.
this.phase = PHASE_BUSY;
// change (or change to DONE if it's already ready).
const crossSigningReady = await MatrixClientPeg.get().isCrossSigningReady();
this.phase = crossSigningReady ? PHASE_DONE : PHASE_BUSY;
this.emit("update");
}
}