diff --git a/storage/tail/28-tail.js b/storage/tail/28-tail.js index aa44bbcf..9031f8b9 100644 --- a/storage/tail/28-tail.js +++ b/storage/tail/28-tail.js @@ -41,11 +41,29 @@ module.exports = function(RED) { }); } else { - node.tout = setTimeout(function() { fileTail(); },10000); + scheduleRestart(); node.warn(RED._("tail.errors.filenotfound") + ": "+node.filename); } } + var scheduleRestart = function() { + node.tout = setTimeout(function() { + node.tout = null; + fileTail(); + }, 10000); + }; + + var cancelRestart = function() { + if (node.tout) { + clearTimeout(node.tout); + node.tout = null; + } + }; + + var isRestartPending = function() { + return !!node.tout; + }; + if (node.filename !== "") { node.status({}); fileTail(); @@ -57,12 +75,12 @@ module.exports = function(RED) { } else if (msg.filename === "") { node.filename = ""; if (node.tail) { node.tail.unwatch(); } - if (node.tout) { clearTimeout(node.tout); } + cancelRestart(); node.status({ fill: "grey", text: "tail.state.stopped" }); } else { node.filename = msg.filename; if (node.tail) { node.tail.unwatch(); } - if (!node.tout) { fileTail(); } + if (!isRestartPending()) { fileTail(); } node.status({ fill: "green", text: node.filename }); } }); @@ -72,7 +90,7 @@ module.exports = function(RED) { /* istanbul ignore else */ if (node.tail) { node.tail.unwatch(); } delete node.tail; - if (node.tout) { clearTimeout(node.tout); } + cancelRestart(); }); }