diff --git a/src/mod_mam.erl b/src/mod_mam.erl index 770610220..5cafea5c3 100644 --- a/src/mod_mam.erl +++ b/src/mod_mam.erl @@ -35,7 +35,7 @@ -export([user_send_packet/1, user_send_packet_strip_tag/1, user_receive_packet/1, process_iq_v0_2/1, process_iq_v0_3/1, disco_sm_features/5, remove_user/2, remove_room/3, mod_opt_type/1, muc_process_iq/2, - muc_filter_message/5, message_is_archived/3, delete_old_messages/2, + muc_filter_message/3, message_is_archived/3, delete_old_messages/2, get_commands_spec/0, msg_to_el/4, get_room_config/4, set_room_option/3, offline_message/1]). @@ -317,9 +317,10 @@ user_send_packet_strip_tag({Pkt, #{jid := JID} = C2SState}) -> {strip_my_archived_tag(Pkt, LServer), C2SState}. -spec muc_filter_message(message(), mod_muc_room:state(), - jid(), jid(), binary()) -> message(). -muc_filter_message(Pkt, #state{config = Config} = MUCState, - RoomJID, From, FromNick) -> + binary()) -> message(). +muc_filter_message(Pkt, #state{config = Config, jid = RoomJID} = MUCState, + FromNick) -> + From = xmpp:get_from(Pkt), if Config#config.mam -> LServer = RoomJID#jid.lserver, NewPkt = strip_my_archived_tag(Pkt, LServer), diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 93b4a3fa5..d3984e1c6 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -185,7 +185,7 @@ normal_state({route, <<"">>, StateData), StateData2 = StateData1#state{room_shaper = RoomShaper}, - process_groupchat_message(From, Packet, + process_groupchat_message(Packet, StateData2); true -> StateData1 = if RoomQueueEmpty -> @@ -349,7 +349,7 @@ normal_state({route, Nick, #presence{from = From} = Packet}, StateData) -> NewActivity = Activity#activity{presence_time = Now}, StateData1 = store_user_activity(From, NewActivity, StateData), - process_presence(From, Nick, Packet, StateData1); + process_presence(Nick, Packet, StateData1); true -> if Activity#activity.presence == undefined -> Interval = (Activity#activity.presence_time + @@ -615,7 +615,7 @@ handle_info(process_room_queue, StateData), StateData2 = StateData1#state{room_queue = RoomQueue}, StateData3 = prepare_room_queue(StateData2), - process_groupchat_message(From, Packet, StateData3); + process_groupchat_message(Packet, StateData3); {{value, {presence, From}}, RoomQueue} -> Activity = get_user_activity(From, StateData), {Nick, Packet} = Activity#activity.presence, @@ -624,7 +624,7 @@ handle_info(process_room_queue, StateData), StateData2 = StateData1#state{room_queue = RoomQueue}, StateData3 = prepare_room_queue(StateData2), - process_presence(From, Nick, Packet, StateData3); + process_presence(Nick, Packet, StateData3); {empty, _} -> {next_state, StateName, StateData} end; handle_info({captcha_succeed, From}, normal_state, @@ -702,8 +702,8 @@ route(Pid, Packet) -> #jid{lresource = Nick} = xmpp:get_to(Packet), gen_fsm:send_event(Pid, {route, Nick, Packet}). --spec process_groupchat_message(jid(), message(), state()) -> fsm_next(). -process_groupchat_message(From, #message{lang = Lang} = Packet, StateData) -> +-spec process_groupchat_message(message(), state()) -> fsm_next(). +process_groupchat_message(#message{from = From, lang = Lang} = Packet, StateData) -> IsSubscriber = is_subscriber(From, StateData), case is_user_online(From, StateData) orelse IsSubscriber orelse is_user_allowed_message_nonparticipant(From, StateData) @@ -740,9 +740,7 @@ process_groupchat_message(From, #message{lang = Lang} = Packet, StateData) -> ejabberd_hooks:run_fold(muc_filter_message, StateData#state.server_host, Packet, - [StateData, - StateData#state.jid, - From, FromNick]) + [StateData, FromNick]) of drop -> {next_state, normal_state, StateData}; @@ -953,29 +951,27 @@ get_participant_data(From, StateData) -> end end. --spec process_presence(jid(), binary(), presence(), state()) -> fsm_transition(). -process_presence(From, Nick, #presence{type = Type0} = Packet0, StateData) -> +-spec process_presence(binary(), presence(), state()) -> fsm_transition(). +process_presence(Nick, #presence{from = From, type = Type0} = Packet0, StateData) -> IsOnline = is_user_online(From, StateData), if Type0 == available; IsOnline and ((Type0 == unavailable) or (Type0 == error)) -> case ejabberd_hooks:run_fold(muc_filter_presence, StateData#state.server_host, Packet0, - [StateData, - StateData#state.jid, - From, Nick]) of + [StateData, Nick]) of drop -> {next_state, normal_state, StateData}; #presence{} = Packet -> close_room_if_temporary_and_empty( - do_process_presence(From, Nick, Packet, StateData)) + do_process_presence(Nick, Packet, StateData)) end; true -> {next_state, normal_state, StateData} end. --spec do_process_presence(jid(), binary(), presence(), state()) -> state(). -do_process_presence(From, Nick, #presence{type = available, lang = Lang} = Packet, +-spec do_process_presence(binary(), presence(), state()) -> state(). +do_process_presence(Nick, #presence{from = From, type = available, lang = Lang} = Packet, StateData) -> case is_user_online(From, StateData) of false -> @@ -1019,7 +1015,7 @@ do_process_presence(From, Nick, #presence{type = available, lang = Lang} = Packe NewState end end; -do_process_presence(From, Nick, #presence{type = unavailable} = Packet, +do_process_presence(Nick, #presence{from = From, type = unavailable} = Packet, StateData) -> NewPacket = case {(StateData#state.config)#config.allow_visitor_status, is_visitor(From, StateData)} of @@ -1034,7 +1030,7 @@ do_process_presence(From, Nick, #presence{type = unavailable} = Packet, end, Reason = xmpp:get_text(NewPacket#presence.status), remove_online_user(From, NewState, Reason); -do_process_presence(From, _Nick, #presence{type = error, lang = Lang} = Packet, +do_process_presence(_Nick, #presence{from = From, type = error, lang = Lang} = Packet, StateData) -> ErrorText = <<"It is not allowed to send error messages to the" " room. The participant (~s) has sent an error " diff --git a/src/mod_offline.erl b/src/mod_offline.erl index 4c855d52b..f19ec1d50 100644 --- a/src/mod_offline.erl +++ b/src/mod_offline.erl @@ -486,7 +486,7 @@ store_packet({_Action, #message{from = From, to = To} = Packet} = Acc) -> true -> #jid{luser = LUser, lserver = LServer} = To, case ejabberd_hooks:run_fold(store_offline_message, LServer, - Packet, [From, To]) of + Packet, []) of drop -> Acc; NewPacket ->