From 95f9bb97ba1d247819e66bced6988ec39301d2e5 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Tue, 2 Sep 2008 15:03:18 +0000 Subject: Fixed occasionally occuring "Overload"-problems with luci-httpd --- libs/httpd/luasrc/httpd/handler/luci.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'libs') diff --git a/libs/httpd/luasrc/httpd/handler/luci.lua b/libs/httpd/luasrc/httpd/handler/luci.lua index 737abd479e..c3720ff871 100644 --- a/libs/httpd/luasrc/httpd/handler/luci.lua +++ b/libs/httpd/luasrc/httpd/handler/luci.lua @@ -41,7 +41,15 @@ end function Luci.handle_get(self, request, sourcein, sinkerr) if self.limit and #self.running >= self.limit then - return self:failure(503, "Overload") + for k, v in ipairs(self.running) do + if coroutine.status(v) == "dead" then + collectgarbage() + break + end + end + if #self.running >= self.limit then + return self:failure(503, "Overload") + end end table.insert(self.running, coroutine.running()) @@ -84,6 +92,10 @@ function Luci.handle_get(self, request, sourcein, sinkerr) return true elseif id == 5 then active = false + + while (coroutine.resume(x)) do + end + return nil elseif id == 4 then return data -- cgit v1.2.3