From 4a81b13bb0289ca5c389c33ff0bdbe9e32719f09 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Mon, 19 Aug 2019 17:30:48 +0700
Subject: [PATCH] Modem chooser optimizer

---
 lib/modem-chooser.js | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/lib/modem-chooser.js b/lib/modem-chooser.js
index bba2c88..57ab8db 100644
--- a/lib/modem-chooser.js
+++ b/lib/modem-chooser.js
@@ -22,27 +22,31 @@ function filterOutCandidates(candidates) {
 exports.chooser = async function chooser(destination, config) {
     const logger = global.KOMODO_LOGGER;
 
-    const prefixName = await prefixes.lookup(destination);
-    if (logger) logger.verbose('Choosing suitable senders', { destination, prefixName });
+    let prefixName = await prefixes.lookup(destination);
+    if (typeof prefixName === 'string') {
+        prefixName = prefixName.toUpperCase();
+    }
+
+    if (logger) logger.verbose('MODEM-CHOOSER: Choosing suitable senders', { destination, prefixName });
 
     let imsiSenders = [];
-    if (config.imsi_senders && config.imsi_senders.prefix_names && config.imsi_senders.prefix_names[prefixName]) {
+    if (config.imsi_senders && prefixName && config.imsi_senders.prefix_names && config.imsi_senders.prefix_names[prefixName]) {
         imsiSenders = filterOutCandidates(config.imsi_senders.prefix_names[prefixName]);
-        if (logger) logger.verbose('Suitable senders by prefix name', { destination, prefixName, imsiSenders });
+        if (logger) logger.verbose('MODEM-CHOOSER: Try to use imsi senders by prefix name', { destination, prefixName, imsiSenders });
     }
 
     if (!imsiSenders.length && config.imsi_senders.default && Array.isArray(config.imsi_senders.default) && config.imsi_senders.default.length) {
         imsiSenders = filterOutCandidates(config.imsi_senders.default);
-        if (logger) logger.verbose('Suitable default senders', { destination, prefixName, imsiSenders });
+        if (logger) logger.verbose('MODEM-CHOOSER: Try to use default senders', { destination, prefixName, imsiSenders });
     }
 
     if (!imsiSenders.length) {
         imsiSenders = filterOutCandidates([ await partnerLastSeen.get(destination) ]);
-        if (logger) logger.verbose('Suitable senders by last seen', { destination, prefixName, imsiSenders });
+        if (logger) logger.verbose('MODEM-CHOOSER: Try to use sender by last seen', { destination, prefixName, imsiSenders });
     }
 
     if (!imsiSenders.length) {
-        if (logger) logger.verbose('No suitable sender found', { destination, prefixName });
+        if (logger) logger.warn('MODEM-CHOOSER: No suitable sender found', { destination, prefixName });
         return;
     }
 
@@ -50,7 +54,7 @@ exports.chooser = async function chooser(destination, config) {
     const idx = Math.round(Math.random() * (count - 1));
     const imsiChoosed = imsiSenders[idx];
 
-    if (logger) logger.verbose(`Choose modem with IMSI ${imsiChoosed}`, { destination, prefixName, imsiSenders });
+    if (logger) logger.verbose(`MODEM-CHOOSER: gonna use modem with IMSI ${imsiChoosed}`, { destination, prefixName, imsiSenders });
 
     return imsiChoosed;
 }
\ No newline at end of file
-- 
1.9.0