# HG changeset patch # User Kim Alvefur # Date 1471905854 -7200 # Node ID 0a3f526779a10da4240c46cdfe94289284299442 # Parent f1923bf329a30330ab44fd8683a89904ad662103 mod_http_upload: Construct the upload slot URL using the LuaSocket URL library (fixes #717) diff -r f1923bf329a3 -r 0a3f526779a1 mod_http_upload/mod_http_upload.lua --- a/mod_http_upload/mod_http_upload.lua Sat Aug 20 21:59:39 2016 +0200 +++ b/mod_http_upload/mod_http_upload.lua Tue Aug 23 00:44:14 2016 +0200 @@ -11,7 +11,7 @@ local st = require"util.stanza"; local lfs = require"lfs"; local uuid = require"util.uuid".generate; -local urlencode = require"util.http".urlencode; +local url = require "socket.url"; local dataform = require "util.dataforms".new; local t_concat = table.concat; local t_insert = table.insert; @@ -85,9 +85,16 @@ reply:tag("slot", { xmlns = xmlns_http_upload }); local random = uuid(); pending_slots[random.."/"..filename] = origin.full_jid; - local url = module:http_url() .. "/" .. random .. "/" .. urlencode(filename); - reply:tag("get"):text(url):up(); - reply:tag("put"):text(url):up(); + local base_url = module:http_url(); + local slot_url = url.parse(base_url); + slot_url.path = url.parse_path(slot_url.path); + t_insert(slot_url.path, random); + t_insert(slot_url.path, filename); + slot_url.path.is_directory = false; + slot_url.path = url.build_path(slot_url.path); + slot_url = url.build(slot_url); + reply:tag("get"):text(slot_url):up(); + reply:tag("put"):text(slot_url):up(); origin.send(reply); origin.log("debug", "Given upload slot %q", random); return true;