1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-15 07:22:16 +03:00

Do not retry requests which 40[0/1/3]. Set 'errcode' on MatrixErrors

This commit is contained in:
Kegan Dougal
2015-07-29 10:30:07 +01:00
parent 7f9c88e53f
commit 54a5c38b66
2 changed files with 7 additions and 1 deletions

View File

@@ -422,12 +422,14 @@ var requestCallback = function(defer, userDefinedCallback, onlyData) {
* information specific to the standard Matrix error response. * information specific to the standard Matrix error response.
* @constructor * @constructor
* @param {Object} errorJson The Matrix error JSON returned from the homeserver. * @param {Object} errorJson The Matrix error JSON returned from the homeserver.
* @prop {string} name The Matrix 'errcode' value, e.g. "M_FORBIDDEN". * @prop {string} errcode The Matrix 'errcode' value, e.g. "M_FORBIDDEN".
* @prop {string} name Same as MatrixError.errcode but with a default unknown string.
* @prop {string} message The Matrix 'error' value, e.g. "Missing token." * @prop {string} message The Matrix 'error' value, e.g. "Missing token."
* @prop {Object} data The raw Matrix error JSON used to construct this object. * @prop {Object} data The raw Matrix error JSON used to construct this object.
* @prop {integer} httpStatus The numeric HTTP status code given * @prop {integer} httpStatus The numeric HTTP status code given
*/ */
module.exports.MatrixError = function MatrixError(errorJson) { module.exports.MatrixError = function MatrixError(errorJson) {
this.errcode = errorJson.errcode;
this.name = errorJson.errcode || "Unknown error code"; this.name = errorJson.errcode || "Unknown error code";
this.message = errorJson.error || "Unknown message"; this.message = errorJson.error || "Unknown message";
this.data = errorJson; this.data = errorJson;

View File

@@ -129,6 +129,10 @@ MatrixScheduler.prototype.queueEvent = function(event) {
* @see module:scheduler~retryAlgorithm * @see module:scheduler~retryAlgorithm
*/ */
MatrixScheduler.RETRY_BACKOFF_RATELIMIT = function(event, attempts, err) { MatrixScheduler.RETRY_BACKOFF_RATELIMIT = function(event, attempts, err) {
if (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401) {
// client error; no amount of retrying with save you now.
return -1;
}
if (err.name === "M_LIMIT_EXCEEDED") { if (err.name === "M_LIMIT_EXCEEDED") {
var waitTime = err.data.retry_after_ms; var waitTime = err.data.retry_after_ms;
if (waitTime) { if (waitTime) {