diff --git a/Discord.Net.Tests/Tests.cs b/Discord.Net.Tests/Tests.cs index 89e73a02f..6581fa0be 100644 --- a/Discord.Net.Tests/Tests.cs +++ b/Discord.Net.Tests/Tests.cs @@ -9,7 +9,8 @@ namespace Discord.Net.Tests [TestClass] public class Tests { - private DiscordClient _bot1, _bot2; + private const int EventTimeout = 5000; //Max time in milliseconds to wait for an event response from our test actions + private DiscordClient _bot1, _bot2; private Server _testServer; private Channel _testServerChannel; private Random _random; @@ -29,6 +30,7 @@ namespace Discord.Net.Tests Task.WaitAll(_bot1.Servers.Select(x => _bot1.LeaveServer(x)).ToArray()); Task.WaitAll(_bot2.Servers.Select(x => _bot2.LeaveServer(x)).ToArray()); + //Create new server and invite other bot to it _testServer = _bot1.CreateServer("Discord.Net Testbed", Regions.US_East).Result; _testServerChannel = _testServer.DefaultChannel; Invite invite = _bot1.CreateInvite(_testServer, 60, 1, false, false).Result; @@ -99,7 +101,7 @@ namespace Discord.Net.Tests addEvent(handler); action(); - trigger.WaitOne(5000); + trigger.WaitOne(EventTimeout); removeEvent(handler); Assert.AreEqual(true, result, msg); diff --git a/Discord.Net/DiscordWebSocket.cs b/Discord.Net/DiscordWebSocket.cs index 566ad1980..216cb7459 100644 --- a/Discord.Net/DiscordWebSocket.cs +++ b/Discord.Net/DiscordWebSocket.cs @@ -15,6 +15,7 @@ namespace Discord { private const int ReceiveChunkSize = 4096; private const int SendChunkSize = 4096; + private const int ReadyTimeout = 5000; //Max time in milliseconds between connecting to Discord and receiving a READY event private volatile ClientWebSocket _webSocket; private volatile CancellationTokenSource _cancelToken; @@ -65,7 +66,8 @@ namespace Discord msg.Payload.Properties["$referring_domain"] = ""; SendMessage(msg, cancelToken); - _connectWaitOnLogin.WaitOne(); + if (!_connectWaitOnLogin.WaitOne(ReadyTimeout)) + throw new Exception("No reply from Discord server"); } public async Task DisconnectAsync() {