From 46fa9603c21411effee456362c1fe0031ccbfd19 Mon Sep 17 00:00:00 2001 From: Amish Shah Date: Tue, 7 Aug 2018 17:34:01 +0100 Subject: [PATCH] voice: delete receive stream immediately to prevent it being written to after end (#2678) --- src/client/voice/networking/VoiceWebSocket.js | 5 ++++- src/client/voice/receiver/PacketHandler.js | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/client/voice/networking/VoiceWebSocket.js b/src/client/voice/networking/VoiceWebSocket.js index 1e08dedf9..be187761b 100644 --- a/src/client/voice/networking/VoiceWebSocket.js +++ b/src/client/voice/networking/VoiceWebSocket.js @@ -184,7 +184,10 @@ class VoiceWebSocket extends EventEmitter { case VoiceOPCodes.CLIENT_DISCONNECT: for (const receiver of this.connection.receivers) { const streamInfo = receiver.packets.streams.get(packet.d.user_id); - if (streamInfo) streamInfo.stream.push(null); + if (streamInfo) { + receiver.packets.streams.delete(packet.d.user_id); + streamInfo.stream.push(null); + } } break; case VoiceOPCodes.SPEAKING: diff --git a/src/client/voice/receiver/PacketHandler.js b/src/client/voice/receiver/PacketHandler.js index 03b5b6f69..bcc151f38 100644 --- a/src/client/voice/receiver/PacketHandler.js +++ b/src/client/voice/receiver/PacketHandler.js @@ -17,7 +17,10 @@ class PacketHandler extends EventEmitter { _stoppedSpeaking(userID) { const streamInfo = this.streams.get(userID); - if (streamInfo && streamInfo.end === 'silence') streamInfo.stream.push(null); + if (streamInfo && streamInfo.end === 'silence') { + this.streams.delete(userID); + streamInfo.stream.push(null); + } } makeStream(user, end) {