Browse Source

Merge 75c5f4fd91 into db90eab953

pull/1095/merge
ComputerMaster1st GitHub 7 years ago
parent
commit
095c6e1fea
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 7 deletions
  1. +4
    -6
      src/Discord.Net.WebSocket/ConnectionManager.cs
  2. +2
    -1
      src/Discord.Net.WebSocket/DiscordSocketClient.cs
  3. +8
    -0
      src/Discord.Net.WebSocket/Net/DefaultUdpSocket.cs

+ 4
- 6
src/Discord.Net.WebSocket/ConnectionManager.cs View File

@@ -103,12 +103,10 @@ namespace Discord
finally { _stateLock.Release(); }
});
}
public virtual async Task StopAsync()
public virtual Task StopAsync()
{
Cancel();
var task = _task;
if (task != null)
await task.ConfigureAwait(false);
return Task.CompletedTask;
}

private async Task ConnectAsync(CancellationTokenSource reconnectCancelToken)
@@ -159,9 +157,9 @@ namespace Discord

await _onDisconnecting(ex).ConfigureAwait(false);

await _logger.InfoAsync("Disconnected").ConfigureAwait(false);
State = ConnectionState.Disconnected;
await _disconnectedEvent.InvokeAsync(ex, isReconnecting).ConfigureAwait(false);
State = ConnectionState.Disconnected;
await _logger.InfoAsync("Disconnected").ConfigureAwait(false);
}

public async Task CompleteAsync()


+ 2
- 1
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -207,7 +207,8 @@ namespace Discord.WebSocket
await heartbeatTask.ConfigureAwait(false);
_heartbeatTask = null;

while (_heartbeatTimes.TryDequeue(out long time)) { }
// Check if hearbeatTimes is not empty before dequeuing. TryDequeue can cause blocking.
if (!_heartbeatTimes.IsEmpty) while (_heartbeatTimes.TryDequeue(out long time)) { }
_lastMessageTime = 0;

await _gatewayLogger.DebugAsync("Waiting for guild downloader").ConfigureAwait(false);


+ 8
- 0
src/Discord.Net.WebSocket/Net/DefaultUdpSocket.cs View File

@@ -117,6 +117,14 @@ namespace Discord.Net.Udp
while (!cancelToken.IsCancellationRequested)
{
var receiveTask = _udp.ReceiveAsync();

_ = receiveTask.ContinueWith((recieveResult) =>
{
//observe the exception as to not recieve as unhandled exception
_ = recieveResult.Exception;

}, TaskContinuationOptions.OnlyOnFaulted);

var task = await Task.WhenAny(closeTask, receiveTask).ConfigureAwait(false);
if (task == closeTask)
break;


Loading…
Cancel
Save