summaryrefslogtreecommitdiffstats
path: root/aconf/model/root.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2015-02-09 19:44:12 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2015-02-12 16:32:41 +0200
commit29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6 (patch)
treea8ad7d5343c41950ff9c8f96a55f41a80271f72a /aconf/model/root.lua
parent07a0eb180872401b271de40190603df8f3ab3db2 (diff)
downloadaconf-29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6.tar.bz2
aconf-29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6.tar.xz
proper escaping for back-end addresses
Diffstat (limited to 'aconf/model/root.lua')
-rw-r--r--aconf/model/root.lua8
1 files changed, 5 insertions, 3 deletions
diff --git a/aconf/model/root.lua b/aconf/model/root.lua
index 9b05488..e8525db 100644
--- a/aconf/model/root.lua
+++ b/aconf/model/root.lua
@@ -9,6 +9,7 @@ local model = require('aconf.model.model')
local node = require('aconf.model.node')
local object = require('aconf.object')
local pth = require('aconf.path')
+local address = require('aconf.path.address')
local util = require('aconf.util')
local setdefault = util.setdefault
@@ -39,18 +40,19 @@ local order = 0
function M.topology(addr, create)
local top = _topology
if type(addr) == 'table' then addr = util.copy(addr)
- else addr = pth.split(addr) end
+ else addr = address.split(addr) end
local function defaults(top)
return util.setdefaults(top, {members={}, paths={}, referrers={}})
end
while #addr > 0 do
+ local comp = address.escape(addr[1])
if create then
- top = setdefault(defaults(top).members, addr[1], {order=order})
+ top = setdefault(defaults(top).members, comp, {order=order})
order = order + 1
else
- top = top.members[addr[1]] or top.members[pth.wildcard]
+ top = top.members[comp] or top.members['*']
if not top then return end
end
table.remove(addr, 1)