aboutsummaryrefslogtreecommitdiff
path: root/src/mod_mam_mnesia.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_mam_mnesia.erl')
-rw-r--r--src/mod_mam_mnesia.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mod_mam_mnesia.erl b/src/mod_mam_mnesia.erl
index dff10ef96..b964c977c 100644
--- a/src/mod_mam_mnesia.erl
+++ b/src/mod_mam_mnesia.erl
@@ -85,7 +85,12 @@ remove_from_archive(LUser, LServer, WithJid) ->
US = {LUser, LServer},
Peer = jid:remove_resource(jid:split(WithJid)),
F = fun () ->
- Msgs = mnesia:match_object(#archive_msg{us = US, bare_peer = Peer, _ = '_'}),
+ Msgs = mnesia:select(
+ archive_msg,
+ ets:fun2ms(
+ fun(#archive_msg{us = US1, bare_peer = Peer1} = Msg)
+ when US1 == US, Peer1 == Peer -> Msg
+ end)),
lists:foreach(fun mnesia:delete_object/1, Msgs)
end,
case mnesia:transaction(F) of