# HG changeset patch # User Matthew Wild # Date 1240192987 -3600 # Node ID 943f2cd7e480726f776fc41c81c4ebd49bd2b01f # Parent d53108635407dfb3e18ab3df9873172f4638179b# Parent 0eed5db7758d427e949df7e7f7e5af3e31d393fe Merging stable into unstable diff -r d53108635407 -r 943f2cd7e480 core/componentmanager.lua --- a/core/componentmanager.lua Wed Apr 15 00:21:40 2009 +0100 +++ b/core/componentmanager.lua Mon Apr 20 03:03:07 2009 +0100 @@ -104,6 +104,7 @@ 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 -r d53108635407 -r 943f2cd7e480 core/configmanager.lua --- a/core/configmanager.lua Wed Apr 15 00:21:40 2009 +0100 +++ b/core/configmanager.lua Mon Apr 20 03:03:07 2009 +0100 @@ -12,6 +12,8 @@ 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 @@ 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 -r d53108635407 -r 943f2cd7e480 core/xmlhandlers.lua --- a/core/xmlhandlers.lua Wed Apr 15 00:21:40 2009 +0100 +++ b/core/xmlhandlers.lua Mon Apr 20 03:03:07 2009 +0100 @@ -57,7 +57,7 @@ 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 @@ 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 diff -r d53108635407 -r 943f2cd7e480 net/adns.lua --- a/net/adns.lua Wed Apr 15 00:21:40 2009 +0100 +++ b/net/adns.lua Mon Apr 20 03:03:07 2009 +0100 @@ -8,17 +8,21 @@ module "adns" function lookup(handler, qname, qtype, qclass) - return dns.peek(qname, qtype, qclass) or - coroutine.wrap(function () - log("debug", "Records for "..qname.." not in cache, sending query (%s)...", tostring(coroutine.running())); + return coroutine.wrap(function (peek) + if peek then + log("debug", "Records for %s already cached, using those...", qname); + handler(peek); + return; + end + log("debug", "Records for %s not in cache, sending query (%s)...", qname, tostring(coroutine.running())); dns.query(qname, qtype, qclass); coroutine.yield(nil); -- Wait for reply - log("debug", "Reply for "..qname.." (%s)", tostring(coroutine.running())); + log("debug", "Reply for %s (%s)", qname, tostring(coroutine.running())); local ok, err = pcall(handler, dns.peek(qname, qtype, qclass)); if not ok then log("debug", "Error in DNS response handler: %s", tostring(err)); end - end)(); + end)(dns.peek(qname, qtype, qclass)); end function new_async_socket(sock) diff -r d53108635407 -r 943f2cd7e480 net/server.lua --- a/net/server.lua Wed Apr 15 00:21:40 2009 +0100 +++ b/net/server.lua Mon Apr 20 03:03:07 2009 +0100 @@ -325,7 +325,9 @@ if not ( forced or fatalerror ) then handler.sendbuffer( ) if bufferqueuelen ~= 0 then -- try again... - handler.write = nil -- ... but no further writing allowed + if handler then + handler.write = nil -- ... but no further writing allowed + end toclose = true return false end @@ -337,9 +339,11 @@ socket:close( ) _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) _socketlist[ socket ] = nil - _writetimes[ handler ] = nil - _closelist[ handler ] = nil - handler = nil + if handler then + _writetimes[ handler ] = nil + _closelist[ handler ] = nil + handler = nil + end socket = nil mem_free( ) if server then diff -r d53108635407 -r 943f2cd7e480 prosody --- a/prosody Wed Apr 15 00:21:40 2009 +0100 +++ b/prosody Mon Apr 20 03:03:07 2009 +0100 @@ -38,7 +38,7 @@ -- Use lfs? Make a new conf/ dir? local ok, level, err = config.load((CFG_CONFIGDIR or ".").."/prosody.cfg.lua"); if not ok then - print(""); + print("\n"); print("**************************"); if level == "parser" then print("A problem occured while reading the config file "..(CFG_CONFIGDIR or ".").."/prosody.cfg.lua");