diff --git a/src/Tgstation.Server.Host/Components/Session/SessionController.cs b/src/Tgstation.Server.Host/Components/Session/SessionController.cs
index 390d8e3612..b064a63c73 100644
--- a/src/Tgstation.Server.Host/Components/Session/SessionController.cs
+++ b/src/Tgstation.Server.Host/Components/Session/SessionController.cs
@@ -349,15 +349,15 @@ namespace Tgstation.Server.Host.Components.Session
}
///
- public async Task ProcessBridgeRequest(BridgeParameters parameters, CancellationToken cancellationToken)
+ public Task ProcessBridgeRequest(BridgeParameters parameters, CancellationToken cancellationToken)
{
if (parameters == null)
throw new ArgumentNullException(nameof(parameters));
- // I don't fully understand why, but it seems to be REALLY important that this function remains async
- // I'm sure if i think about it hard enough I'll realize there's some race condition between this processing
- // and the deployment process, but this has been blocking me all week and I'm tired of giving it energy
- await Task.Yield();
+ static Task Error(string message) => Task.FromResult(new BridgeResponse
+ {
+ ErrorMessage = message
+ });
using (LogContext.PushProperty("Instance", metadata.Id))
{
@@ -369,28 +369,16 @@ namespace Tgstation.Server.Host.Components.Session
{
case BridgeCommandType.ChatSend:
if (parameters.ChatMessage == null)
- return new BridgeResponse
- {
- ErrorMessage = "Missing chatMessage field!"
- };
+ return Error("Missing chatMessage field!");
if (parameters.ChatMessage.ChannelIds == null)
- return new BridgeResponse
- {
- ErrorMessage = "Missing channelIds field in chatMessage!"
- };
+ return Error("Missing channelIds field in chatMessage!");
if (parameters.ChatMessage.ChannelIds.Any(channelIdString => !UInt64.TryParse(channelIdString, out var _)))
- return new BridgeResponse
- {
- ErrorMessage = "Invalid channelIds in chatMessage!"
- };
+ return Error("Invalid channelIds in chatMessage!");
if (parameters.ChatMessage.Text == null)
- return new BridgeResponse
- {
- ErrorMessage = "Missing message field in chatMessage!"
- };
+ return Error("Missing message field in chatMessage!");
chat.QueueMessage(
parameters.ChatMessage.Text,
@@ -413,10 +401,7 @@ namespace Tgstation.Server.Host.Components.Session
{
/////UHHHH
logger.LogWarning("DreamDaemon sent new port command without providing it's own!");
- return new BridgeResponse
- {
- ErrorMessage = "Missing stringified port as data parameter!"
- };
+ return Error("Missing stringified port as data parameter!");
}
var currentPort = parameters.CurrentPort.Value;
@@ -443,19 +428,13 @@ namespace Tgstation.Server.Host.Components.Session
case BridgeCommandType.Startup:
apiValidationStatus = ApiValidationStatus.BadValidationRequest;
if (parameters.Version == null)
- return new BridgeResponse
- {
- ErrorMessage = "Missing dmApiVersion field!"
- };
+ return Error("Missing dmApiVersion field!");
DMApiVersion = parameters.Version;
if (DMApiVersion.Major != DMApiConstants.Version.Major)
{
apiValidationStatus = ApiValidationStatus.Incompatible;
- return new BridgeResponse
- {
- ErrorMessage = "Incompatible dmApiVersion!"
- };
+ return Error("Incompatible dmApiVersion!");
}
switch (parameters.MinimumSecurityLevel)
@@ -470,15 +449,9 @@ namespace Tgstation.Server.Host.Components.Session
apiValidationStatus = ApiValidationStatus.RequiresTrusted;
break;
case null:
- return new BridgeResponse
- {
- ErrorMessage = "Missing minimumSecurityLevel field!"
- };
+ return Error("Missing minimumSecurityLevel field!");
default:
- return new BridgeResponse
- {
- ErrorMessage = "Invalid minimumSecurityLevel!"
- };
+ return Error("Invalid minimumSecurityLevel!");
}
logger.LogTrace("ApiValidationStatus set to {0}", apiValidationStatus);
@@ -515,7 +488,7 @@ namespace Tgstation.Server.Host.Components.Session
break;
}
- return response;
+ return Task.FromResult(response);
}
}