diff --git a/build/Version.props b/build/Version.props
index 308fb7a8c3..f3102f5c76 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -11,7 +11,7 @@
12.0.0
6.5.0
5.6.1
- 1.2.2
+ 1.3.0
1.2.1
1.0.1
diff --git a/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj b/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj
index 97c746f05c..0277b02fdd 100644
--- a/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj
+++ b/src/Tgstation.Server.Host.Watchdog/Tgstation.Server.Host.Watchdog.csproj
@@ -24,6 +24,8 @@
+
+
all
diff --git a/src/Tgstation.Server.Host.Watchdog/Watchdog.cs b/src/Tgstation.Server.Host.Watchdog/Watchdog.cs
index 0092ea6140..c45a25b364 100644
--- a/src/Tgstation.Server.Host.Watchdog/Watchdog.cs
+++ b/src/Tgstation.Server.Host.Watchdog/Watchdog.cs
@@ -11,6 +11,9 @@ using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
+using Mono.Unix;
+using Mono.Unix.Native;
+
using Tgstation.Server.Host.Common;
namespace Tgstation.Server.Host.Watchdog
@@ -148,6 +151,7 @@ namespace Tgstation.Server.Host.Watchdog
try
{
process.Start();
+ var childPid = process.Id;
using (var processCts = new CancellationTokenSource())
using (processCts.Token.Register(() => tcs.TrySetResult(null)))
@@ -173,7 +177,38 @@ namespace Tgstation.Server.Host.Watchdog
logger.LogWarning(ex, "Error triggering timeout!");
}
}))
- await tcs.Task.ConfigureAwait(false);
+ {
+ var processTask = tcs.Task;
+ while (!processTask.IsCompleted)
+ {
+ using var unixSignal = isWindows
+ ? null
+ : new UnixSignal(Signum.SIGUSR1);
+
+ var signalTcs = new TaskCompletionSource