]> granicus.if.org Git - ejabberd/commitdiff
Fix voice request/approvement detection and extract_jid_from_voice_approvement/1
authorMaxim Ignatenko <gelraen.ua@gmail.com>
Wed, 21 Sep 2011 04:38:32 +0000 (07:38 +0300)
committerMaxim Ignatenko <gelraen.ua@gmail.com>
Mon, 26 Sep 2011 08:16:29 +0000 (11:16 +0300)
src/mod_muc/mod_muc_room.erl

index 34e0e1f40b4e1fd8d7c8b50bad3b3a05cfee2ca2..1d360146844a7e6f858839bd3eee322a7e003cc8 100644 (file)
@@ -257,8 +257,8 @@ normal_state({route, From, "",
                    {next_state, normal_state, StateData};
                Type when (Type == "") or (Type == "normal") ->
                        IsInvitation = is_invitation(Els),
-                       IsVoiceRequest = is_voice_request(Els),
-                       IsVoiceApprovement = is_voice_approvement(Els),
+                       IsVoiceRequest = is_voice_request(Els) and is_visitor(From, StateData),
+                       IsVoiceApprovement = is_voice_approvement(Els) and not is_visitor(From, StateData),
                        if 
                        IsInvitation ->
                                case catch check_invitation(From, Els, Lang, StateData) of
@@ -298,9 +298,8 @@ normal_state({route, From, "",
                                        end
                                end;
                        IsVoiceRequest ->
-                               NewStateData = case {is_visitor(From, StateData),
-                                       (StateData#state.config)#config.allow_voice_requests} of
-                               {true, true} ->
+                               NewStateData = case (StateData#state.config)#config.allow_voice_requests of
+                               true ->
                                        MinInterval = (StateData#state.config)#config.voice_request_min_interval,
                                        BareFrom = jlib:jid_remove_resource(jlib:jid_tolower(From)),
                                        LastTime = last_voice_request_time(BareFrom, StateData),
@@ -317,19 +316,12 @@ normal_state({route, From, "",
                                                        StateData#state.jid, From, Err),
                                                StateData
                                        end;
-                               {_, false} ->
+                               false ->
                                        ErrText = "Voice requests are disabled in this room",
                                        Err = jlib:make_error_reply(
                                                Packet, ?ERRT_FORBIDDEN(Lang, ErrText)),
                                        ejabberd_router:route(
                                                StateData#state.jid, From, Err),
-                                       StateData;
-                               _ ->
-                                       ErrText = "Only visitors allowed to request voice",
-                                       Err = jlib:make_error_reply(
-                                               Packet, ?ERRT_NOT_ALLOWED(Lang, ErrText)),
-                                       ejabberd_router:route(
-                                               StateData#state.jid, From, Err),
                                        StateData
                                end,
                                {next_state, normal_state, NewStateData};
@@ -3839,7 +3831,7 @@ extract_jid_from_voice_approvement(Els) ->
                                                        case Acc2 of
                                                        {error, _} ->
                                                                case T of
-                                                               {"muc#jid", Jid} ->
+                                                               {"muc#jid", [Jid]} ->
                                                                        Jid;
                                                                _ ->
                                                                        Acc2