From 7fc12076618e57f6dc573aa6be8773b44d9d11a0 Mon Sep 17 00:00:00 2001 From: Christophe Romain Date: Wed, 5 May 2010 15:42:49 +0200 Subject: [PATCH] enforce pubsub#presence_based_delivery (EJAB-1221) (thanks to Karim Gemayel) --- src/mod_pubsub/mod_pubsub.erl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index 7553468c6..e365007bd 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -2868,12 +2868,18 @@ node_to_deliver(LJID, NodeOptions) -> presence_can_deliver(LJID, PresenceDelivery). presence_can_deliver(_, false) -> true; -presence_can_deliver({User, Server, _}, true) -> +presence_can_deliver({User, Server, Resource}, true) -> case mnesia:dirty_match_object({session, '_', '_', {User, Server}, '_', '_'}) of [] -> false; Ss -> - lists:foldl(fun({session, _, _, _, undefined, _}, Acc) -> Acc; - ({session, _, _, _, _Priority, _}, _Acc) -> true + lists:foldl(fun(_, true) -> true; + ({session, _, _ , _, undefined, _}, _Acc) -> false; + ({session, _, {_, _, R}, _, _Priority, _}, _Acc) -> + case Resource of + [] -> true; + R -> true; + _ -> false + end end, false, Ss) end.