diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-11-09 00:21:40 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-11-09 00:21:40 +0100 |
commit | 5cf4e200ba4451ceef7b58be089b5aa0b4ff1734 (patch) | |
tree | bdb9109ade2ed1613d93383d42307c346db5b72b /src/ejabberd_sm.erl | |
parent | Prepare version 0.6.1 of XEP-0313 (MAM) support (diff) |
mod_mam: Make sure a stanza ID is always added
Let mod_mam store incoming messages from a new hook in ejabberd_sm.
This makes sure all messages are tagged with a stanza ID, including
those that are forked to multiple resources in ejabberd_sm.
Closes #1344.
Diffstat (limited to 'src/ejabberd_sm.erl')
-rw-r--r-- | src/ejabberd_sm.erl | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl index 96dbb4e8..3df1d88e 100644 --- a/src/ejabberd_sm.erl +++ b/src/ejabberd_sm.erl @@ -137,10 +137,17 @@ route(To, Term) -> -spec route(stanza()) -> ok. route(Packet) -> - try do_route(Packet), ok - catch E:R -> - ?ERROR_MSG("failed to route packet:~n~s~nReason = ~p", - [xmpp:pp(Packet), {E, {R, erlang:get_stacktrace()}}]) + #jid{lserver = LServer} = xmpp:get_to(Packet), + case ejabberd_hooks:run_fold(sm_receive_packet, LServer, Packet, []) of + drop -> + ?DEBUG("hook dropped stanza:~n~s", [xmpp:pp(Packet)]); + Packet1 -> + try do_route(Packet1), ok + catch E:R -> + ?ERROR_MSG("failed to route packet:~n~s~nReason = ~p", + [xmpp:pp(Packet1), + {E, {R, erlang:get_stacktrace()}}]) + end end. -spec open_session(sid(), binary(), binary(), binary(), prio(), info()) -> ok. |