From 28ce72ca39404c56ba8190b23351a6a7bcdbf483 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 17 Feb 2021 19:29:53 +0100
Subject: [PATCH] Correct way to ping

---
 common/lkt.js | 46 ++++++++++++++++++++++++++++++++++++++++++++--
 main.js       |  3 ++-
 2 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/common/lkt.js b/common/lkt.js
index 6fb2163..bcc7733 100644
--- a/common/lkt.js
+++ b/common/lkt.js
@@ -39,7 +39,7 @@ class LktClient {
         });
 
         this.m_socket.on('ready', () => {
-            logger.debug('lkt', `Ready to use socker with localhost:${config.port}`);
+            logger.debug('lkt', `Ready to use socket with localhost:${config.port}`);
             this.m_online = true;
         });
 
@@ -284,7 +284,49 @@ class LktClient {
     }
 
     static ping() {
-        return LktClient.__execSimple('ping');
+        var socket = new net.Socket();
+        var result = {};
+        function __getResult(socket) {
+            return new Promise(resolv => {
+                const sockopt = {
+                    port: config.port,
+                    host: config.host,
+                    readable: true,
+                    writable: true,
+                };
+                logger.debug('lkt', 'Try to ping');
+
+                socket.setTimeout(3000);
+                socket.setEncoding('utf8');
+
+                socket.on('timeout', () => {
+                    logger.error('lkt', `Got timeout while ping to localhost:${config.port}`);
+                    result = false;
+                    resolv(result);
+                });
+
+                socket.on('ready', () => {
+                    logger.debug('lkt', `Ping success with localhost:${config.port}`);
+                    result = true;
+                    resolv(result);
+                });
+
+                socket.on('error', err => {
+                    logger.error('lkt', `${err}`);
+                    result = false;
+                    resolv(result);
+                });
+
+                socket.connect(sockopt, () => {
+                    logger.info('lkt', `Pinged localhost:${config.port}`);
+                    socket.destroy();
+                    result = true;
+                    resolv(result);
+                });
+            });
+        }
+
+        return __getResult(socket);
     }
 }
 
diff --git a/main.js b/main.js
index 0740484..f69a3de 100644
--- a/main.js
+++ b/main.js
@@ -287,7 +287,8 @@ ipcMain.on('verify-state', (event, arg) => {
 });
 
 ipcMain.on('verify-lektord', (event, arg) => {
-    lkt.ping().then(data => {
+    lkt.ping().then(sta => {
+        logger.debug('main', `Status from ping is ${sta}`);
         lkt.reloadState();
         event.reply('send-lektord');
     });
-- 
GitLab