From: Holger Weiss Date: Mon, 15 Aug 2016 20:30:08 +0000 (+0200) Subject: mod_offline: Add 'store_offline_message' hook X-Git-Tag: 16.09^2^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8821cf8b2785b8cd8df3fb32dde5dbfee26b53f4;p=ejabberd mod_offline: Add 'store_offline_message' hook The new 'store_offline_message' hook is invoked whenever an offline message is stored. --- 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