diff options
Diffstat (limited to 'modules/luci-base/luasrc')
-rw-r--r-- | modules/luci-base/luasrc/http.lua | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/modules/luci-base/luasrc/http.lua b/modules/luci-base/luasrc/http.lua index aa8913607..29edb4470 100644 --- a/modules/luci-base/luasrc/http.lua +++ b/modules/luci-base/luasrc/http.lua @@ -397,7 +397,15 @@ function mimedecode_message_body(src, msg, file_cb) field.fd:seek(0, "set") end else - msg.params[field.name] = field.value or "" + local val = msg.params[field.name] + + if type(val) == "table" then + val[#val+1] = field.value or "" + elseif val ~= nil then + msg.params[field.name] = { val, field.value or "" } + else + msg.params[field.name] = field.value or "" + end end field = nil @@ -437,7 +445,15 @@ function urldecode_message_body(src, msg) elseif what == parser.NAME then name = lhttp.urldecode(buffer) elseif what == parser.VALUE and name then - msg.params[name] = lhttp.urldecode(buffer) or "" + local val = msg.params[name] + + if type(val) == "table" then + val[#val+1] = lhttp.urldecode(buffer) or "" + elseif val ~= nil then + msg.params[name] = { val, lhttp.urldecode(buffer) or "" } + else + msg.params[name] = lhttp.urldecode(buffer) or "" + end elseif what == parser.ERROR then err = buffer end |