From 02fe3d1b9937517206560d1c6a29679c312f4a52 Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Thu, 28 Nov 2019 16:33:48 +0100 Subject: [PATCH] Process PerformJobsNeeded::AvoidDos case explicitly --- src/job.rs | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/job.rs b/src/job.rs index 57f0115a2..8b83574c0 100644 --- a/src/job.rs +++ b/src/job.rs @@ -508,24 +508,27 @@ pub fn perform_smtp_idle(context: &Context) { let &(ref lock, ref cvar) = &*context.smtp_state.clone(); let mut state = lock.lock().unwrap(); - if state.perform_jobs_needed == PerformJobsNeeded::AtOnce { - info!( - context, - "SMTP-idle will not be started because of waiting jobs.", - ); - } else { - let dur = get_next_wakeup_time(context, Thread::Smtp); - - loop { - let res = cvar.wait_timeout(state, dur).unwrap(); - state = res.0; - - if state.idle || res.1.timed_out() { - // We received the notification and the value has been updated, we can leave. - break; - } + match state.perform_jobs_needed { + PerformJobsNeeded::AtOnce => { + info!( + context, + "SMTP-idle will not be started because of waiting jobs.", + ); + } + PerformJobsNeeded::Not | PerformJobsNeeded::AvoidDos => { + let dur = get_next_wakeup_time(context, Thread::Smtp); + + loop { + let res = cvar.wait_timeout(state, dur).unwrap(); + state = res.0; + + if state.idle || res.1.timed_out() { + // We received the notification and the value has been updated, we can leave. + break; + } + } + state.idle = false; } - state.idle = false; } }