Support InvalidSession(true)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user