Automated merge with http://waqas.ath.cx:8000/

Fri, 09 Jan 2009 19:19:06 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Fri, 09 Jan 2009 19:19:06 +0000
changeset 688
5f77bbc1f04a
parent 687
a92d647624a1 (diff)
parent 684
b7d85c6a0002 (current diff)
child 689
94b043fbaf33

Automated merge with http://waqas.ath.cx:8000/

--- a/core/modulemanager.lua	Fri Jan 09 19:18:46 2009 +0000
+++ b/core/modulemanager.lua	Fri Jan 09 19:19:06 2009 +0000
@@ -55,6 +55,9 @@
 
 local features_table = multitable_new();
 local handler_table = multitable_new();
+local hooked = multitable_new();
+local event_hooks = multitable_new();
+
 local NULL = {};
 
 -- Load modules when a host is activated
@@ -151,6 +154,7 @@
 		handler_info[handlers[1]] = nil;
 		stanza_handlers:remove(param[1], param[2], param[3], param[4]);
 	end
+	event_hooks:remove(host, name);
 	return true;
 end
 
@@ -234,7 +238,19 @@
 	features_table:set(self.host, self.name, xmlns, true);
 end
 
-function api:add_event_hook (...) return eventmanager.add_event_hook(...); end
+local event_hook = function(host, mod_name, event_name, ...)
+	if type((...)) == "table" and (...).host and (...).host ~= host then return; end
+	for handler in pairs(event_hooks:get(host, mod_name, event_name) or NULL) do
+		handler(...);
+	end
+end;
+function api:add_event_hook(name, handler)
+	if not hooked:get(self.host, self.name, name) then
+		eventmanager.add_event_hook(name, function(...) event_hook(self.host, self.name, name, ...); end);
+		hooked:set(self.host, self.name, name, true);
+	end
+	event_hooks:set(self.host, self.name, name, handler, true);
+end
 
 --------------------------------------------------------------------
 
--- a/core/offlinemessage.lua	Fri Jan 09 19:18:46 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
--- Prosody IM v0.2
--- Copyright (C) 2008 Matthew Wild
--- Copyright (C) 2008 Waqas Hussain
--- 
--- This program is free software; you can redistribute it and/or
--- modify it under the terms of the GNU General Public License
--- as published by the Free Software Foundation; either version 2
--- of the License, or (at your option) any later version.
--- 
--- This program is distributed in the hope that it will be useful,
--- but WITHOUT ANY WARRANTY; without even the implied warranty of
--- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--- GNU General Public License for more details.
--- 
--- You should have received a copy of the GNU General Public License
--- along with this program; if not, write to the Free Software
--- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
---
-
-
-
-require "util.datamanager"
-
-local datamanager = datamanager;
-local t_insert = table.insert;
-
-module "offlinemessage"
-
-function new(user, host, stanza)
-	local offlinedata = datamanager.load(user, host, "offlinemsg") or {};
-	t_insert(offlinedata, stanza);
-	return datamanager.store(user, host, "offlinemsg", offlinedata);
-end
-
-return _M;
\ No newline at end of file
--- a/doc/lxmppd_core_offlinemessages.txt	Fri Jan 09 19:18:46 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-lxmppd -> core -> offlinemessages.lua
-	requires	"util.datamanager"
-	module		"offlinemessage"
-
-function new(user, host, stanza)
-	returns a function that stores the offline message it received
-
-This module offers storing of offline messages.
-
-Description:	If the user that is supposed to get the message is not online,
-		we store the messages locally as offline messages for later
-		processing.
\ No newline at end of file
--- a/prosody	Fri Jan 09 19:18:46 2009 +0000
+++ b/prosody	Fri Jan 09 19:19:06 2009 +0000
@@ -82,7 +82,6 @@
 require "util.import"
 require "core.xmlhandlers"
 require "core.rostermanager"
-require "core.offlinemessage"
 require "core.eventmanager"
 require "core.hostmanager"
 require "core.modulemanager"
--- a/util/sasl.lua	Fri Jan 09 19:18:46 2009 +0000
+++ b/util/sasl.lua	Fri Jan 09 19:19:06 2009 +0000
@@ -177,12 +177,12 @@
 			if not response["qop"] then response["qop"] = "auth" end
 			
 			if response["realm"] == nil then
-				response["realm"] = ""
-			elseif response["realm"] ~= self.realm then
+				response["realm"] = "";
+			elseif response["realm"] ~= self.realm and response["realm"] ~= "" then
 				return "failure", "not-authorized", "Incorrect realm value";
 			end
+			
 			local decoder;
-			
 			if response["charset"] == nil then
 				decoder = utf8tolatin1ifpossible;
 			elseif response["charset"] ~= "utf-8" then

mercurial