diff --git a/PrePostProcessor.cpp b/PrePostProcessor.cpp index fe84e92d..8cf01cc4 100644 --- a/PrePostProcessor.cpp +++ b/PrePostProcessor.cpp @@ -430,13 +430,18 @@ void PrePostProcessor::SanitisePostQueue() } } +bool PrePostProcessor::PostProcessEnabled() +{ + const char* szScript = g_pOptions->GetPostProcess(); + return szScript && strlen(szScript) > 0; +} + /** * Mutex "m_mutexQueue" must be locked prior to call of this function. */ void PrePostProcessor::StartScriptJob(DownloadQueue* pDownloadQueue, PostInfo* pPostInfo) { - const char* szScript = g_pOptions->GetPostProcess(); - if (!szScript || strlen(szScript) == 0) + if (!PostProcessEnabled()) { pPostInfo->SetStage(PostInfo::ptFinished); return; @@ -462,7 +467,7 @@ void PrePostProcessor::StartScriptJob(DownloadQueue* pDownloadQueue, PostInfo* p bool bHasFailedParJobs = false; #endif - ScriptController::StartScriptJob(pPostInfo, szScript, bNZBFileCompleted, bHasFailedParJobs); + ScriptController::StartScriptJob(pPostInfo, g_pOptions->GetPostProcess(), bNZBFileCompleted, bHasFailedParJobs); } /** @@ -655,7 +660,7 @@ bool PrePostProcessor::IsNZBFileCompleted(DownloadQueue* pDownloadQueue, const c */ void PrePostProcessor::StartParJob(PostInfo* pPostInfo) { - if (g_pOptions->GetParPauseQueue()) + if (g_pOptions->GetParPauseQueue() && !g_pOptions->GetPause()) { info("Pausing queue before par-check"); g_pOptions->SetPause(true); @@ -869,7 +874,7 @@ void PrePostProcessor::ParCheckerUpdate(Subject* Caller, void* Aspect) m_mutexQueue.Unlock(); - if (g_pOptions->GetParPauseQueue()) + if (g_pOptions->GetParPauseQueue() && !(g_pOptions->GetPostPauseQueue() && PostProcessEnabled())) { info("Unpausing queue after par-check"); g_pOptions->SetPause(false); diff --git a/PrePostProcessor.h b/PrePostProcessor.h index 94214032..86a01e57 100644 --- a/PrePostProcessor.h +++ b/PrePostProcessor.h @@ -95,6 +95,7 @@ private: void SavePostQueue(); void SanitisePostQueue(); void CheckDiskSpace(); + bool PostProcessEnabled(); Mutex m_mutexQueue; PostQueue m_PostQueue; diff --git a/ScriptController.cpp b/ScriptController.cpp index 5ef6f19d..99260d3a 100644 --- a/ScriptController.cpp +++ b/ScriptController.cpp @@ -54,15 +54,7 @@ extern Options* g_pOptions; void ScriptController::StartScriptJob(PostInfo* pPostInfo, const char* szScript, bool bNZBFileCompleted, bool bHasFailedParJobs) { - if (!Util::FileExists(szScript)) - { - error("Could not start post-process-script: could not find file %s", szScript); - pPostInfo->SetStage(PostInfo::ptFinished); - pPostInfo->SetWorking(false); - return; - } - - if (g_pOptions->GetPostPauseQueue()) + if (g_pOptions->GetPostPauseQueue() && !g_pOptions->GetPause()) { info("Pausing queue before post-process-script"); g_pOptions->SetPause(true); @@ -84,6 +76,13 @@ void ScriptController::StartScriptJob(PostInfo* pPostInfo, const char* szScript, void ScriptController::Run() { + if (!Util::FileExists(m_szScript)) + { + error("Could not start post-process-script: could not find file %s", m_szScript); + Finished(); + return; + } + char szParStatus[10]; snprintf(szParStatus, 10, "%i", m_pPostInfo->GetParStatus()); szParStatus[10-1] = '\0';