You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-12-01 04:43:29 +03:00
mark request as cancelled immediately after verifier is cancelled
in case send errors prevent us from receiving remote echo
This commit is contained in:
@@ -287,6 +287,7 @@ export class VerificationBase extends EventEmitter {
|
|||||||
this._endTimer(); // always kill the activity timer
|
this._endTimer(); // always kill the activity timer
|
||||||
if (!this._done) {
|
if (!this._done) {
|
||||||
this.cancelled = true;
|
this.cancelled = true;
|
||||||
|
this.request.onVerifierCancelled();
|
||||||
if (this.userId && this.deviceId) {
|
if (this.userId && this.deviceId) {
|
||||||
// send a cancellation to the other user (if it wasn't
|
// send a cancellation to the other user (if it wasn't
|
||||||
// cancelled by the other user)
|
// cancelled by the other user)
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ export class VerificationRequest extends EventEmitter {
|
|||||||
this._accepting = false;
|
this._accepting = false;
|
||||||
this._declining = false;
|
this._declining = false;
|
||||||
this._verifierHasFinished = false;
|
this._verifierHasFinished = false;
|
||||||
|
this._cancelled = false;
|
||||||
this._chosenMethod = null;
|
this._chosenMethod = null;
|
||||||
// we keep a copy of the QR Code data (including other user master key) around
|
// we keep a copy of the QR Code data (including other user master key) around
|
||||||
// for QR reciprocate verification, to protect against
|
// for QR reciprocate verification, to protect against
|
||||||
@@ -525,7 +526,7 @@ export class VerificationRequest extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const cancelEvent = this._getEventByEither(CANCEL_TYPE);
|
const cancelEvent = this._getEventByEither(CANCEL_TYPE);
|
||||||
if (cancelEvent && phase() !== PHASE_DONE) {
|
if ((this._cancelled || cancelEvent) && phase() !== PHASE_DONE) {
|
||||||
transitions.push({phase: PHASE_CANCELLED, event: cancelEvent});
|
transitions.push({phase: PHASE_CANCELLED, event: cancelEvent});
|
||||||
return transitions;
|
return transitions;
|
||||||
}
|
}
|
||||||
@@ -858,6 +859,15 @@ export class VerificationRequest extends EventEmitter {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onVerifierCancelled() {
|
||||||
|
this._cancelled = true;
|
||||||
|
// move to cancelled phase
|
||||||
|
const newTransitions = this._applyPhaseTransitions();
|
||||||
|
if (newTransitions.length) {
|
||||||
|
this._setPhase(newTransitions[newTransitions.length - 1].phase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onVerifierFinished() {
|
onVerifierFinished() {
|
||||||
this.channel.send("m.key.verification.done", {});
|
this.channel.send("m.key.verification.done", {});
|
||||||
this._verifierHasFinished = true;
|
this._verifierHasFinished = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user