mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
* src/mod_muc/mod_muc_room.erl: MUC kicks a participant if sends a
private message with type=error (EJAB-496). Updated. SVN Revision: 1164
This commit is contained in:
parent
cdc1698c8b
commit
45b01994e2
@ -474,7 +474,7 @@ normal_state({route, From, ToNick,
|
||||
Lang = xml:get_attr_s("xml:lang", Attrs),
|
||||
case decide_fate_message(Type, Packet, From, StateData) of
|
||||
{expulse_sender, Reason} ->
|
||||
?INFO_MSG(Reason, []),
|
||||
?DEBUG(Reason, []),
|
||||
Status_text = "This participant sent a bad error message to another participant.",
|
||||
NewState =
|
||||
add_user_presence_un(
|
||||
@ -1013,26 +1013,33 @@ list_to_affiliation(Affiliation) ->
|
||||
%% Decide the fate of the message and its sender
|
||||
%% Returns: continue_delivery | forget_message | {expulse_sender, Reason}
|
||||
decide_fate_message("error", Packet, From, StateData) ->
|
||||
case catch check_error_kick(Packet) of
|
||||
%% If this is an error stanza and its condition matches a criteria
|
||||
true ->
|
||||
%% If the sender of the message is online
|
||||
%% Make a preliminary decision
|
||||
PD = case catch check_error_kick(Packet) of
|
||||
%% If this is an error stanza and its condition matches a criteria
|
||||
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;
|
||||
{'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,
|
||||
case PD of
|
||||
{expulse_sender, R} ->
|
||||
case is_user_online(From, StateData) of
|
||||
true ->
|
||||
Reason = io_lib:format("This participant is considered a ghost and is expulsed: ~s",
|
||||
[jlib:jid_to_string(From)]),
|
||||
{expulse_sender, Reason};
|
||||
{expulse_sender, R};
|
||||
false ->
|
||||
forget_message
|
||||
end;
|
||||
false ->
|
||||
continue_delivery;
|
||||
{'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}
|
||||
Other ->
|
||||
Other
|
||||
end;
|
||||
|
||||
decide_fate_message(_, _, _, _) ->
|
||||
continue_delivery.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user