Support InvalidSession(true)

This commit is contained in:
RogueException
2017-03-20 23:49:17 -03:00
parent 20f7ba431f
commit 3a45e9ec87
3 changed files with 12 additions and 2 deletions

View File

@@ -193,6 +193,12 @@ namespace Discord
_reconnectCancelToken?.Cancel(); _reconnectCancelToken?.Cancel();
Error(ex); Error(ex);
} }
public void Reconnect()
{
_readyPromise.TrySetCanceled();
_connectionPromise.TrySetCanceled();
_connectionCancelToken?.Cancel();
}
private async Task AcquireConnectionLock() private async Task AcquireConnectionLock()
{ {
while (true) while (true)

View File

@@ -433,7 +433,11 @@ namespace Discord.WebSocket
_sessionId = null; _sessionId = null;
_lastSeq = 0; _lastSeq = 0;
await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards).ConfigureAwait(false); bool retry = (bool)payload;
if (retry)
_connection.Reconnect(); //TODO: Untested
else
await ApiClient.SendIdentifyAsync(shardID: ShardId, totalShards: TotalShards).ConfigureAwait(false);
} }
break; break;
case GatewayOpCode.Reconnect: case GatewayOpCode.Reconnect:

View File

@@ -5,11 +5,11 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Net; using System.Net;
using System.Reactive.Concurrency;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Splat; using Splat;
using System.Reactive.Concurrency;
namespace Discord.Net namespace Discord.Net
{ {