diff options
author | Waqas Hussain <waqas20@gmail.com> | 2010-11-05 02:09:56 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2010-11-05 02:09:56 +0500 |
commit | 64cf101b58958d0bdabe7ab00114e3f9bba7a0f4 (patch) | |
tree | 2be180e0b7b8e39a427b1cf5eadeebe8412f6805 | |
parent | 309c2b4e42a49f9ff25b6f842474c0469036e0e7 (diff) | |
download | prosody-64cf101b58958d0bdabe7ab00114e3f9bba7a0f4.tar.gz prosody-64cf101b58958d0bdabe7ab00114e3f9bba7a0f4.zip |
util.httpstream: Move HTTP header parsing into its own function.
-rw-r--r-- | util/httpstream.lua | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/util/httpstream.lua b/util/httpstream.lua index 95d51726..e2127b80 100644 --- a/util/httpstream.lua +++ b/util/httpstream.lua @@ -26,14 +26,7 @@ local function parser(data, success_cb) 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 @@ local function parser(data, success_cb) 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"]); |