util.httpstream: Move HTTP header parsing into its own function.

Fri, 05 Nov 2010 02:09:56 +0500

author
Waqas Hussain <waqas20@gmail.com>
date
Fri, 05 Nov 2010 02:09:56 +0500
changeset 3562
98f9dca3eb94
parent 3561
579c087059fc
child 3563
544d9d2e3046

util.httpstream: Move HTTP header parsing into its own function.

util/httpstream.lua file | annotate | diff | comparison | revisions
--- a/util/httpstream.lua	Thu Nov 04 20:12:42 2010 +0500
+++ b/util/httpstream.lua	Fri Nov 05 02:09:56 2010 +0500
@@ -26,14 +26,7 @@
 		data = data:sub(n + 1);
 		return r;
 	end
-	
-	while true do
-		-- read status line
-		local status_line = readline();
-		local method, path, httpversion = status_line:match("^(%S+)%s+(%S+)%s+HTTP/(%S+)$");
-		if not method then coroutine.yield("invalid-status-line"); end
-		-- TODO parse url
-		
+	local function readheaders()
 		local headers = {}; -- read headers
 		while true do
 			local line = readline();
@@ -43,6 +36,15 @@
 			key = key:lower();
 			headers[key] = headers[key] and headers[key]..","..val or val;
 		end
+	end
+	
+	while true do
+		-- read status line
+		local status_line = readline();
+		local method, path, httpversion = status_line:match("^(%S+)%s+(%S+)%s+HTTP/(%S+)$");
+		if not method then coroutine.yield("invalid-status-line"); end
+		-- TODO parse url
+		local headers = readheaders();
 		
 		-- read body
 		local len = tonumber(headers["content-length"]);

mercurial