diff options
author | Steven Barth <steven@midlink.org> | 2008-09-02 15:03:18 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-09-02 15:03:18 +0000 |
commit | 95f9bb97ba1d247819e66bced6988ec39301d2e5 (patch) | |
tree | bb35e3ed01c90146e128338fefe7f0301a215bb7 | |
parent | 048fe5ce12c63c910cc92b568ec2fdca90c63d62 (diff) |
Fixed occasionally occuring "Overload"-problems with luci-httpd
-rw-r--r-- | libs/httpd/luasrc/httpd/handler/luci.lua | 14 |
1 files changed, 13 insertions, 1 deletions
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 |