Fixed some subscribe issues
This commit is contained in:
@@ -523,8 +523,20 @@ void TSServer::client_move(
|
||||
if(!deleted.empty())
|
||||
target->notifyChannelHide(deleted, false);
|
||||
|
||||
if(!s_source_channel->permission_granted(permission::i_channel_needed_subscribe_power, target->calculate_permission_value(permission::i_channel_subscribe_power, s_source_channel->channelId()), false))
|
||||
target->unsubscribeChannel({s_source_channel}, false); //Unsubscribe last channel (hasn't permissions)
|
||||
auto i_source_channel = s_source_channel->channelId();
|
||||
if(std::find(deleted.begin(), deleted.end(), i_source_channel) == deleted.end()) {
|
||||
auto source_channel_sub_power = target->calculate_permission_value(permission::i_channel_subscribe_power, i_source_channel);
|
||||
if(!s_source_channel->permission_granted(permission::i_channel_needed_subscribe_power, source_channel_sub_power, false)) {
|
||||
auto source_channel_sub_power_ignore = target->calculate_permission_value(permission::b_channel_ignore_subscribe_power, i_source_channel);
|
||||
if(!DataClient::permission_granted(source_channel_sub_power_ignore, 1, true)) {
|
||||
logTrace(this->serverId, "Force unsubscribing of client {} for channel {}/{}. (Channel switch and no permissions)",
|
||||
CLIENT_STR_LOG_PREFIX_(target), s_source_channel->name(),
|
||||
i_source_channel
|
||||
);
|
||||
target->unsubscribeChannel({s_source_channel}, false); //Unsubscribe last channel (hasn't permissions)
|
||||
}
|
||||
}
|
||||
}
|
||||
TIMING_STEP(timings, "src hide ts");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user