diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2016-09-13 14:29:47 +0200 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2016-09-13 14:31:39 +0200 |
commit | 405a0a21c1f2a7b7198c75faa207897d3666c90c (patch) | |
tree | 2faecf0f75023d3c703ce7b2b60fad8c23054251 /src/mod_mam.erl | |
parent | Allow to create room with custom config (diff) | |
parent | Merge branch 'push-requirements' of https://github.com/weiss/ejabberd into we... (diff) |
Diffstat (limited to 'src/mod_mam.erl')
-rw-r--r-- | src/mod_mam.erl | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl index 6ea757223..f6d3c8f1f 100644 --- a/src/mod_mam.erl +++ b/src/mod_mam.erl @@ -718,8 +718,14 @@ store_msg(C2SState, Pkt, LUser, LServer, Peer, Dir) -> case should_archive_peer(C2SState, Prefs, Peer) of true -> US = {LUser, LServer}, - Mod = gen_mod:db_mod(LServer, ?MODULE), - Mod:store(Pkt, LServer, US, chat, Peer, <<"">>, Dir); + case ejabberd_hooks:run_fold(store_mam_message, LServer, Pkt, + [LUser, LServer, Peer, chat, Dir]) of + drop -> + pass; + NewPkt -> + Mod = gen_mod:db_mod(LServer, ?MODULE), + Mod:store(NewPkt, LServer, US, chat, Peer, <<"">>, Dir) + end; false -> pass end. @@ -727,10 +733,16 @@ store_msg(C2SState, Pkt, LUser, LServer, Peer, Dir) -> store_muc(MUCState, Pkt, RoomJID, Peer, Nick) -> case should_archive_muc(Pkt) of true -> - LServer = MUCState#state.server_host, {U, S, _} = jid:tolower(RoomJID), - Mod = gen_mod:db_mod(LServer, ?MODULE), - Mod:store(Pkt, LServer, {U, S}, groupchat, Peer, Nick, recv); + LServer = MUCState#state.server_host, + case ejabberd_hooks:run_fold(store_mam_message, LServer, Pkt, + [U, S, Peer, groupchat, recv]) of + drop -> + pass; + NewPkt -> + Mod = gen_mod:db_mod(LServer, ?MODULE), + Mod:store(NewPkt, LServer, {U, S}, groupchat, Peer, Nick, recv) + end; false -> pass end. |