diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2015-02-09 19:44:12 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2015-02-12 16:32:41 +0200 |
commit | 29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6 (patch) | |
tree | a8ad7d5343c41950ff9c8f96a55f41a80271f72a /aconf/model/root.lua | |
parent | 07a0eb180872401b271de40190603df8f3ab3db2 (diff) | |
download | aconf-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.lua | 8 |
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) |