diff options
Diffstat (limited to 'libs/web/luasrc/http/protocol.lua')
-rw-r--r-- | libs/web/luasrc/http/protocol.lua | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/libs/web/luasrc/http/protocol.lua b/libs/web/luasrc/http/protocol.lua index 4ff2cb8f9..d9259f660 100644 --- a/libs/web/luasrc/http/protocol.lua +++ b/libs/web/luasrc/http/protocol.lua @@ -370,9 +370,6 @@ function parse_message_header( data ) message.headers = hdrs - -- Get content - local clen = ( hdrs['Content-Length'] or HTTP_MAX_CONTENT ) + 0 - -- Process get parameters if ( method == "get" or method == "post" ) and message.request_uri:match("?") @@ -421,25 +418,24 @@ end function parse_message_body( reader, message, filecb ) if type(message) == "table" then + local env = message.env - local hdrs = message.headers - + local clen = ( env.CONTENT_LENGTH or HTTP_MAX_CONTENT ) + 0 + -- Process post method - if message.request_method == "post" and hdrs['Content-Type'] then - + if env.REQUEST_METHOD:lower() == "post" and env.CONTENT_TYPE then -- Is it multipart/form-data ? - if hdrs['Content-Type']:match("^multipart/form%-data") then + if env.CONTENT_TYPE:match("^multipart/form%-data") then for k, v in pairs( mimedecode( reader, - hdrs['Content-Type']:match("boundary=(.+)"), + env.CONTENT_TYPE:match("boundary=(.+)"), filecb ) ) do message.params[k] = v end - -- Is it x-www-urlencoded? - elseif hdrs['Content-Type'] == 'application/x-www-urlencoded' then - + -- Is it x-www-form-urlencoded? + elseif env.CONTENT_TYPE:match('^application/x%-www%-form%-urlencoded') then -- XXX: readline isn't the best solution here for chunk in reader do for k, v in pairs( urldecode_params( chunk ) ) do @@ -458,7 +454,6 @@ function parse_message_body( reader, message, filecb ) -- If a file callback is given then feed it line by line, else -- store whole buffer in message.content else - for chunk in reader do -- We have a callback, feed it. |