diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/componentmanager.lua | 1 | ||||
-rw-r--r-- | core/configmanager.lua | 5 | ||||
-rw-r--r-- | core/xmlhandlers.lua | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/core/componentmanager.lua b/core/componentmanager.lua index 308dea57..96b78bf2 100644 --- a/core/componentmanager.lua +++ b/core/componentmanager.lua @@ -104,6 +104,7 @@ end function deregister_component(host) if components[host] then modulemanager.unload(host, "dialback"); + host.connected = nil; local host_config = configmanager.getconfig()[host]; if host_config and ((host_config.core.enabled == nil or host_config.core.enabled) and type(host_config.core.component_module) == "string") then -- Set default handler diff --git a/core/configmanager.lua b/core/configmanager.lua index 299374ec..37646017 100644 --- a/core/configmanager.lua +++ b/core/configmanager.lua @@ -12,6 +12,8 @@ local _G = _G; local setmetatable, loadfile, pcall, rawget, rawset, io, error, dofile, type = setmetatable, loadfile, pcall, rawget, rawset, io, error, dofile, type; +local eventmanager = require "core.eventmanager"; + module "configmanager" local parsers = {}; @@ -68,6 +70,9 @@ function load(filename, format) if f then local ok, err = parsers[format].load(f:read("*a")); f:close(); + if ok then + eventmanager.fire_event("config-reloaded", { filename = filename, format = format }); + end return ok, "parser", err; end return f, "file", err; diff --git a/core/xmlhandlers.lua b/core/xmlhandlers.lua index 1409a1ec..67a0829d 100644 --- a/core/xmlhandlers.lua +++ b/core/xmlhandlers.lua @@ -57,7 +57,7 @@ function init_xmlhandlers(session, stream_callbacks) stanza:text(t_concat(chardata)); chardata = {}; end - local curr_ns,name = tagname:match("^(.+)|([%w%-]+)$"); + local curr_ns,name = tagname:match("^(.+)|([^%|]+)$"); if curr_ns ~= stream_default_ns then attr.xmlns = curr_ns; end @@ -109,7 +109,7 @@ function init_xmlhandlers(session, stream_callbacks) end end function xml_handlers:EndElement(tagname) - curr_ns,name = tagname:match("^(.+)|([%w%-]+)$"); + curr_ns,name = tagname:match("^(.+)|([^%|]+)$"); if (not stanza) or (#stanza.last_add > 0 and name ~= stanza.last_add[#stanza.last_add].name) then if tagname == stream_tag then if cb_streamclosed then |