1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-26 17:03:12 +03:00

Fix logging of DecryptionErrors to be more useful

We were relying on being able to override toString in DecryptionError, which
(a) doesn't work thanks to https://github.com/babel/babel/issues/3083, and (b)
was a bit naughty anyway. Instead, just add a detailedString property and use
that.
This commit is contained in:
Richard van der Hoff
2017-11-22 14:42:32 +00:00
parent c31ce641a1
commit c80bde1f60
2 changed files with 18 additions and 23 deletions

View File

@@ -179,31 +179,26 @@ class DecryptionError extends Error {
constructor(msg, details) { constructor(msg, details) {
super(msg); super(msg);
this.name = 'DecryptionError'; this.name = 'DecryptionError';
this.details = details; this.detailedString = _detailedStringForDecryptionError(this, details);
}
/**
* override the string used when logging
*
* @returns {String}
*/
toString() {
let result = this.name + '[msg: ' + this.message;
if (this.details) {
result += ', ' +
Object.keys(this.details).map(
(k) => k + ': ' + this.details[k],
).join(', ');
}
result += ']';
return result;
} }
} }
export {DecryptionError}; // https://github.com/jsdoc3/jsdoc/issues/1272 export {DecryptionError}; // https://github.com/jsdoc3/jsdoc/issues/1272
function _detailedStringForDecryptionError(err, details) {
let result = err.name + '[msg: ' + err.message;
if (details) {
result += ', ' +
Object.keys(details).map(
(k) => k + ': ' + details[k],
).join(', ');
}
result += ']';
return result;
}
/** /**
* Exception thrown specifically when we want to warn the user to consider * Exception thrown specifically when we want to warn the user to consider
* the security of their conversation before continuing * the security of their conversation before continuing

View File

@@ -424,7 +424,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// decryption error, but we have a retry queued. // decryption error, but we have a retry queued.
console.log( console.log(
`Got error decrypting event (id=${this.getId()}: ` + `Got error decrypting event (id=${this.getId()}: ` +
`${e.message}), but retrying`, `${e}), but retrying`,
); );
continue; continue;
} }
@@ -432,7 +432,7 @@ utils.extend(module.exports.MatrixEvent.prototype, {
// decryption error, no retries queued. Warn about the error and // decryption error, no retries queued. Warn about the error and
// set it to m.bad.encrypted. // set it to m.bad.encrypted.
console.warn( console.warn(
`Error decrypting event (id=${this.getId()}): ${e}`, `Error decrypting event (id=${this.getId()}): ${e.detailedString}`,
); );
res = this._badEncryptedMessage(e.message); res = this._badEncryptedMessage(e.message);