diff --git a/transport.js b/transport.js index dcfd714..3b3c9d5 100644 --- a/transport.js +++ b/transport.js @@ -1,5 +1,3 @@ -"use strict"; - process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; const module_name = require('path').basename(__filename); @@ -13,6 +11,17 @@ const logger = require('komodo-sdk/logger'); let _callback; +const maxSendRetry = Number(config.max_send_retry) || 5; +const sleepBeforeRetryMs = (Number(config.sleep_before_retry_secs) || 60) * 1000; + +function sleep(ms) { + new Promise((resolve) => { + setTimeout(() => { + resolve(null); + }, ms) + }); +}; + function createHttpServer() { let listenPort = config.center_port; @@ -97,23 +106,23 @@ function init(cb) { createHttpServer(); } -function _sleepAndResend(partner, msg, params, retry) { - if (retry === null || retry === undefined) { - retry = Number(config.max_send_retry) || 5; +async function sleepAndResend(partner, msg, params, retry) { + if ((retry || 0) > maxSendRetry) { + logger.verbose('Retry exceeded', { + params, + retry: retry || 0, + }); + return; } - if (retry-- > 0) { - setTimeout( - function() { - send(partner, msg, params, retry); - }, - (Number(config.sleep_before_retry_secs) || 60) * 1000 - ) - } + await sleep(sleepBeforeRetryMs); + send(partner, msg, params, retry + 1); } function send(partner, msg, params, retry) { - logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params, retry: retry}); + logger.verbose('Got response from CORE', { + partner: partner, msg: msg, params: params, retry: retry || 0, + }); if (!params || !params.reverse_url) { logger.verbose('Undefined reverse_url, not forwarding message to partner'); @@ -139,17 +148,22 @@ function send(partner, msg, params, retry) { request(reqOptions, function(err, res, body) { if (err) { logger.warn('Error sending reverse report to partner', {request: reqOptions, err: err}); - _sleepAndResend(partner, msg, params, retry); + sleepAndResend(partner, msg, params, retry); return; } + /* if (res.statusCode != 200) { - logger.warn('Partner not returning HTTP status code 200 on reverse report', {request: reqOptions, http_status: res.statusCode}); + logger.warn('Partner not returning HTTP status code 200 on reverse report', { + request: reqOptions, http_status: res.statusCode, + }); + _sleepAndResend(partner, msg, params, retry); return; } + */ - logger.verbose('Reverse report has been sent to partner', {request: reqOptions}); + logger.verbose('Reverse report has been sent to partner', { request: reqOptions, httpStatus: res && res.statusCode }); }) }