Changeset

3562:98f9dca3eb94

util.httpstream: Move HTTP header parsing into its own function.
author Waqas Hussain <waqas20@gmail.com>
date Fri, 05 Nov 2010 02:09:56 +0500
parents 3561:579c087059fc
children 3563:544d9d2e3046
files util/httpstream.lua
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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"]);