From 46974066a4d330ed032aac91c6537aed21dd05b1 Mon Sep 17 00:00:00 2001 From: Volodymyr Smirnov Date: Thu, 22 Oct 2020 09:28:28 +0300 Subject: [PATCH] throw on non zero exit code from workers --- .../Backends/Abstracts/AbstractLocalProcessScanBackend.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs b/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs index 11e2f98..f46606b 100644 --- a/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs +++ b/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs @@ -21,6 +21,7 @@ namespace MalwareMultiScan.Backends.Backends.Abstracts protected virtual Regex MatchRegex { get; } protected virtual string BackendPath { get; } protected virtual bool ParseStdErr { get; } + protected virtual bool ThrowOnNonZeroExitCode { get; } = true; protected virtual string GetBackendArguments(string path) { @@ -55,12 +56,15 @@ namespace MalwareMultiScan.Backends.Backends.Abstracts process.WaitForExit(); _logger.LogInformation($"Process has exited with code {process.ExitCode}"); - + var standardOutput = await process.StandardOutput.ReadToEndAsync(); var standardError = await process.StandardError.ReadToEndAsync(); _logger.LogDebug($"Process standard output: {standardOutput}"); _logger.LogDebug($"Process standard error: {standardError}"); + + if (ThrowOnNonZeroExitCode && process.ExitCode != 0) + throw new ApplicationException($"Process has terminated with an exit code {process.ExitCode}"); return MatchRegex .Matches(ParseStdErr ? standardError : standardOutput)