diff --git a/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua b/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua index 29a1f817..0e336ad5 100644 --- a/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua +++ b/package/gluon-announce/files/usr/lib/lua/gluon/announce.lua @@ -3,8 +3,11 @@ module('gluon.announce', package.seeall) fs = require 'nixio.fs' -uci = require('luci.model.uci').cursor() util = require 'gluon.util' +model_uci = require 'luci.model.uci' + + +local collect_dir local function collect_entry(entry) if fs.stat(entry, 'type') == 'dir' then @@ -49,3 +52,17 @@ function collect_dir(dir) return ret end end + +function collect(dir) + local f = collect_dir(dir) + + return function () + _M.uci = model_uci.cursor() + ret = f() + _M.uci = nil + + collectgarbage() + + return ret + end +end diff --git a/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua b/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua index 7c43a523..2dfe005c 100644 --- a/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua +++ b/package/gluon-announced/files/usr/lib/lua/gluon/announced.lua @@ -12,7 +12,7 @@ nixio.chdir('/lib/gluon/announce/') for dir in fs.glob('*.d') do local name = dir:sub(1, -3) memoize[name] = { - collect = announce.collect_dir(dir), + collect = announce.collect(dir), -- tonumber will return 0 for invalid inputs cache_time = tonumber(util.trim(fs.readfile(name .. '.cache') or '')) }