From 3cfdcf28c861f4da40668678161c6313f067b918 Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Thu, 14 Dec 2017 16:16:41 -0500 Subject: [PATCH] telnetd: diag "restart" command It's a bit of a pain to restart a node over telnet using "diag exec" because network callbacks will crash due to races(?) against node.restart if that's dispatched immediately. Add a command to dispatch it "soon". --- telnetd/telnetd-diag.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/telnetd/telnetd-diag.lua b/telnetd/telnetd-diag.lua index e3b238f..612171c 100644 --- a/telnetd/telnetd-diag.lua +++ b/telnetd/telnetd-diag.lua @@ -4,6 +4,9 @@ return { ["info"] = function(_,s) s(string.format("major=%d minor=%d dev=%d chip=%d flash=%d fs=%d fm=%d fs=%d",node.info())) end, ["heap"] = function(_,s) s(string.format("free=%d",node.heap())) end, ["fifo"] = function(_,s) if rtcfifo and rtcfifo.ready() ~= 0 then s(string.format("fifo=%d",rtcfifo.count())) else s("no rtcfifo") end end, + -- restart in one tick, so that network callbacks have a chance to fire + -- first, or else we might crash. Ick! + ["restart"] = function(_,s) tmr.create():alarm(1, tmr.ALARM_SINGLE, node.restart) end, ["exec"] = function(l,s) local f, err = loadstring(l) if f -- 2.50.1