diff --git a/lib/register-modem.js b/lib/register-modem.js index 96442bf..7802fec 100644 --- a/lib/register-modem.js +++ b/lib/register-modem.js @@ -3,9 +3,13 @@ const path = require('path'); const request = require('request'); +const locks = require('locks'); + const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); +const mutex = locks.createMutex(); + function reportUrl() { if (config.report_url.register_modem) { return config.report_url.register_modem; @@ -16,29 +20,33 @@ function reportUrl() { } module.exports = (modemInfo) => { - const requestOptions = { - url: reportUrl(), - qs: { - modem: config.name, - modem_device: config.modem.device, - modem_imsi: modemInfo.imsi, - modem_msisdn: modemInfo.msisdn, - modem_network_id: modemInfo.networkId, - modem_network_name: modemInfo.networkName, - modem_signal_strength: modemInfo.signalStrength, - uptime: Math.floor(process.uptime()), - report_port: config.http_command_server.listen_port, - report_apikey: config.http_command_server.apikey, - report_path_sms: '/sms', - }, - }; - - logger.info('Sending modem registration to center'); - request(requestOptions, (err, res) => { - if (err) { - logger.warn(`Error registering modem. ${err.toString()}`); - } else if (res.statusCode !== 200) { - logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`); - } - }); + if (mutex.tryLock()) { + const requestOptions = { + url: reportUrl(), + qs: { + modem: config.name, + modem_device: config.modem.device, + modem_imsi: modemInfo.imsi, + modem_msisdn: modemInfo.msisdn, + modem_network_id: modemInfo.networkId, + modem_network_name: modemInfo.networkName, + modem_signal_strength: modemInfo.signalStrength, + uptime: Math.floor(process.uptime()), + report_port: config.http_command_server.listen_port, + report_apikey: config.http_command_server.apikey, + report_path_sms: '/sms', + }, + }; + + logger.info('Sending modem registration to center'); + request(requestOptions, (err, res) => { + mutex.unlock(); + + if (err) { + logger.warn(`Error registering modem. ${err.toString()}`); + } else if (res.statusCode !== 200) { + logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`); + } + }); + } };