Repository : ssh://git@open-mesh.org/openwrt-feed-devel
On branch : master
commit 7628174bd470b2f5bd80f6d3d4360f3a365e98ed Author: Gui Iribarren gui@altermundi.net Date: Mon Aug 8 00:35:35 2016 +0200
alfred-devel: bat-hosts.lua: 'alfred -r' can fail with no output, so retry 3 times
Signed-off-by: Gui Iribarren gui@altermundi.net Signed-off-by: Sven Eckelmann sven@narfation.org
7628174bd470b2f5bd80f6d3d4360f3a365e98ed alfred-devel/files/bat-hosts.lua | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/alfred-devel/files/bat-hosts.lua b/alfred-devel/files/bat-hosts.lua index 8648caf..f9fe586 100644 --- a/alfred-devel/files/bat-hosts.lua +++ b/alfred-devel/files/bat-hosts.lua @@ -87,19 +87,24 @@ end
local function receive_bat_hosts() -- read raw chunks from alfred, convert them to a nested table and call write_bat_hosts - local fd = io.popen("alfred -r " .. type_id) - --[[ this command returns something like - { "54:e6:fc:b9:cb:37", "00:11:22:33:44:55 ham_wlan0\x0a00:22:33:22:33:22 ham_eth0\x0a" }, - { "90:f6:52:bb:ec:57", "00:22:33:22:33:23 spam\x0a" }, - ]]-- - - if fd then - local output = fd:read("*a") - if output then - assert(loadstring("rows = {" .. output .. "}"))() - write_bat_hosts(rows) +-- "alfred -r" can fail in slave nodes (returns empty stdout), so: +-- check output is not null before writing /tmp/bat-hosts, and retry 3 times before giving up. + for n = 1, 3 do + local fd = io.popen("alfred -r " .. type_id) + --[[ this command returns something like + { "54:e6:fc:b9:cb:37", "00:11:22:33:44:55 ham_wlan0\x0a00:22:33:22:33:22 ham_eth0\x0a" }, + { "90:f6:52:bb:ec:57", "00:22:33:22:33:23 spam\x0a" }, + ]]-- + + if fd then + local output = fd:read("*a") + fd:close() + if output and output ~= "" then + assert(loadstring("rows = {" .. output .. "}"))() + write_bat_hosts(rows) + break + end end - fd:close() end end