From 29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Mon, 9 Feb 2015 19:44:12 +0200 Subject: proper escaping for back-end addresses --- aconf/model/root.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'aconf/model/root.lua') 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) -- cgit v1.2.3