aboutsummaryrefslogtreecommitdiff
path: root/src/mod_offline.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2016-08-15 22:30:08 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2016-08-15 22:30:08 +0200
commit8821cf8b2785b8cd8df3fb32dde5dbfee26b53f4 (patch)
tree6203fadb30a2dc92492886bdc9144dae9a8781bd /src/mod_offline.erl
parentejabberd_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.erl24
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