diff --git a/transport.js b/transport.js index 88f6815..69931c3 100644 --- a/transport.js +++ b/transport.js @@ -97,8 +97,25 @@ function init(cb) { createHttpServer(); } -function send(partner, msg, params) { - logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params}); +function _sleepAndResend(partner, msg, params, retry) { + if (retry === null || retry === undefined) { + retry = Number(config.max_send_retry) || 5; + } + + if (retry > 0) { + setTimeout( + function() { + send(partner, msg, params, retry); + }, + (Number(config.sleep_before_retry_secs) || 60) * 1000 + ) + } +} + +function send(partner, msg, params, retry) { + if (!retry) { + logger.verbose('Got response from CORE', {partner: partner, msg: msg, params: params}); + } if (!params || !params.reverse_url) { logger.verbose('Undefined reverse_url, not forwarding message to partner'); @@ -115,11 +132,13 @@ function send(partner, msg, params) { 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); return; } if (res.statusCode != 200) { logger.warn('Partner not returning HTTP status code 200 on reverse report', {request: reqOptions, http_status: res.statusCode}); + _sleepAndResend(partner, msg, params, retry); return; }