diff options
-rw-r--r-- | src/mod_pubsub/mod_pubsub.erl | 12 |
1 files 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. |