Fix message routing from subscribers

This commit is contained in:
Evgeniy Khramtsov 2016-09-08 16:39:34 +03:00
parent 6c943aa293
commit 36ab9cc2ea
1 changed files with 13 additions and 6 deletions

View File

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