24
1
mirror of https://github.com/processone/ejabberd.git synced 2024-06-02 21:17:12 +02:00

Fix message routing from subscribers

This commit is contained in:
Evgeniy Khramtsov 2016-09-08 16:39:34 +03:00
parent 6c943aa293
commit 36ab9cc2ea

View File

@ -139,6 +139,7 @@ normal_state({route, From, <<"">>,
StateData) -> StateData) ->
Lang = fxml:get_attr_s(<<"xml:lang">>, Attrs), Lang = fxml:get_attr_s(<<"xml:lang">>, Attrs),
case is_user_online(From, StateData) orelse case is_user_online(From, StateData) orelse
is_subscriber(From, StateData) orelse
is_user_allowed_message_nonparticipant(From, StateData) is_user_allowed_message_nonparticipant(From, StateData)
of of
true -> true ->
@ -527,7 +528,8 @@ normal_state({route, From, ToNick,
continue_delivery -> continue_delivery ->
case case
{(StateData#state.config)#config.allow_private_messages, {(StateData#state.config)#config.allow_private_messages,
is_user_online(From, StateData)} is_user_online(From, StateData) orelse
is_subscriber(From, StateData)}
of of
{true, true} -> {true, true} ->
case Type of case Type of
@ -562,9 +564,7 @@ normal_state({route, From, ToNick,
PmFromVisitors == anyone; PmFromVisitors == anyone;
(PmFromVisitors == moderators) and (PmFromVisitors == moderators) and
DstIsModerator -> DstIsModerator ->
{ok, #user{nick = FromNick}} = {FromNick, _} = get_participant_data(From, StateData),
(?DICT):find(jid:tolower(From),
StateData#state.users),
FromNickJID = FromNickJID =
jid:replace_resource(StateData#state.jid, jid:replace_resource(StateData#state.jid,
FromNick), FromNick),
@ -1067,7 +1067,14 @@ get_participant_data(From, StateData) ->
of of
{ok, #user{nick = FromNick, role = Role}} -> {ok, #user{nick = FromNick, role = Role}} ->
{FromNick, Role}; {FromNick, Role};
error -> {<<"">>, moderator} error ->
case ?DICT:find(jid:tolower(jid:remove_resource(From)),
StateData#state.subscribers) of
{ok, #subscriber{nick = FromNick}} ->
{FromNick, none};
error ->
{<<"">>, moderator}
end
end. end.
process_presence(From, Nick, process_presence(From, Nick,