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 2836
dfb5fa77d437
parent 2835
ff5039708b19
child 2837
a17e73ab5f4c

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;
@@ -49,14 +49,14 @@
 				t_insert(resp, "\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: ");
 			t_insert(resp, #body);
 			t_insert(resp, "\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
 	else

mercurial