changeset 2196:09f6e1a09b2b

mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
author Kim Alvefur <zash@zash.se>
date Wed, 01 Jun 2016 14:50:39 +0200
parents 967ba20e1202
children 90a444ccaa8e
files mod_block_strangers/mod_block_strangers.lua
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mod_block_strangers/mod_block_strangers.lua	Wed Jun 01 14:34:30 2016 +0200
+++ b/mod_block_strangers/mod_block_strangers.lua	Wed Jun 01 14:50:39 2016 +0200
@@ -3,12 +3,18 @@
 local jid_split = require "util.jid".split;
 local jid_bare = require "util.jid".bare;
 local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed;
+local full_sessions = prosody.full_sessions;
+
+local function has_directed_presence(user, jid)
+	local session = full_sessions[user];
+	return session and session.directed[jid];
+end
 
 function check_subscribed(event)
 	local stanza = event.stanza;
 	local to_user, to_host, to_resource = jid_split(stanza.attr.to);
 	local from_jid = jid_bare(stanza.attr.from);
-	if to_user and not is_contact_subscribed(to_user, to_host, from_jid) then
+	if to_user and not has_directed_presence(stanza.attr.to, from_jid) and not is_contact_subscribed(to_user, to_host, from_jid) then
 		if to_resource and stanza.attr.type == "groupchat"
 		or stanza.name == "iq" and (stanza.attr.type == "result" or stanza.attr.type == "error") then
 			return nil; -- Pass through