* libs/httpd: Fixed garbage collection
authorSteven Barth <steven@midlink.org>
Wed, 2 Jul 2008 15:41:47 +0000 (15:41 +0000)
committerSteven Barth <steven@midlink.org>
Wed, 2 Jul 2008 15:41:47 +0000 (15:41 +0000)
libs/httpd/luasrc/httpd.lua

index dbbe4c606de21868f0f79d25c38676281bf0bdc8..541063cc7e21cf16c6132076d75e76fb868b3615 100644 (file)
@@ -31,7 +31,6 @@ local threadm = {}
 local threadi = {}
 
 local _meta = {__mode = "k"}
-setmetatable(threads, _meta)
 setmetatable(threadm, _meta)
 setmetatable(threadi, _meta)
 
@@ -110,6 +109,7 @@ function step()
                local now = os.time()
                if coroutine.status(thread) == "dead" then
                        threadc = threadc - 1
+                       threads[client] = nil
                elseif threadm[client] and threadm[client] + THREAD_TIMEOUT < now then
                        threads[client] = nil
                        threadc = threadc - 1   
@@ -121,6 +121,7 @@ function step()
        end
        
        if idle then
+               collectgarbage()
                socket.sleep(THREAD_IDLEWAIT)
        end
 end