Changeset

3567:94828fb2dab8

util.httpstream: Don't attempt to read response body for HEAD requests, or when status code indicates no body is present.
author Waqas Hussain <waqas20@gmail.com>
date Sat, 06 Nov 2010 01:58:46 +0500
parents 3566:75d287daad16
children 3568:51d5578965a5
files util/httpstream.lua
diffstat 1 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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({