diff --git a/src/Discord.Net.Audio/Net/VoiceSocket.cs b/src/Discord.Net.Audio/Net/VoiceSocket.cs index f6b15055b..5cf0ed209 100644 --- a/src/Discord.Net.Audio/Net/VoiceSocket.cs +++ b/src/Discord.Net.Audio/Net/VoiceSocket.cs @@ -407,7 +407,7 @@ namespace Discord.Net.WebSockets WebSocketMessage msg; using (var reader = new JsonTextReader(new StringReader(json))) msg = _serializer.Deserialize(reader, typeof(WebSocketMessage)) as WebSocketMessage; - + var opCode = (OpCodes)msg.Operation; switch (opCode) { @@ -418,7 +418,11 @@ namespace Discord.Net.WebSockets var payload = (msg.Payload as JToken).ToObject(_serializer); _heartbeatInterval = payload.HeartbeatInterval; _ssrc = payload.SSRC; - string hostname = Host.Substring(0, Host.IndexOf('?')).Replace("wss://", ""); + string hostname; + if (Host.Contains("?")) + hostname = Host.Substring(0, Host.IndexOf('?')).Replace("wss://", ""); + else + hostname = Host.Replace("wss://", ""); var address = (await Dns.GetHostAddressesAsync(hostname).ConfigureAwait(false)).FirstOrDefault(); _endpoint = new IPEndPoint(address, payload.Port); diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index aa3d402c8..4862206e7 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -528,24 +528,22 @@ namespace Discord { try { - ulong serverId; - ulong[] serverIds = new ulong[50]; - int i = 0; - + const short batchSize = 50; + int largeServersCount = 0; await Task.Delay(2500, cancelToken); - while (true) + do { - while (_largeServers.TryDequeue(out serverId) && i < 50) - serverIds[i++] = serverId; - if (i > 0) + largeServersCount = 0; + ulong[] serverIds = new ulong[batchSize]; + while (largeServersCount < batchSize && _largeServers.TryDequeue(out serverIds[largeServersCount++])) { } + if (largeServersCount > 0) { + Logger.Verbose($"Downloading data for {largeServersCount} large servers."); cancelToken.ThrowIfCancellationRequested(); GatewaySocket.SendRequestMembers(serverIds, "", 0); await Task.Delay(1500, cancelToken); } - if (i < 50) - break; - } + } while (largeServersCount == batchSize); await Task.Delay(2500, cancelToken); EndConnect(); }