libs/lucid: only execute handlers if daemon is below the thread limit, this allows to hold connections without having to fork immediately

This commit is contained in:
Jo-Philipp Wich 2009-07-06 22:26:46 +00:00
parent 644bc4ac3a
commit 238404ee83

View file

@ -110,19 +110,22 @@ end
-- This main function of LuCId will wait for events on given file descriptors.
function run()
local pollint = tonumber((cursor:get(UCINAME, "main", "pollinterval")))
local threadlimit = tonumber(cursor:get(UCINAME, "main", "threadlimit"))
while true do
local stat, code = nixio.poll(pollt, pollint)
if not threadlimit or tcount < threadlimit then
local stat, code = nixio.poll(pollt, pollint)
if stat and stat > 0 then
for _, polle in ipairs(pollt) do
if polle.revents ~= 0 and polle.handler then
polle.handler(polle)
if stat and stat > 0 then
for _, polle in ipairs(pollt) do
if polle.revents ~= 0 and polle.handler then
polle.handler(polle)
end
end
elseif stat == 0 then
ifaddrs = nixio.getifaddrs()
collectgarbage("collect")
end
elseif stat == 0 then
ifaddrs = nixio.getifaddrs()
collectgarbage("collect")
end
for _, cb in ipairs(tickt) do
@ -317,4 +320,4 @@ function daemonize()
nixio.dup(devnull, nixio.stderr)
return true
end
end