X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=libs%2Fhttp%2Fluasrc%2Fhttp%2Fprotocol.lua;h=e0c15015b28890330406210cc22d47d52a7aff80;hb=0ba0030745c3c23a3343484341575e127fb483f3;hp=93c9e79991cac02fae8ed56202868c76b3caf42c;hpb=a54b1945c407b7fecaae8aac57fa3338eb11a3bc;p=project%2Fluci.git diff --git a/libs/http/luasrc/http/protocol.lua b/libs/http/luasrc/http/protocol.lua index 93c9e7999..e0c15015b 100644 --- a/libs/http/luasrc/http/protocol.lua +++ b/libs/http/luasrc/http/protocol.lua @@ -131,7 +131,7 @@ function urlencode_params( tbl ) return enc end ---- (Internal function) +-- (Internal function) -- Initialize given parameter and coerce string into table when the parameter -- already exists. -- @param tbl Table where parameter should be created @@ -147,7 +147,7 @@ local function __initval( tbl, key ) end end ---- (Internal function) +-- (Internal function) -- Append given data to given parameter, either by extending the string value -- or by appending it to the last string in the parameter's value table. -- @param tbl Table containing the previously initialized parameter value @@ -163,7 +163,7 @@ local function __appendval( tbl, key, chunk ) end end ---- (Internal function) +-- (Internal function) -- Finish the value of given parameter, either by transforming the string value -- or - in the case of multi value parameters - the last element in the -- associated values table. @@ -309,7 +309,7 @@ end -- file contents chunk by chunk and only the extracted file name is stored -- within the params table. The callback function will be called subsequently -- with three arguments: --- o Table containing the mime headers of the corresponding section +-- o Table containing decoded (name, file) and raw (headers) mime header data -- o String value containing a chunk of the file data -- o Boolean which indicates wheather the current chunk is the last one (eof) -- @param src Ltn12 source function @@ -421,7 +421,7 @@ function mimedecode_message_body( src, msg, filecb ) end if store then - store( field.headers, predata, true ) + store( field, predata, true ) end @@ -439,7 +439,7 @@ function mimedecode_message_body( src, msg, filecb ) data = data:sub( 1, #data - 78 ) if store then - store( field.headers, data, false ) + store( field, data, false ) else return nil, "Invalid MIME section header" end @@ -451,7 +451,7 @@ function mimedecode_message_body( src, msg, filecb ) lchunk, eof = parse_headers( data, field ) inhdr = not eof else - store( field.headers, lchunk, false ) + store( field, lchunk, false ) lchunk, chunk = chunk, nil end end @@ -563,12 +563,14 @@ function parse_message_header( src ) -- Populate common environment variables msg.env = { CONTENT_LENGTH = msg.headers['Content-Length']; - CONTENT_TYPE = msg.headers['Content-Type']; + CONTENT_TYPE = msg.headers['Content-Type'] or msg.headers['Content-type']; REQUEST_METHOD = msg.request_method:upper(); REQUEST_URI = msg.request_uri; SCRIPT_NAME = msg.request_uri:gsub("?.+$",""); SCRIPT_FILENAME = ""; -- XXX implement me - SERVER_PROTOCOL = "HTTP/" .. string.format("%.1f", msg.http_version) + SERVER_PROTOCOL = "HTTP/" .. string.format("%.1f", msg.http_version); + QUERY_STRING = msg.request_uri:match("?") + and msg.request_uri:gsub("^.+?","") or "" } -- Populate HTTP_* environment variables @@ -617,7 +619,7 @@ function parse_message_body( src, msg, filecb ) -- Is it application/x-www-form-urlencoded ? elseif msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and - msg.env.CONTENT_TYPE == "application/x-www-form-urlencoded" + msg.env.CONTENT_TYPE:match("^application/x%-www%-form%-urlencoded") then return urldecode_message_body( src, msg, filecb )