summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xlibs/httpd/host/runluci2
-rw-r--r--libs/httpd/luasrc/httpd.lua66
2 files changed, 41 insertions, 27 deletions
diff --git a/libs/httpd/host/runluci b/libs/httpd/host/runluci
index c9c93dde8..09039f553 100755
--- a/libs/httpd/host/runluci
+++ b/libs/httpd/host/runluci
@@ -27,6 +27,6 @@ io.stderr:write("Starting LuCI HTTPD on port " .. PORT .. "...\n")
io.stderr:write("Point your browser to http://localhost:" .. PORT .. "/luci\n")
daemon = luci.httpd.Daemon()
-daemon.debug = true
+--daemon.debug = true
daemon:register(serversocket, server:create_daemon_handlers())
daemon:run()
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