X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=net%2Fhttpserver.lua;h=d401f47c6552e8c7f4855eea084433ee31f0b4bb;hb=16a715ba85d8c092f27d3d07715ddae742fe19ea;hp=4c1200acd7df2bf282dda7565a53c97cb8890f22;hpb=70281db08732799bcd1ff4dcc3ca51b1388f1375;p=prosody.git diff --git a/net/httpserver.lua b/net/httpserver.lua index 4c1200ac..d401f47c 100644 --- a/net/httpserver.lua +++ b/net/httpserver.lua @@ -7,7 +7,6 @@ -- -local socket = require "socket" local server = require "net.server" local url_parse = require "socket.url".parse; local httpstream_new = require "util.httpstream".new; @@ -17,10 +16,9 @@ local connlisteners_get = require "net.connlisteners".get; local listener; local t_insert, t_concat = table.insert, table.concat; -local s_match, s_gmatch = string.match, string.gmatch; local tonumber, tostring, pairs, ipairs, type = tonumber, tostring, pairs, ipairs, type; -local urlencode = function (s) return s and (s:gsub("%W", function (c) return string.format("%%%02x", c:byte()); end)); end +local urlencode = function (s) return s and (s:gsub("%W", function (c) return ("%%%02x"):format(c:byte()); end)); end local log = require "util.logger".init("httpserver"); @@ -119,6 +117,7 @@ local function request_reader(request, data, startpos) local function success_cb(r) for k,v in pairs(r) do request[k] = v; end request.url = url_parse(request.path); + request.url.path = request.url.path and request.url.path:gsub("%%(%x%x)", function(x) return x.char(tonumber(x, 16)) end); request.body = { request.body }; call_callback(request); end