Changeset

1744:fbef84033fae

mod_profile: Explicitly return true from handlers, session.send can return nil under some conditions
author Kim Alvefur <zash@zash.se>
date Mon, 18 May 2015 02:56:41 +0200
parents 1743:8fbe16c83807
children 1745:851cb0b3d584
files mod_profile/mod_profile.lua
diffstat 1 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/mod_profile/mod_profile.lua	Mon May 18 02:55:39 2015 +0200
+++ b/mod_profile/mod_profile.lua	Mon May 18 02:56:41 2015 +0200
@@ -92,13 +92,16 @@
 		data = legacy_storage:get(username);
 		data = data and st.deserialize(data);
 		if data then
-			return origin.send(st.reply(stanza):add_child(data));
+			origin.send(st.reply(stanza):add_child(data));
+			return true;
 		end
 	end
 	if not data then
-		return origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
+		origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
+		return true;
 	end
-	return origin.send(st.reply(stanza):add_child(vcard.to_xep54(data)));
+	origin.send(st.reply(stanza):add_child(vcard.to_xep54(data)));
+	return true;
 end
 
 local function handle_set(event)
@@ -108,20 +111,23 @@
 	local to = stanza.attr.to;
 	if to then
 		if not is_admin(jid_bare(stanza.attr.from), module.host) then
-			return origin.send(st.error_reply(stanza, "auth", "forbidden"));
+			origin.send(st.error_reply(stanza, "auth", "forbidden"));
+			return true;
 		end
 		username = jid_split(to);
 	end
 	local ok, err = storage:set(username, data);
 	if not ok then
-		return origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err));
+		origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err));
+		return true;
 	end
 
 	if pep_plus and username then
 		update_pep(username, data);
 	end
 
-	return origin.send(st.reply(stanza));
+	origin.send(st.reply(stanza));
+	return true;
 end
 
 module:hook("iq-get/bare/vcard-temp:vCard", handle_get);
@@ -186,9 +192,11 @@
 		local username = jid_split(stanza.attr.to) or origin.username;
 		local data = storage:get(username);
 		if not data then
-			return origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
+			origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
+			return true;
 		end
-		return origin.send(st.reply(stanza):add_child(vcard.to_vcard4(data)));
+		origin.send(st.reply(stanza):add_child(vcard.to_vcard4(data)));
+		return true;
 	end);
 
 	if vcard.from_vcard4 then
@@ -196,14 +204,17 @@
 			local origin, stanza = event.origin, event.stanza;
 			local ok, err = storage:set(origin.username, vcard.from_vcard4(stanza.tags[1]));
 			if not ok then
-				return origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err));
+				origin.send(st.error_reply(stanza, "cancel", "internal-server-error", err));
+				return true;
 			end
-			return origin.send(st.reply(stanza));
+			origin.send(st.reply(stanza));
+			return true;
 		end);
 	else
 		module:hook("iq-set/self/urn:ietf:params:xml:ns:vcard-4.0:vcard", function(event)
 			local origin, stanza = event.origin, event.stanza;
-			return origin.send(st.error_reply(stanza, "cancel", "feature-not-implemented"));
+			origin.send(st.error_reply(stanza, "cancel", "feature-not-implemented"));
+			return true;
 		end);
 	end
 end