Branch: Source
Build version: 4.9.2-0+++depot+UE4-Releases+4.9 & 4.11.0-0+UE4
Detailed description of the issue:
FOnlineVoiceSteam::UnmuteRemoteTalker() will never unmute a player:
// Make sure there isn't a system mute
bool bIsMuted = IsMuted(LocalUserNum, PlayerId);
if (!bIsMuted)
{
// Remove them from the mute list
MuteList.RemoveSingleSwap((const FUniqueNetIdSteam&)PlayerId);
UE_LOG(LogVoice, Log, TEXT("Unmuting remote talker (%s)"), *PlayerId.ToDebugString());
}
FOnlineVoiceSteam::IsMuted() will return true if the player is in the MuteList array.
“If player is not in the MuteList array, remove the player from the MuteList array”.
Once muted, a player can never be unmuted.
Fix:
In the function FOnlineVoiceSteam::IsMuted(), this:
Index = MuteList.Find((const FUniqueNetIdSteam&)UniqueId);
Should be this:
Index = SystemMuteList.Find((const FUniqueNetIdSteam&)UniqueId);
Tested online on packaged Steam build using dedicated server exe.
Note: FOnlineVoiceImpl::IsMuted() uses the correct mute list.