-- Write status line
local resp;
if response.body then
+ local body = tostring(response.body);
log("debug", "Sending response to %s", request.id);
resp = { "HTTP/1.0 ", response.status or "200 OK", "\r\n"};
local h = response.headers;
t_insert(resp, "\r\n");
end
end
- if response.body and not (h and h["Content-Length"]) then
+ if not (h and h["Content-Length"]) then
t_insert(resp, "Content-Length: ");
- t_insert(resp, #response.body);
+ t_insert(resp, #body);
t_insert(resp, "\r\n");
end
t_insert(resp, "\r\n");
- if response.body and request.method ~= "HEAD" then
- t_insert(resp, response.body);
+ if request.method ~= "HEAD" then
+ t_insert(resp, body);
end
else
-- Response we have is just a string (the body)
- log("debug", "Sending response to %s: %s", request.id or "<none>", response or "<none>");
+ log("debug", "Sending 200 response to %s", request.id or "<none>");
resp = { "HTTP/1.0 200 OK\r\n" };
t_insert(resp, "Connection: close\r\n");
end
callback = (request.server and request.server.handlers[base]) or default_handler;
- if callback == default_handler then
- log("debug", "Default callback for this request (base: "..tostring(base)..")")
- end
end
if callback then
if err then
if response then
if response == true and not request.destroyed then
-- Keep connection open, we will reply later
- log("warn", "Request %s left open, on_destroy is %s", request.id, tostring(request.on_destroy));
+ log("debug", "Request %s left open, on_destroy is %s", request.id, tostring(request.on_destroy));
elseif response ~= true then
-- Assume response
send_response(request, response);
end
end
+function set_default_handler(handler)
+ default_handler = handler;
+end
+
function new_from_config(ports, default_base, handle_request)
for _, options in ipairs(ports) do
local port, base, ssl, interface = 5280, default_base, false, nil;