Changeset

1013:943f2cd7e480

Merging stable into unstable
author Matthew Wild <mwild1@gmail.com>
date Mon, 20 Apr 2009 03:03:07 +0100
parents 1012:d53108635407 (current diff) 1005:0eed5db7758d (diff)
children 1014:a72e285f7510
files
diffstat 6 files changed, 26 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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;
--- 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
--- 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)
--- 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
--- 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");