Changeset

6285:ea60d0441df7

Merge 0.10->trunk
author Kim Alvefur <zash@zash.se>
date Sat, 21 Jun 2014 15:05:52 +0200
parents 6278:fcc3ef191293 (current diff) 6284:b49540983320 (diff)
children 6286:ec6e8d5a3fd3
files
diffstat 6 files changed, 30 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_presence.lua	Tue Jun 17 15:27:00 2014 -0400
+++ b/plugins/mod_presence.lua	Sat Jun 21 15:05:52 2014 +0200
@@ -137,6 +137,9 @@
 			origin.directed = nil;
 		end
 	else
+		if not origin.presence then
+			module:fire_event("presence/initial", { origin = origin, stanza = stanza } );
+		end
 		origin.presence = stanza;
 		stanza:tag("delay", { xmlns = "urn:xmpp:delay", from = host, stamp = datetime.datetime() }):up();
 		if origin.priority ~= priority then
--- a/plugins/mod_storage_internal.lua	Tue Jun 17 15:27:00 2014 -0400
+++ b/plugins/mod_storage_internal.lua	Sat Jun 21 15:05:52 2014 +0200
@@ -6,6 +6,9 @@
 local driver_mt = { __index = driver };
 
 function driver:open(store, typ)
+	if typ and typ ~= "keyval" then
+		return nil, "unsupported-store";
+	end
 	return setmetatable({ store = store, type = typ }, driver_mt);
 end
 function driver:get(user)
--- a/plugins/mod_storage_none.lua	Tue Jun 17 15:27:00 2014 -0400
+++ b/plugins/mod_storage_none.lua	Sat Jun 21 15:05:52 2014 +0200
@@ -1,8 +1,11 @@
 local driver = {};
 local driver_mt = { __index = driver };
 
-function driver:open(store)
-	return setmetatable({ store = store }, driver_mt);
+function driver:open(store, typ)
+	if typ and typ ~= "keyval" then
+		return nil, "unsupported-store";
+	end
+	return setmetatable({ store = store, type = typ }, driver_mt);
 end
 function driver:get(user)
 	return {};
--- a/plugins/mod_storage_sql.lua	Tue Jun 17 15:27:00 2014 -0400
+++ b/plugins/mod_storage_sql.lua	Sat Jun 21 15:05:52 2014 +0200
@@ -380,10 +380,10 @@
 local driver = {};
 
 function driver:open(store, typ)
-	if not typ then -- default key-value store
-		return setmetatable({ store = store }, keyval_store);
+	if typ and typ ~= "keyval" then
+		return nil, "unsupported-store";
 	end
-	return nil, "unsupported-store";
+	return setmetatable({ store = store }, keyval_store);
 end
 
 function driver:stores(username)
--- a/plugins/mod_storage_sql2.lua	Tue Jun 17 15:27:00 2014 -0400
+++ b/plugins/mod_storage_sql2.lua	Sat Jun 21 15:05:52 2014 +0200
@@ -198,7 +198,9 @@
 keyval_store.__index = keyval_store;
 function keyval_store:get(username)
 	user,store = username,self.store;
-	return select(2, engine:transaction(keyval_store_get));
+	local ok, result = engine:transaction(keyval_store_get);
+	if not ok then return ok, result; end
+	return result;
 end
 function keyval_store:set(username, data)
 	user,store = username,self.store;
--- a/tools/ejabberd2prosody.lua	Tue Jun 17 15:27:00 2014 -0400
+++ b/tools/ejabberd2prosody.lua	Sat Jun 21 15:05:52 2014 +0200
@@ -56,6 +56,16 @@
 	local Megaseconds,Seconds,Microseconds = unpack(tuple);
 	return Megaseconds * 1000000 + Seconds;
 end
+function build_jid(tuple, full)
+	local node, jid, resource = tuple[1], tuple[2], tuple[3]
+	if type(node) == "string" and node ~= "" then
+		jid = tuple[1] .. "@" .. jid;
+	end
+	if full and type(resource) == "string" and resource ~= "" then
+		jid = jid .. "/" .. resource;
+	end
+	return jid;
+end
 
 function vcard(node, host, stanza)
 	local ret, err = dm.store(node, host, "vcard", st.preserialize(stanza));
@@ -105,10 +115,7 @@
 				if _type == "jid" then
 					if type(value) ~= "table" then print("[error] privacy: jid value is not valid: "..tostring(value)); break; end
 					local _node, _host, _resource = value[1], value[2], value[3];
-					if (type(_node) == "table") then _node = nil; end
-					if (type(_host) == "table") then _host = nil; end
-					if (type(_resource) == "table") then _resource = nil; end
-					value = (_node and _node.."@".._host or _host)..(_resource and "/".._resource or "");
+					value = build_jid(value, true)
 				elseif _type == "none" then
 					_type = nil;
 					value = nil;
@@ -154,18 +161,10 @@
 	local ret, err = dm.store(node, host, "privacy", privacy);
 	print("["..(err or "success").."] privacy: " ..node.."@"..host.." - "..count.." list(s)");
 end
-local function _table_to_jid(t)
-	if type(t[2]) == "string" then
-		local jid = t[2];
-		if type(t[1]) == "string" then jid = t[1].."@"..jid; end
-		if type(t[3]) == "string" then jid = jid.."/"..t[3]; end
-		return jid;
-	end
-end
 function muc_room(node, host, properties)
 	local store = { jid = node.."@"..host, _data = {}, _affiliations = {} };
 	for _,aff in ipairs(properties.affiliations) do
-		store._affiliations[_table_to_jid(aff[1])] = aff[2][1] or aff[2];
+		store._affiliations[build_jid(aff[1])] = aff[2][1] or aff[2];
 	end
 	store._data.subject = properties.subject;
 	if properties.subject_author then
@@ -207,7 +206,7 @@
 	end;
 	roster = function(tuple)
 		local node = tuple[3][1]; local host = tuple[3][2];
-		local contact = (type(tuple[4][1]) == "table") and tuple[4][2] or tuple[4][1].."@"..tuple[4][2];
+		local contact = build_jid(tuple[4]);
 		local name = tuple[5]; local subscription = tuple[6];
 		local ask = tuple[7]; local groups = tuple[8];
 		if type(name) ~= type("") then name = nil; end