summaryrefslogtreecommitdiff
path: root/src/mod_mam.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-21 13:47:47 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-21 13:47:47 +0300
commite564f9ae31d2c5345be4eed66e70037ba8145dc1 (patch)
tree624fd86abe7efd324faaf3c4716f20bcc1982904 /src/mod_mam.erl
parentArchive message before delivering it to offline storage (#1348) (diff)
Make a message is not bounced if it's archived
Diffstat (limited to 'src/mod_mam.erl')
-rw-r--r--src/mod_mam.erl16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index cb2c590b..47c41ef9 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -37,7 +37,7 @@
remove_user/2, remove_room/3, mod_opt_type/1, muc_process_iq/2,
muc_filter_message/5, message_is_archived/3, delete_old_messages/2,
get_commands_spec/0, msg_to_el/4, get_room_config/4, set_room_option/3,
- offline_message/3]).
+ offline_message/4]).
-include("xmpp.hrl").
-include("logger.hrl").
@@ -241,17 +241,21 @@ user_send_packet({Pkt, #{jid := JID} = C2SState}) ->
end,
{Pkt2, C2SState}.
--spec offline_message(jid(), jid(), message()) -> ok.
-offline_message(Peer, To, Pkt) ->
+-spec offline_message(any(), jid(), jid(), message()) -> any().
+offline_message(Acc, Peer, To, Pkt) ->
LUser = To#jid.luser,
LServer = To#jid.lserver,
case should_archive(Pkt, LServer) of
true ->
Pkt1 = strip_my_archived_tag(Pkt, LServer),
- store_msg(undefined, Pkt1, LUser, LServer, Peer, recv),
- ok;
+ case store_msg(undefined, Pkt1, LUser, LServer, Peer, recv) of
+ {ok, _ID} ->
+ archived;
+ _ ->
+ Acc
+ end;
false ->
- ok
+ Acc
end.
-spec user_send_packet_strip_tag({stanza(), ejabberd_c2s:state()}) ->