From d3c9384c9c47cf293858778f36da014a5a503557 Mon Sep 17 00:00:00 2001 From: sillyfrog <816454+sillyfrog@users.noreply.github.com> Date: Fri, 1 May 2020 02:21:29 +1000 Subject: [PATCH] fix(Voice): correctly set speaking data in the voice ssrcMap Co-authored-by: Sillyfrog --- src/client/voice/networking/VoiceWebSocket.js | 2 +- src/client/voice/receiver/PacketHandler.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/client/voice/networking/VoiceWebSocket.js b/src/client/voice/networking/VoiceWebSocket.js index efc97aff..fefd241b 100644 --- a/src/client/voice/networking/VoiceWebSocket.js +++ b/src/client/voice/networking/VoiceWebSocket.js @@ -189,7 +189,7 @@ class VoiceWebSocket extends EventEmitter { this.emit('sessionDescription', packet.d); break; case VoiceOPCodes.CLIENT_CONNECT: - this.connection.ssrcMap.set(+packet.d.audio_ssrc, packet.d.user_id); + this.connection.ssrcMap.set(+packet.d.audio_ssrc, { userID: packet.d.user_id, speaking: 0 }); break; case VoiceOPCodes.CLIENT_DISCONNECT: const streamInfo = this.connection.receiver && this.connection.receiver.packets.streams.get(packet.d.user_id); diff --git a/src/client/voice/receiver/PacketHandler.js b/src/client/voice/receiver/PacketHandler.js index c441c5e0..ebcd6732 100644 --- a/src/client/voice/receiver/PacketHandler.js +++ b/src/client/voice/receiver/PacketHandler.js @@ -86,6 +86,11 @@ class PacketHandler extends EventEmitter { let speakingTimeout = this.speakingTimeouts.get(ssrc); if (typeof speakingTimeout === 'undefined') { + // Ensure at least the speaking bit is set. + // As the object is by reference, it's only needed once per client re-connect. + if (userStat.speaking === 0) { + userStat.speaking = 1; + } this.connection.onSpeaking({ user_id: userStat.userID, ssrc: ssrc, speaking: userStat.speaking }); speakingTimeout = this.receiver.connection.client.setTimeout(() => { try {