util/httpstream.lua
changeset 3567 94828fb2dab8
parent 3566 75d287daad16
child 3568 51d5578965a5
--- a/util/httpstream.lua	Sat Nov 06 01:54:58 2010 +0500
+++ b/util/httpstream.lua	Sat Nov 06 01:58:46 2010 +0500
@@ -71,16 +71,23 @@
 			local headers = readheaders();
 			
 			-- read body
+			local have_body = not
+				 ( (options_cb and options_cb().method == "HEAD")
+				or (status_code == 204 or status_code == 304 or status_code == 301)
+				or (status_code >= 100 and status_code < 200) );
+			
 			local body;
-			local len = tonumber(headers["content-length"]);
-			if len then -- TODO check for invalid len
-				body = readlength(len);
-			else -- read to end
-				repeat
-					local newdata = coroutine.yield();
-					data = data..newdata;
-				until newdata == "";
-				body, data = data, "";
+			if have_body then
+				local len = tonumber(headers["content-length"]);
+				if len then -- TODO check for invalid len
+					body = readlength(len);
+				else -- read to end
+					repeat
+						local newdata = coroutine.yield();
+						data = data..newdata;
+					until newdata == "";
+					body, data = data, "";
+				end
 			end
 			
 			success_cb({