mirror of
https://github.com/processone/ejabberd.git
synced 2024-09-27 14:30:55 +02:00
Don't always store messages passed through muc_filter_message
Recently we added new places where we call muc_filter_message to add occupandid info to messages, but this also made them be stored in archive as mod_mam uses that hook for getting sent messages - in case of those messages we shouldn't be doing this. This should fix issue #4083
This commit is contained in:
parent
00c76003cb
commit
c0e7774937
@ -465,6 +465,8 @@ offline_message({_Action, #message{from = Peer, to = To} = Pkt} = Acc) ->
|
||||
|
||||
-spec muc_filter_message(message(), mod_muc_room:state(),
|
||||
binary()) -> message().
|
||||
muc_filter_message(#message{meta = #{mam_ignore := true}} = Pkt, _MUCState, _FromNick) ->
|
||||
Pkt;
|
||||
muc_filter_message(#message{from = From} = Pkt,
|
||||
#state{config = Config, jid = RoomJID} = MUCState,
|
||||
FromNick) ->
|
||||
|
@ -625,12 +625,12 @@ normal_state({route, ToNick,
|
||||
Packet2 = xmpp:set_subtag(Packet, X),
|
||||
case ejabberd_hooks:run_fold(muc_filter_message,
|
||||
StateData#state.server_host,
|
||||
Packet2,
|
||||
xmpp:put_meta(Packet2, mam_ignore, true),
|
||||
[StateData, FromNick]) of
|
||||
drop ->
|
||||
ok;
|
||||
Packet3 ->
|
||||
PrivMsg = xmpp:set_from(Packet3, FromNickJID),
|
||||
PrivMsg = xmpp:set_from(xmpp:del_meta(Packet3, mam_ignore), FromNickJID),
|
||||
lists:foreach(
|
||||
fun(ToJID) ->
|
||||
ejabberd_router:route(xmpp:set_to(PrivMsg, ToJID))
|
||||
@ -3016,7 +3016,7 @@ send_subject(JID, #state{subject_author = {Nick, AuthorJID}} = StateData) ->
|
||||
to = JID, type = groupchat, subject = Subject},
|
||||
case ejabberd_hooks:run_fold(muc_filter_message,
|
||||
StateData#state.server_host,
|
||||
Packet,
|
||||
xmpp:put_meta(Packet, mam_ignore, true),
|
||||
[StateData, Nick]) of
|
||||
drop ->
|
||||
ok;
|
||||
@ -5169,9 +5169,9 @@ process_iq_moderate(From, #iq{type = set, lang = Lang},
|
||||
]}]},
|
||||
{FromNick, _Role} = get_participant_data(From, StateData),
|
||||
Packet = ejabberd_hooks:run_fold(muc_filter_message,
|
||||
StateData#state.server_host,
|
||||
Packet0,
|
||||
[StateData, FromNick]),
|
||||
StateData#state.server_host,
|
||||
xmpp:put_meta(Packet0, mam_ignore, true),
|
||||
[StateData, FromNick]),
|
||||
send_wrapped_multiple(JID,
|
||||
get_users_and_subscribers_with_node(?NS_MUCSUB_NODES_MESSAGES, StateData),
|
||||
Packet, ?NS_MUCSUB_NODES_MESSAGES, StateData),
|
||||
|
Loading…
Reference in New Issue
Block a user