From 8821cf8b2785b8cd8df3fb32dde5dbfee26b53f4 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 15 Aug 2016 22:30:08 +0200 Subject: [PATCH] mod_offline: Add 'store_offline_message' hook The new 'store_offline_message' hook is invoked whenever an offline message is stored. --- src/mod_offline.erl | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/mod_offline.erl b/src/mod_offline.erl index 87a136853..1d9417117 100644 --- a/src/mod_offline.erl +++ b/src/mod_offline.erl @@ -476,14 +476,22 @@ store_packet(From, To, Packet) -> case check_event(From, To, Packet) of true -> #jid{luser = LUser, lserver = LServer} = To, - TimeStamp = p1_time_compat:timestamp(), - #xmlel{children = Els} = Packet, - Expire = find_x_expire(TimeStamp, Els), - gen_mod:get_module_proc(To#jid.lserver, ?PROCNAME) ! - #offline_msg{us = {LUser, LServer}, - timestamp = TimeStamp, expire = Expire, - from = From, to = To, packet = Packet}, - stop; + case ejabberd_hooks:run_fold(store_offline_message, LServer, + Packet, [From, To]) of + drop -> + ok; + NewPacket -> + TimeStamp = p1_time_compat:timestamp(), + #xmlel{children = Els} = NewPacket, + Expire = find_x_expire(TimeStamp, Els), + gen_mod:get_module_proc(To#jid.lserver, ?PROCNAME) ! + #offline_msg{us = {LUser, LServer}, + timestamp = TimeStamp, + expire = Expire, + from = From, to = To, + packet = NewPacket}, + stop + end; _ -> ok end; false -> ok