]> granicus.if.org Git - ejabberd/commitdiff
Don't pass 'from' and 'to' along with stanza in hooks' arguments
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Fri, 24 Feb 2017 18:25:25 +0000 (21:25 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Fri, 24 Feb 2017 18:25:25 +0000 (21:25 +0300)
src/mod_mam.erl
src/mod_muc_room.erl
src/mod_offline.erl

index 770610220abe7d6a4596649797db0cfadf44e846..5cafea5c347242e79eb30651028a1750a9114e7b 100644 (file)
@@ -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),
index 93b4a3fa5ef02c4a019dc10a99d4668056881b39..d3984e1c62d4347f5b821a9d34bb5b1d92a66e75 100644 (file)
@@ -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 "
index 4c855d52b33712778d3bd20990d38d4328df9e6e..f19ec1d50da513d7f1739647504505845b0ea2a3 100644 (file)
@@ -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 ->