From 7d102033fc72f9ed78f832a228a79436229fa0f8 Mon Sep 17 00:00:00 2001 From: zefie Date: Mon, 9 Aug 2021 13:07:44 -0400 Subject: [PATCH] fix socket cleanup timeout system --- zefie_wtvp_minisrv/app.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/zefie_wtvp_minisrv/app.js b/zefie_wtvp_minisrv/app.js index 04e90d06..df2df93c 100644 --- a/zefie_wtvp_minisrv/app.js +++ b/zefie_wtvp_minisrv/app.js @@ -1313,14 +1313,16 @@ async function cleanupSocket(socket) { // set timer to destroy entirety of session data if client does not return in X time var timeout = 180000; // timeout is in milliseconds, default 180000 (3 min) .. be sure to allow time for dialup reconnections - if (!ssid_sessions[socket.ssid].data_store.socket_check) { - ssid_sessions[socket.ssid].data_store.socket_check = setTimeout(function (ssid) { - if (ssid_sessions[ssid].currentConnections() === 0) { - if (!zquiet) console.log(" * WebTV SSID", filterSSID(ssid), " has not been seen in", (timeout / 1000), "seconds, cleaning up session data for this SSID"); - delete ssid_sessions[ssid]; - } - }, timeout, socket.ssid); - } + // clear any existing timeout check + if (ssid_sessions[socket.ssid].data_store.socket_check) clearTimeout(ssid_sessions[socket.ssid].data_store.socket_check); + + // set timeout to check + ssid_sessions[socket.ssid].data_store.socket_check = setTimeout(function (ssid) { + if (ssid_sessions[ssid].currentConnections() === 0) { + if (!zquiet) console.log(" * WebTV SSID", filterSSID(ssid), " has not been seen in", (timeout / 1000), "seconds, cleaning up session data for this SSID"); + delete ssid_sessions[ssid]; + } + }, timeout, socket.ssid); } } socket.end();