From fddd6110e00df12c99a20a2cc9d074f5f4f1f965 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Sun, 30 Apr 2017 19:01:47 +0300 Subject: Don't validate an option in gen_mod:get*opt() functions The changes are very similar to those from previous commit: * Now there is no need to pass validating function in gen_mod:get_opt() and gen_mod:get_module_opt() functions, because the modules' configuration keeps already validated values. * New functions gen_mod:get_opt/2 and gen_mod:get_module_opt/3 are introduced. * Functions gen_mod:get_opt/4 and get_module_opt/5 are deprecated. If the functions are still called, the "function" argument is simply ignored. * Validating callback Mod:listen_opt_type/1 is introduced to validate listening options at startup. --- src/mod_muc_room.erl | 45 ++++++++++----------------------------------- 1 file changed, 10 insertions(+), 35 deletions(-) (limited to 'src/mod_muc_room.erl') diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index ca5b1292..231b59b2 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -165,8 +165,7 @@ normal_state({route, <<"">>, MinMessageInterval = trunc(gen_mod:get_module_opt( StateData#state.server_host, mod_muc, min_message_interval, - fun(MMI) when is_number(MMI) -> MMI end, 0) - * 1000000), + 0) * 1000000), Size = element_size(Packet), {MessageShaper, MessageShaperInterval} = shaper:update(Activity#activity.message_shaper, Size), @@ -347,10 +346,7 @@ normal_state({route, Nick, #presence{from = From} = Packet}, StateData) -> MinPresenceInterval = trunc(gen_mod:get_module_opt(StateData#state.server_host, mod_muc, min_presence_interval, - fun(I) when is_number(I), I>=0 -> - I - end, 0) - * 1000000), + 0) * 1000000), if (Now >= Activity#activity.presence_time + MinPresenceInterval) and (Activity#activity.presence == undefined) -> NewActivity = Activity#activity{presence_time = Now}, @@ -1415,14 +1411,12 @@ get_max_users(StateData) -> get_service_max_users(StateData) -> gen_mod:get_module_opt(StateData#state.server_host, mod_muc, max_users, - fun(I) when is_integer(I), I>0 -> I end, ?MAX_USERS_DEFAULT). -spec get_max_users_admin_threshold(state()) -> pos_integer(). get_max_users_admin_threshold(StateData) -> gen_mod:get_module_opt(StateData#state.server_host, mod_muc, max_users_admin_threshold, - fun(I) when is_integer(I), I>0 -> I end, 5). -spec room_queue_new(binary(), shaper:shaper(), _) -> p1_queue:queue(). @@ -1430,19 +1424,15 @@ room_queue_new(ServerHost, Shaper, QueueType) -> HaveRoomShaper = Shaper /= none, HaveMessageShaper = gen_mod:get_module_opt( ServerHost, mod_muc, user_message_shaper, - fun(A) when is_atom(A) -> A end, none) /= none, HavePresenceShaper = gen_mod:get_module_opt( ServerHost, mod_muc, user_presence_shaper, - fun(A) when is_atom(A) -> A end, none) /= none, HaveMinMessageInterval = gen_mod:get_module_opt( ServerHost, mod_muc, min_message_interval, - fun(I) when is_number(I), I>=0 -> I end, 0) /= 0, HaveMinPresenceInterval = gen_mod:get_module_opt( ServerHost, mod_muc, min_presence_interval, - fun(I) when is_number(I), I>=0 -> I end, 0) /= 0, if HaveRoomShaper or HaveMessageShaper or HavePresenceShaper or HaveMinMessageInterval or HaveMinPresenceInterval -> @@ -1461,12 +1451,10 @@ get_user_activity(JID, StateData) -> MessageShaper = shaper:new(gen_mod:get_module_opt(StateData#state.server_host, mod_muc, user_message_shaper, - fun(A) when is_atom(A) -> A end, none)), PresenceShaper = shaper:new(gen_mod:get_module_opt(StateData#state.server_host, mod_muc, user_presence_shaper, - fun(A) when is_atom(A) -> A end, none)), #activity{message_shaper = MessageShaper, presence_shaper = PresenceShaper} @@ -1477,15 +1465,11 @@ store_user_activity(JID, UserActivity, StateData) -> MinMessageInterval = trunc(gen_mod:get_module_opt(StateData#state.server_host, mod_muc, min_message_interval, - fun(I) when is_number(I), I>=0 -> I end, - 0) - * 1000), + 0) * 1000), MinPresenceInterval = trunc(gen_mod:get_module_opt(StateData#state.server_host, mod_muc, min_presence_interval, - fun(I) when is_number(I), I>=0 -> I end, - 0) - * 1000), + 0) * 1000), Key = jid:tolower(JID), Now = p1_time_compat:system_time(micro_seconds), Activity1 = clean_treap(StateData#state.activity, @@ -1788,7 +1772,6 @@ add_new_user(From, Nick, Packet, StateData) -> MaxConferences = gen_mod:get_module_opt(StateData#state.server_host, mod_muc, max_user_conferences, - fun(I) when is_integer(I), I>0 -> I end, 10), Collision = nick_collision(From, Nick, StateData), IsSubscribeRequest = not is_record(Packet, presence), @@ -2061,10 +2044,10 @@ filter_history(Queue, Now, Nick, -spec is_room_overcrowded(state()) -> boolean(). is_room_overcrowded(StateData) -> - MaxUsersPresence = gen_mod:get_module_opt(StateData#state.server_host, - mod_muc, max_users_presence, - fun(MUP) when is_integer(MUP) -> MUP end, - ?DEFAULT_MAX_USERS_PRESENCE), + MaxUsersPresence = gen_mod:get_module_opt( + StateData#state.server_host, + mod_muc, max_users_presence, + ?DEFAULT_MAX_USERS_PRESENCE), (?DICT):size(StateData#state.users) > MaxUsersPresence. -spec presence_broadcast_allowed(jid(), state()) -> boolean(). @@ -3114,18 +3097,11 @@ is_allowed_room_name_desc_limits(Options, StateData) -> MaxRoomName = gen_mod:get_module_opt( StateData#state.server_host, mod_muc, max_room_name, - fun(infinity) -> infinity; - (I) when is_integer(I), - I>0 -> I - end, infinity), + infinity), MaxRoomDesc = gen_mod:get_module_opt( StateData#state.server_host, mod_muc, max_room_desc, - fun(infinity) -> infinity; - (I) when is_integer(I), - I>0 -> - I - end, infinity), + infinity), (byte_size(RoomName) =< MaxRoomName) andalso (byte_size(RoomDesc) =< MaxRoomDesc). @@ -3151,7 +3127,6 @@ get_default_room_maxusers(RoomState) -> DefRoomOpts = gen_mod:get_module_opt(RoomState#state.server_host, mod_muc, default_room_options, - fun(L) when is_list(L) -> L end, []), RoomState2 = set_opts(DefRoomOpts, RoomState), (RoomState2#state.config)#config.max_users. -- cgit v1.2.3