@@ -110,7 +110,7 @@ namespace Discord.Commands | |||||
{ | { | ||||
var task = cmd.Handler(eventArgs); | var task = cmd.Handler(eventArgs); | ||||
if (task != null) | if (task != null) | ||||
await task; | |||||
await task.ConfigureAwait(false); | |||||
} | } | ||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
@@ -123,7 +123,7 @@ namespace Discord | |||||
if (channel == null) throw new ArgumentNullException(nameof(channel)); | if (channel == null) throw new ArgumentNullException(nameof(channel)); | ||||
CheckReady(); | CheckReady(); | ||||
await _api.EditChannel(channel.Id, name: name, topic: topic); | |||||
await _api.EditChannel(channel.Id, name: name, topic: topic).ConfigureAwait(false); | |||||
if (position != null) | if (position != null) | ||||
{ | { | ||||
@@ -147,7 +147,7 @@ namespace Discord | |||||
channels[newPos] = channel; | channels[newPos] = channel; | ||||
} | } | ||||
Channel after = minPos > 0 ? channels.Skip(minPos - 1).FirstOrDefault() : null; | Channel after = minPos > 0 ? channels.Skip(minPos - 1).FirstOrDefault() : null; | ||||
await ReorderChannels(channel.Server, channels.Skip(minPos), after); | |||||
await ReorderChannels(channel.Server, channels.Skip(minPos), after).ConfigureAwait(false); | |||||
} | } | ||||
} | } | ||||
@@ -187,7 +187,7 @@ namespace Discord | |||||
CheckReady(); | CheckReady(); | ||||
foreach (var message in messages) | foreach (var message in messages) | ||||
await DeleteMessageInternal(message); | |||||
await DeleteMessageInternal(message).ConfigureAwait(false); | |||||
} | } | ||||
private async Task DeleteMessageInternal(Message message) | private async Task DeleteMessageInternal(Message message) | ||||
{ | { | ||||
@@ -48,7 +48,7 @@ namespace Discord | |||||
var perms = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != targetId).FirstOrDefault(); | var perms = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != targetId).FirstOrDefault(); | ||||
if (allowValue != 0 || denyValue != 0) | if (allowValue != 0 || denyValue != 0) | ||||
{ | { | ||||
await _api.SetChannelPermissions(channel.Id, targetId, targetType.Value, allowValue, denyValue); | |||||
await _api.SetChannelPermissions(channel.Id, targetId, targetType.Value, allowValue, denyValue).ConfigureAwait(false); | |||||
if (perms != null) | if (perms != null) | ||||
{ | { | ||||
perms.Allow.SetRawValueInternal(allowValue); | perms.Allow.SetRawValueInternal(allowValue); | ||||
@@ -68,7 +68,7 @@ namespace Discord | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
await _api.DeleteChannelPermissions(channel.Id, targetId); | |||||
await _api.DeleteChannelPermissions(channel.Id, targetId).ConfigureAwait(false); | |||||
if (perms != null) | if (perms != null) | ||||
{ | { | ||||
channel.PermissionOverwrites = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != targetId).ToArray(); | channel.PermissionOverwrites = channel.PermissionOverwrites.Where(x => x.TargetType != targetType || x.TargetId != targetId).ToArray(); | ||||
@@ -86,7 +86,7 @@ namespace Discord | |||||
var role = _roles.GetOrAdd(response.Id, server.Id); | var role = _roles.GetOrAdd(response.Id, server.Id); | ||||
role.Update(response); | role.Update(response); | ||||
await EditRole(role, name: name); | |||||
await EditRole(role, name: name).ConfigureAwait(false); | |||||
return role; | return role; | ||||
} | } | ||||
@@ -101,7 +101,7 @@ namespace Discord | |||||
name: name ?? role.Name, | name: name ?? role.Name, | ||||
permissions: permissions?.RawValue ?? role.Permissions.RawValue, | permissions: permissions?.RawValue ?? role.Permissions.RawValue, | ||||
color: color?.RawValue, | color: color?.RawValue, | ||||
hoist: hoist); | |||||
hoist: hoist).ConfigureAwait(false); | |||||
if (position != null) | if (position != null) | ||||
{ | { | ||||
@@ -124,7 +124,7 @@ namespace Discord | |||||
roles[i] = roles[i - 1]; | roles[i] = roles[i - 1]; | ||||
roles[newPos] = role; | roles[newPos] = role; | ||||
} | } | ||||
await _api.ReorderRoles(role.Server.Id, roles.Skip(minPos).Select(x => x.Id), minPos); | |||||
await _api.ReorderRoles(role.Server.Id, roles.Skip(minPos).Select(x => x.Id), minPos).ConfigureAwait(false); | |||||
} | } | ||||
} | } | ||||
@@ -99,7 +99,7 @@ namespace Discord | |||||
if (server == null) throw new ArgumentNullException(nameof(server)); | if (server == null) throw new ArgumentNullException(nameof(server)); | ||||
CheckReady(); | CheckReady(); | ||||
var response = await _api.EditServer(server.Id, name: name ?? server.Name, region: region.Value, iconType: iconType, icon: icon); | |||||
var response = await _api.EditServer(server.Id, name: name ?? server.Name, region: region.Value, iconType: iconType, icon: icon).ConfigureAwait(false); | |||||
server.Update(response); | server.Update(response); | ||||
} | } | ||||
@@ -52,7 +52,7 @@ namespace Discord | |||||
this.Connected += async (s, e) => | this.Connected += async (s, e) => | ||||
{ | { | ||||
_api.CancelToken = CancelToken; | _api.CancelToken = CancelToken; | ||||
await SendStatus(); | |||||
await SendStatus().ConfigureAwait(false); | |||||
}; | }; | ||||
VoiceDisconnected += (s, e) => | VoiceDisconnected += (s, e) => | ||||
@@ -212,7 +212,7 @@ namespace Discord | |||||
} | } | ||||
catch (TaskCanceledException) { throw new TimeoutException(); } | catch (TaskCanceledException) { throw new TimeoutException(); } | ||||
await Connect(token); | |||||
await Connect(token).ConfigureAwait(false); | |||||
return token; | return token; | ||||
} | } | ||||
@@ -227,8 +227,9 @@ namespace Discord | |||||
_api.Token = token; | _api.Token = token; | ||||
string gateway = (await _api.Gateway() | string gateway = (await _api.Gateway() | ||||
.Timeout(_config.APITimeout) | |||||
.ConfigureAwait(false)).Url; | |||||
.Timeout(_config.APITimeout) | |||||
.ConfigureAwait(false) | |||||
).Url; | |||||
if (_config.LogLevel >= LogMessageSeverity.Verbose) | if (_config.LogLevel >= LogMessageSeverity.Verbose) | ||||
RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Websocket endpoint: {gateway}"); | RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, $"Websocket endpoint: {gateway}"); | ||||
@@ -259,7 +260,7 @@ namespace Discord | |||||
while (_pendingMessages.TryDequeue(out ignored)) { } | while (_pendingMessages.TryDequeue(out ignored)) { } | ||||
} | } | ||||
await _api.Logout(); | |||||
await _api.Logout().ConfigureAwait(false); | |||||
_channels.Clear(); | _channels.Clear(); | ||||
_users.Clear(); | _users.Clear(); | ||||
@@ -501,7 +502,7 @@ namespace Discord | |||||
RaiseMessageCreated(msg); | RaiseMessageCreated(msg); | ||||
if (Config.AckMessages && !isAuthor) | if (Config.AckMessages && !isAuthor) | ||||
await _api.AckMessage(data.Id, data.ChannelId); | |||||
await _api.AckMessage(data.Id, data.ChannelId).ConfigureAwait(false); | |||||
} | } | ||||
break; | break; | ||||
case "MESSAGE_UPDATE": | case "MESSAGE_UPDATE": | ||||
@@ -612,7 +613,7 @@ namespace Discord | |||||
//Internal (handled in DiscordSimpleClient) | //Internal (handled in DiscordSimpleClient) | ||||
case "VOICE_SERVER_UPDATE": | case "VOICE_SERVER_UPDATE": | ||||
await base.OnReceivedEvent(e); | |||||
await base.OnReceivedEvent(e).ConfigureAwait(false); | |||||
break; | break; | ||||
//Others | //Others | ||||
@@ -77,7 +77,7 @@ namespace Discord | |||||
{ | { | ||||
RaiseDisconnected(e); | RaiseDisconnected(e); | ||||
if (e.WasUnexpected) | if (e.WasUnexpected) | ||||
await socket.Reconnect(_token); | |||||
await socket.Reconnect(_token).ConfigureAwait(false); | |||||
}; | }; | ||||
if (!_config.VoiceOnly) | if (!_config.VoiceOnly) | ||||
@@ -90,7 +90,7 @@ namespace Discord | |||||
} | } | ||||
} | } | ||||
socket.ReceivedEvent += async (s, e) => await OnReceivedEvent(e); | |||||
socket.ReceivedEvent += async (s, e) => await OnReceivedEvent(e).ConfigureAwait(false); | |||||
return socket; | return socket; | ||||
} | } | ||||
internal virtual VoiceWebSocket CreateVoiceSocket() | internal virtual VoiceWebSocket CreateVoiceSocket() | ||||
@@ -102,7 +102,7 @@ namespace Discord | |||||
{ | { | ||||
RaiseVoiceDisconnected(socket.CurrentServerId, e); | RaiseVoiceDisconnected(socket.CurrentServerId, e); | ||||
if (e.WasUnexpected) | if (e.WasUnexpected) | ||||
await socket.Reconnect(); | |||||
await socket.Reconnect().ConfigureAwait(false); | |||||
}; | }; | ||||
if (_config.LogLevel >= LogMessageSeverity.Info) | if (_config.LogLevel >= LogMessageSeverity.Info) | ||||
{ | { | ||||
@@ -212,7 +212,7 @@ namespace Discord | |||||
catch (Exception ex) { await DisconnectInternal(ex: ex, skipAwait: true).ConfigureAwait(false); } | catch (Exception ex) { await DisconnectInternal(ex: ex, skipAwait: true).ConfigureAwait(false); } | ||||
//Ensure all other tasks are signaled to end. | //Ensure all other tasks are signaled to end. | ||||
await DisconnectInternal(skipAwait: true); | |||||
await DisconnectInternal(skipAwait: true).ConfigureAwait(false); | |||||
//Wait for the remaining tasks to complete | //Wait for the remaining tasks to complete | ||||
try { await allTasks.ConfigureAwait(false); } | try { await allTasks.ConfigureAwait(false); } | ||||
@@ -309,7 +309,7 @@ namespace Discord | |||||
{ | { | ||||
string token = e.Payload.Value<string>("token"); | string token = e.Payload.Value<string>("token"); | ||||
_voiceSocket.Host = "wss://" + e.Payload.Value<string>("endpoint").Split(':')[0]; | _voiceSocket.Host = "wss://" + e.Payload.Value<string>("endpoint").Split(':')[0]; | ||||
await _voiceSocket.Login(_userId, _dataSocket.SessionId, token, CancelToken); | |||||
await _voiceSocket.Login(_userId, _dataSocket.SessionId, token, CancelToken).ConfigureAwait(false); | |||||
} | } | ||||
} | } | ||||
break; | break; | ||||
@@ -70,7 +70,7 @@ namespace Discord.Net.WebSockets | |||||
protected override async Task ProcessMessage(string json) | protected override async Task ProcessMessage(string json) | ||||
{ | { | ||||
await base.ProcessMessage(json); | |||||
await base.ProcessMessage(json).ConfigureAwait(false); | |||||
var msg = JsonConvert.DeserializeObject<WebSocketMessage>(json); | var msg = JsonConvert.DeserializeObject<WebSocketMessage>(json); | ||||
if (msg.Sequence.HasValue) | if (msg.Sequence.HasValue) | ||||
_lastSeq = msg.Sequence.Value; | _lastSeq = msg.Sequence.Value; | ||||
@@ -104,7 +104,7 @@ namespace Discord.Net.WebSockets | |||||
Host = payload.Url; | Host = payload.Url; | ||||
if (_logLevel >= LogMessageSeverity.Info) | if (_logLevel >= LogMessageSeverity.Info) | ||||
RaiseOnLog(LogMessageSeverity.Info, "Redirected to " + payload.Url); | RaiseOnLog(LogMessageSeverity.Info, "Redirected to " + payload.Url); | ||||
await Redirect(payload.Url); | |||||
await Redirect(payload.Url).ConfigureAwait(false); | |||||
} | } | ||||
} | } | ||||
break; | break; | ||||
@@ -66,7 +66,7 @@ namespace Discord.Net.WebSockets | |||||
if ((WebSocketState)_state == WebSocketState.Connected) | if ((WebSocketState)_state == WebSocketState.Connected) | ||||
{ | { | ||||
//Adjust the host and tell the system to reconnect | //Adjust the host and tell the system to reconnect | ||||
await DisconnectInternal(new Exception("Server transfer occurred."), isUnexpected: false); | |||||
await DisconnectInternal(new Exception("Server transfer occurred."), isUnexpected: false).ConfigureAwait(false); | |||||
return; | return; | ||||
} | } | ||||
@@ -163,7 +163,7 @@ namespace Discord.Net.WebSockets | |||||
catch (Exception ex) { await DisconnectInternal(ex: ex, skipAwait: true).ConfigureAwait(false); } | catch (Exception ex) { await DisconnectInternal(ex: ex, skipAwait: true).ConfigureAwait(false); } | ||||
//Ensure all other tasks are signaled to end. | //Ensure all other tasks are signaled to end. | ||||
await DisconnectInternal(skipAwait: true); | |||||
await DisconnectInternal(skipAwait: true).ConfigureAwait(false); | |||||
//Wait for the remaining tasks to complete | //Wait for the remaining tasks to complete | ||||
try { await allTasks.ConfigureAwait(false); } | try { await allTasks.ConfigureAwait(false); } | ||||
@@ -186,7 +186,7 @@ namespace Discord.Net.WebSockets | |||||
_wasDisconnectUnexpected = false; | _wasDisconnectUnexpected = false; | ||||
//Dont reset disconnectReason, we may called ThrowError() later | //Dont reset disconnectReason, we may called ThrowError() later | ||||
await _engine.Disconnect(); | |||||
await _engine.Disconnect().ConfigureAwait(false); | |||||
_cancelTokenSource = null; | _cancelTokenSource = null; | ||||
var oldState = _state; | var oldState = _state; | ||||
_state = (int)WebSocketState.Disconnected; | _state = (int)WebSocketState.Disconnected; | ||||
@@ -227,7 +227,7 @@ namespace Discord.Net.WebSockets | |||||
await Task.Delay(_heartbeatInterval, cancelToken).ConfigureAwait(false); | await Task.Delay(_heartbeatInterval, cancelToken).ConfigureAwait(false); | ||||
} | } | ||||
else | else | ||||
await Task.Delay(100, cancelToken); | |||||
await Task.Delay(100, cancelToken).ConfigureAwait(false); | |||||
} | } | ||||
} | } | ||||
catch (OperationCanceledException) { } | catch (OperationCanceledException) { } | ||||
@@ -52,14 +52,14 @@ namespace Discord.Net.WebSockets | |||||
_webSocket.OnError += async (s, e) => | _webSocket.OnError += async (s, e) => | ||||
{ | { | ||||
_parent.RaiseOnLog(LogMessageSeverity.Error, e.Exception.GetBaseException().Message); | _parent.RaiseOnLog(LogMessageSeverity.Error, e.Exception.GetBaseException().Message); | ||||
await _parent.DisconnectInternal(e.Exception, skipAwait: true); | |||||
await _parent.DisconnectInternal(e.Exception, skipAwait: true).ConfigureAwait(false); | |||||
}; | }; | ||||
_webSocket.OnClose += async (s, e) => | _webSocket.OnClose += async (s, e) => | ||||
{ | { | ||||
string code = e.WasClean ? e.Code.ToString() : "Unexpected"; | string code = e.WasClean ? e.Code.ToString() : "Unexpected"; | ||||
string reason = e.Reason != "" ? e.Reason : "No Reason"; | string reason = e.Reason != "" ? e.Reason : "No Reason"; | ||||
Exception ex = new Exception($"Got Close Message ({code}): {reason}"); | Exception ex = new Exception($"Got Close Message ({code}): {reason}"); | ||||
await _parent.DisconnectInternal(ex, skipAwait: true); | |||||
await _parent.DisconnectInternal(ex, skipAwait: true).ConfigureAwait(false); | |||||
}; | }; | ||||
_webSocket.Log.Output = (e, m) => { }; //Dont let websocket-sharp print to console | _webSocket.Log.Output = (e, m) => { }; //Dont let websocket-sharp print to console | ||||
_webSocket.Connect(); | _webSocket.Connect(); | ||||