summaryrefslogtreecommitdiffhomepage
path: root/libs/httpd/luasrc/httpd.lua
diff options
context:
space:
mode:
Diffstat (limited to 'libs/httpd/luasrc/httpd.lua')
-rw-r--r--libs/httpd/luasrc/httpd.lua126
1 files changed, 0 insertions, 126 deletions
diff --git a/libs/httpd/luasrc/httpd.lua b/libs/httpd/luasrc/httpd.lua
deleted file mode 100644
index 75f5132e0..000000000
--- a/libs/httpd/luasrc/httpd.lua
+++ /dev/null
@@ -1,126 +0,0 @@
---[[
-
-HTTP server implementation for LuCI - core
-(c) 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
-(c) 2008 Steven Barth <steven@midlink.org>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-$Id$
-
-]]--
-
-module("luci.httpd", package.seeall)
-require("socket")
-
-THREAD_IDLEWAIT = 0.01
-THREAD_TIMEOUT = 90
-THREAD_LIMIT = nil
-
-local reading = {}
-local clhandler = {}
-local erhandler = {}
-
-local threadc = 0
-local threads = {}
-local threadm = {}
-local threadi = {}
-
-local _meta = {__mode = "k"}
-setmetatable(threadm, _meta)
-setmetatable(threadi, _meta)
-
-
-function Socket(ip, port)
- local sock, err = socket.bind( ip, port )
-
- if sock then
- sock:settimeout( 0, "t" )
- end
-
- return sock, err
-end
-
-function corecv(socket, ...)
- threadi[socket] = true
-
- while true do
- local chunk, err, part = socket:receive(...)
-
- if err ~= "timeout" then
- threadi[socket] = false
- return chunk, err, part
- end
-
- coroutine.yield()
- end
-end
-
-function cosend(socket, chunk, i, ...)
- threadi[socket] = true
- i = i or 1
-
- while true do
- local stat, err, sent = socket:send(chunk, i, ...)
-
- if err ~= "timeout" then
- threadi[socket] = false
- return stat, err, sent
- else
- i = sent and (sent + 1) or i
- end
-
- coroutine.yield()
- end
-end
-
-function register(socket, s_clhandler, s_errhandler)
- table.insert(reading, socket)
- clhandler[socket] = s_clhandler
- erhandler[socket] = s_errhandler
-end
-
-function run()
- while true do
- step()
- end
-end
-
-function step()
- local idle = true
- if not THREAD_LIMIT or threadc < THREAD_LIMIT then
- local now = os.time()
- for i, server in ipairs(reading) do
- local client = server:accept()
- if client then
- threadm[client] = now
- threadc = threadc + 1
- threads[client] = coroutine.create(clhandler[server])
- end
- end
- end
-
- for client, thread in pairs(threads) do
- coroutine.resume(thread, client)
- 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
- client:close()
- elseif not threadi[client] then
- threadm[client] = now
- idle = false
- end
- end
-
- if idle then
- socket.sleep(THREAD_IDLEWAIT)
- end
-end