summaryrefslogtreecommitdiffhomepage
path: root/libs/httpd/luasrc/httpd.lua
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-06-23 19:41:35 +0000
committerSteven Barth <steven@midlink.org>2008-06-23 19:41:35 +0000
commit02cce96c83dfa42de026894d9447ce75f731510a (patch)
treebacc597816e2a4334e8a4cd53cba9845f215a2d4 /libs/httpd/luasrc/httpd.lua
parentd5deb7a99aa3ccad8305e405aa25e170e9bc7e33 (diff)
* libs/httpd: Added performance ;-)
Diffstat (limited to 'libs/httpd/luasrc/httpd.lua')
-rw-r--r--libs/httpd/luasrc/httpd.lua66
1 files changed, 40 insertions, 26 deletions
diff --git a/libs/httpd/luasrc/httpd.lua b/libs/httpd/luasrc/httpd.lua
index 82f1be97d..d0a07faa7 100644
--- a/libs/httpd/luasrc/httpd.lua
+++ b/libs/httpd/luasrc/httpd.lua
@@ -67,28 +67,36 @@ function Daemon.step(self)
for i, connection in ipairs(input) do
local sock = connection:accept()
-
- -- check capacity
- if not self.threadlimit or #self.running < self.threadlimit then
-
- self:dprint("Accepted incoming connection from " .. sock:getpeername())
-
- table.insert( self.running, {
- coroutine.create( self.handler[connection].clhandler ),
- sock
- } )
-
- self:dprint("Created " .. tostring(self.running[#self.running][1]))
-
- -- reject client
- else
- self:dprint("Rejected incoming connection from " .. sock:getpeername())
-
- if self.handler[connection].errhandler then
- self.handler[connection].errhandler( sock )
+
+ if sock then
+ -- check capacity
+ if not self.threadlimit or #self.running < self.threadlimit then
+
+ if self.debug then
+ self:dprint("Accepted incoming connection from " .. sock:getpeername())
+ end
+
+ table.insert( self.running, {
+ coroutine.create( self.handler[connection].clhandler ),
+ sock
+ } )
+
+ if self.debug then
+ self:dprint("Created " .. tostring(self.running[#self.running][1]))
+ end
+
+ -- reject client
+ else
+ if self.debug then
+ self:dprint("Rejected incoming connection from " .. sock:getpeername())
+ end
+
+ if self.handler[connection].errhandler then
+ self.handler[connection].errhandler( sock )
+ end
+
+ sock:close()
end
-
- sock:close()
end
end
@@ -97,16 +105,22 @@ function Daemon.step(self)
-- reap dead clients
if coroutine.status( client[1] ) == "dead" then
- self:dprint("Completed " .. tostring(client[1]))
+ if self.debug then
+ self:dprint("Completed " .. tostring(client[1]))
+ end
table.remove( self.running, i )
else
- self:dprint("Resuming " .. tostring(client[1]))
+ if self.debug then
+ self:dprint("Resuming " .. tostring(client[1]))
+ end
local stat, err = coroutine.resume( client[1], client[2] )
+
+ if self.debug then
+ self:dprint(tostring(client[1]) .. " returned")
+ end
- self:dprint(tostring(client[1]) .. " returned")
-
- if not stat then
+ if not stat and self.debug then
self:dprint("Error in " .. tostring(client[1]) .. " " .. err)
end
end