Fix presence-based delivery
authorNathan Bruning <nathan@iperity.com>
Tue, 19 Jan 2016 22:48:48 +0000 (23:48 +0100)
committerNathan Bruning <nathan@iperity.com>
Tue, 2 Feb 2016 13:06:07 +0000 (14:06 +0100)
src/mod_pubsub.erl

index 616c64929d1f8742f6ed0ddbd0a8b2006e802596..b6185852b7ef5ec9d8e235259f163edbd6f0d027 100644 (file)
@@ -3170,17 +3170,15 @@ sub_option_can_deliver(_, _, _) -> true.
 presence_can_deliver(_, false) ->
     true;
 presence_can_deliver({User, Server, Resource}, true) ->
-    case mnesia:dirty_match_object({session, '_', '_', {User, Server}, '_', '_'}) of
+    case ejabberd_sm:get_user_present_resources(User, Server) of
        [] ->
            false;
        Ss ->
            lists:foldl(fun
                    (_, true) ->
                        true;
-                   ({session, _, _, _, undefined, _}, _Acc) ->
-                       false;
-                   ({session, {_, _, R}, _, _, _Priority, _}, _Acc) ->
-                       case Resource of
+                   ({_, R}, _Acc) ->
+                       case Resource of
                            <<>> -> true;
                            R -> true;
                            _ -> false