net.httpserver: Make it possible to return responses with no body

Thu, 21 Jan 2010 13:14:52 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Thu, 21 Jan 2010 13:14:52 +0000
changeset 2481
9b407a6acf39
parent 2480
3596d181cfc3
child 2482
a1570e371258

net.httpserver: Make it possible to return responses with no body

net/httpserver.lua file | annotate | diff | comparison | revisions
--- a/net/httpserver.lua	Thu Jan 21 13:10:13 2010 +0000
+++ b/net/httpserver.lua	Thu Jan 21 13:14:52 2010 +0000
@@ -36,8 +36,8 @@
 local function send_response(request, response)
 	-- Write status line
 	local resp;
-	if response.body then
-		local body = tostring(response.body);
+	if response.body or response.headers then
+		local body = response.body and 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;
@@ -46,12 +46,12 @@
 				t_insert(resp, k..": "..v.."\r\n");
 			end
 		end
-		if not (h and h["Content-Length"]) then
+		if body and not (h and h["Content-Length"]) then
 			t_insert(resp, "Content-Length: "..#body.."\r\n");
 		end
 		t_insert(resp, "\r\n");
 		
-		if request.method ~= "HEAD" then
+		if body and request.method ~= "HEAD" then
 			t_insert(resp, body);
 		end
 		request.write(t_concat(resp));

mercurial