diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-08-15 22:30:08 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-08-15 22:30:08 +0200 |
commit | 8821cf8b2785b8cd8df3fb32dde5dbfee26b53f4 (patch) | |
tree | 6203fadb30a2dc92492886bdc9144dae9a8781bd /src/mod_offline.erl | |
parent | ejabberd_c2s: Add XEP-0198 resumption hooks (diff) |
mod_offline: Add 'store_offline_message' hook
The new 'store_offline_message' hook is invoked whenever an offline
message is stored.
Diffstat (limited to '')
-rw-r--r-- | src/mod_offline.erl | 24 |
1 files 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 |