diff --git a/src/Discord.Net/DiscordClientConfig.cs b/src/Discord.Net/DiscordClientConfig.cs index 8e09e0fe0..9c81fd5c8 100644 --- a/src/Discord.Net/DiscordClientConfig.cs +++ b/src/Discord.Net/DiscordClientConfig.cs @@ -21,7 +21,7 @@ private bool _ackMessages = false; //Internal - internal override bool EnableVoice => base.EnableVoice && !EnableVoiceMultiserver; + internal override bool EnableVoice => (base.EnableVoice && !EnableVoiceMultiserver) || base.VoiceOnly; public new DiscordClientConfig Clone() { diff --git a/src/Discord.Net/Net/Voice/VoiceBuffer.cs b/src/Discord.Net/Net/Voice/VoiceBuffer.cs index 84d24541a..bc31a8bd3 100644 --- a/src/Discord.Net/Net/Voice/VoiceBuffer.cs +++ b/src/Discord.Net/Net/Voice/VoiceBuffer.cs @@ -32,6 +32,9 @@ namespace Discord.Net.Voice public void Push(byte[] buffer, int bytes, CancellationToken cancelToken) { + if (cancelToken.IsCancellationRequested) + throw new OperationCanceledException("Client is disconnected.", cancelToken); + int wholeFrames = bytes / _frameSize; int expectedBytes = wholeFrames * _frameSize; int lastFrameSize = bytes - expectedBytes; @@ -50,7 +53,10 @@ namespace Discord.Net.Voice { _notOverflowEvent.Wait(cancelToken); } - catch (OperationCanceledException) { return; } + catch (OperationCanceledException ex) + { + throw new OperationCanceledException("Client is disconnected.", ex, cancelToken); + } } if (i == wholeFrames)