# HG changeset patch # User Kim Alvefur # Date 1427412496 -3600 # Node ID 03a43bf3ecd2bce6da11f155d5b0880d94451c43 # Parent 478308ee29ddad1b5cfaed0d5254332c9a9faa46# Parent 61b6a4fc65f1c932477ba3b056f7ff859651cc0e Merge with merge diff -r 478308ee29dd -r 03a43bf3ecd2 net/http/server.lua --- a/net/http/server.lua Fri Mar 27 00:27:29 2015 +0100 +++ b/net/http/server.lua Fri Mar 27 00:28:16 2015 +0100 @@ -189,7 +189,6 @@ persistent = persistent; conn = conn; send = _M.send_response; - done = _M.finish_response; finish_cb = finish_cb; }; conn._http_open_response = response; @@ -209,7 +208,7 @@ err_code, err = 400, "Missing or invalid 'Host' header"; end end - + if err then response.status_code = err_code; response:send(events.fire_event("http-error", { code = err_code, message = err })); @@ -218,7 +217,7 @@ local event = request.method.." "..host..request.path:match("[^?]*"); local payload = { request = request, response = response }; - log("debug", event); + log("debug", "Firing event: %s", event); local result = events.fire_event(event, payload); if result ~= nil then if result ~= true then @@ -251,30 +250,24 @@ response.status_code = 404; response:send(events.fire_event("http-error", { code = 404 })); end -local function prepare_header(response) +function _M.send_response(response, body) + if response.finished then return; end + response.finished = true; + response.conn._http_open_response = nil; + local status_line = "HTTP/"..response.request.httpversion.." "..(response.status or codes[response.status_code]); local headers = response.headers; + body = body or response.body or ""; + headers.content_length = #body; + local output = { status_line }; for k,v in pairs(headers) do t_insert(output, headerfix[k]..v); end t_insert(output, "\r\n\r\n"); - return output; -end -_M.prepare_header = prepare_header; -function _M.send_response(response, body) - if response.finished then return; end - body = body or response.body or ""; - response.headers.content_length = #body; - local output = prepare_header(response); t_insert(output, body); + response.conn:write(t_concat(output)); - response:done(); -end -function _M.finish_response(response) - if response.finished then return; end - response.finished = true; - response.conn._http_open_response = nil; if response.on_destroy then response:on_destroy(); response.on_destroy = nil; diff -r 478308ee29dd -r 03a43bf3ecd2 util-src/encodings.c