* src/mod_muc/mod_muc_room.erl: Merge SVN r1164, and fix the merge

of SVN r1179 (EJAB-496)

SVN Revision: 1196
This commit is contained in:
Badlop 2008-02-16 09:18:19 +00:00
parent 9a795401ae
commit c72082d798
2 changed files with 33 additions and 31 deletions

View File

@ -1,3 +1,8 @@
2008-02-16 Badlop <badlop@process-one.net>
* src/mod_muc/mod_muc_room.erl: Merge SVN r1164, and fix the merge
of SVN r1179 (EJAB-496)
2008-02-15 Badlop <badlop@process-one.net> 2008-02-15 Badlop <badlop@process-one.net>
* doc/release_notes_2.0.0.txt: Describe in the Release Notes the * doc/release_notes_2.0.0.txt: Describe in the Release Notes the

View File

@ -361,10 +361,10 @@ normal_state({route, From, "",
"error" -> "error" ->
ok; ok;
_ -> _ ->
ErrText = "Only occupants are allowed to send messages to the conference", ErrText = "Only occupants are allowed to send messages to the conference",
Err = jlib:make_error_reply( Err = jlib:make_error_reply(
Packet, ?ERRT_NOT_ACCEPTABLE(Lang, ErrText)), Packet, ?ERRT_NOT_ACCEPTABLE(Lang, ErrText)),
ejabberd_router:route(StateData#state.jid, From, Err) ejabberd_router:route(StateData#state.jid, From, Err)
end, end,
{next_state, normal_state, StateData} {next_state, normal_state, StateData}
end; end;
@ -467,18 +467,12 @@ normal_state({route, From, ToNick,
Lang = xml:get_attr_s("xml:lang", Attrs), Lang = xml:get_attr_s("xml:lang", Attrs),
case decide_fate_message(Type, Packet, From, StateData) of case decide_fate_message(Type, Packet, From, StateData) of
{expulse_sender, Reason} -> {expulse_sender, Reason} ->
?INFO_MSG(Reason, []), ?DEBUG(Reason, []),
Status_text = "This participant sent a bad error message to another participant.", ErrorText = "This participant is kicked from the room because "
NewState = "he sent an error message to another participant",
add_user_presence_un( NewState = expulse_participant(Packet, From, StateData,
From, translate:translate(Lang, ErrorText)),
{xmlelement, "presence", {next_state, normal_state, NewState};
[{"type", "unavailable"}],
[{xmlelement, "status", [], [{xmlcdata, Status_text}]}]},
StateData),
send_new_presence(From, NewState),
{next_state, normal_state,
remove_online_user(From, NewState)};
forget_message -> forget_message ->
{next_state, normal_state, StateData}; {next_state, normal_state, StateData};
continue_delivery -> continue_delivery ->
@ -1001,26 +995,28 @@ list_to_affiliation(Affiliation) ->
%% Decide the fate of the message and its sender %% Decide the fate of the message and its sender
%% Returns: continue_delivery | forget_message | {expulse_sender, Reason} %% Returns: continue_delivery | forget_message | {expulse_sender, Reason}
decide_fate_message("error", Packet, From, StateData) -> decide_fate_message("error", Packet, From, StateData) ->
case catch check_error_kick(Packet) of %% Make a preliminary decision
%% If this is an error stanza and its condition matches a criteria PD = case check_error_kick(Packet) of
true -> %% If this is an error stanza and its condition matches a criteria
%% If the sender of the message is online true ->
Reason = io_lib:format("This participant is considered a ghost and is expulsed: ~s",
[jlib:jid_to_string(From)]),
{expulse_sender, Reason};
false ->
continue_delivery
end,
case PD of
{expulse_sender, R} ->
case is_user_online(From, StateData) of case is_user_online(From, StateData) of
true -> true ->
Reason = io_lib:format("This participant is considered a ghost and is expulsed: ~s", {expulse_sender, R};
[jlib:jid_to_string(From)]),
{expulse_sender, Reason};
false -> false ->
forget_message forget_message
end; end;
false -> Other ->
continue_delivery; Other
{'EXIT', Error} ->
Reason = io_lib:format(
"This participant sent a problematic packet and is expulsed: ~s~nPacket: ~p~nError: ~p",
[jlib:jid_to_string(From), Packet, Error]),
{expulse_sender, Reason}
end; end;
decide_fate_message(_, _, _, _) -> decide_fate_message(_, _, _, _) ->
continue_delivery. continue_delivery.
@ -1045,7 +1041,7 @@ get_error_condition(Packet) ->
case catch get_error_condition2(Packet) of case catch get_error_condition2(Packet) of
{condition, ErrorCondition} -> {condition, ErrorCondition} ->
ErrorCondition; ErrorCondition;
{'EXIT', Error} -> {'EXIT', _} ->
"badformed error stanza" "badformed error stanza"
end. end.
get_error_condition2(Packet) -> get_error_condition2(Packet) ->
@ -3107,6 +3103,7 @@ check_invitation(From, Els, Lang, StateData) ->
end. end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Logging % Logging