Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2016-01-14 03:13:16 +0300
committerHolger Weiss <holger@zedat.fu-berlin.de>2016-01-14 03:13:16 +0300
commit89f63a4fdfbf5e240060e63b11fb2722e4cebe22 (patch)
tree7491d1d4404680a14c768a37b60a4b4a436909fd /src/mod_mam.erl
parent85f4f90b4549affea1f1a60acfb970f26f738048 (diff)
mod_mam: Check whether MUC message is desired
Diffstat (limited to 'src/mod_mam.erl')
-rw-r--r--src/mod_mam.erl29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 31fa79777..3be7312a1 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -579,9 +579,30 @@ should_archive_peer(C2SState,
end
end.
-should_archive_muc(_MUCState, _Peer) ->
- %% TODO
- true.
+should_archive_muc(Pkt) ->
+ case xml:get_attr_s(<<"type">>, Pkt#xmlel.attrs) of
+ <<"groupchat">> ->
+ case check_store_hint(Pkt) of
+ store ->
+ true;
+ no_store ->
+ false;
+ none ->
+ case xml:get_subtag_cdata(Pkt, <<"body">>) of
+ <<>> ->
+ case xml:get_subtag_cdata(Pkt, <<"subject">>) of
+ <<>> ->
+ false;
+ _ ->
+ true
+ end;
+ _ ->
+ true
+ end
+ end;
+ _ ->
+ false
+ end.
check_store_hint(Pkt) ->
case has_store_hint(Pkt) of
@@ -635,7 +656,7 @@ store_msg(C2SState, Pkt, LUser, LServer, Peer, Dir) ->
end.
store_muc(MUCState, Pkt, RoomJID, Peer, Nick) ->
- case should_archive_muc(MUCState, Peer) of
+ case should_archive_muc(Pkt) of
true ->
LServer = MUCState#state.server_host,
{U, S, _} = jid:tolower(RoomJID),