+
+
+-- Push a response to a socket
+function push_response(request, response, sourceout, sinkout, sinkerr)
+ local code = response.status
+ sinkout(request.env.SERVER_PROTOCOL .. " " .. code .. " " .. statusmsg[code] .. "\r\n")
+
+ -- FIXME: Add support for keep-alive
+ response.headers["Connection"] = "close"
+
+ for k,v in pairs(response.headers) do
+ sinkout(k .. ": " .. v .. "\r\n")
+ end
+
+ sinkout("\r\n")
+
+ if sourceout then
+ ltn12.pump.all(sourceout, sinkout)
+ end
+end
+
+
+-- Status codes
+statusmsg = {
+ [200] = "OK",
+ [400] = "Bad Request",
+ [403] = "Forbidden",
+ [404] = "Not Found",
+ [500] = "Internal Server Error",
+ [503] = "Server Unavailable",
+}
\ No newline at end of file