diff --git a/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs b/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs index 66b039fba4..e38b92b9bb 100644 --- a/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs +++ b/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs @@ -269,6 +269,7 @@ namespace Tgstation.Server.Host.Components.Watchdog var query = command.Parameters; object content; + Action postRespond = null; if (query.TryGetValue(Constants.DMParameterCommand, out var method)) { content = new object(); @@ -304,7 +305,8 @@ namespace Tgstation.Server.Host.Components.Watchdog //we'll also get here from SetPort so complete that task var tmpTcs = portAssignmentTcs; portAssignmentTcs = null; - tmpTcs?.SetResult(true); + if (tmpTcs != null) + postRespond = () => tmpTcs.SetResult(true); } portClosedForReboot = false; @@ -321,7 +323,7 @@ namespace Tgstation.Server.Host.Components.Watchdog } var oldTcs = rebootTcs; rebootTcs = new TaskCompletionSource(); - oldTcs.SetResult(null); + postRespond = () => oldTcs.SetResult(null); break; default: content = new ErrorMessage { Message = "Requested command not supported!" }; @@ -336,6 +338,8 @@ namespace Tgstation.Server.Host.Components.Watchdog if (response != Constants.DMResponseSuccess) logger.LogWarning("Recieved error response while responding to interop: {0}", response); + + postRespond?.Invoke(); } ///