From d2bfd85b818ae6b08633f16f57686b80bd5c8549 Mon Sep 17 00:00:00 2001 From: schneefux Date: Mon, 15 May 2017 21:58:44 +0200 Subject: hotfix bridge DoS after unexpected response --- api.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/api.js b/api.js index 2bd63a3..f45e29e 100644 --- a/api.js +++ b/api.js @@ -43,11 +43,12 @@ module.exports.request = async (url, options, logger) => { logger.warn("rate limited, sleeping"); await sleep(100); // no return, no break => retry continue; - } else if (err.statusCode != 404) { + } else if (err.statusCode >= 500) { logger.error("API error, retrying", err); await sleep(100); continue; - } + } else if (err.statusCode != 404) + logger.error("Unexpected API response", err); logger.warn("not found", { uri: err.options.uri, qs: err.options.qs, @@ -55,12 +56,13 @@ module.exports.request = async (url, options, logger) => { }); return [undefined, undefined]; } finally { - logger.info("API response", { - status: response.statusCode, - connection_start: response.timings.connect, - connection_end: response.timings.end, - ratelimit_remaining: parseInt(response.headers["x-ratelimit-remaining"]) - }); + if (response != undefined) // else non-requests error + logger.info("API response", { + status: response.statusCode, + connection_start: response.timings.connect, + connection_end: response.timings.end, + ratelimit_remaining: parseInt(response.headers["x-ratelimit-remaining"]) + }); } } } -- cgit v1.3.1