diff --git a/src/job.rs b/src/job.rs index 8fe8bae26..23405ea41 100644 --- a/src/job.rs +++ b/src/job.rs @@ -205,17 +205,12 @@ impl Job { Status::RetryLater } _ => { - // if the connection was successfully used more than 60 - // seconds ago, try an immediate reconnect. - let mut res2 = Status::RetryLater; - if let Some(secs) = smtp.secs_since_last_success() { - if secs > 60 { - info!(context, "stale connection? triggering reconnect"); - res2 = Status::RetryNow; - } + if smtp.has_maybe_stale_connection() { + info!(context, "stale connection? immediately reconnecting"); + Status::RetryNow + } else { + Status::RetryLater } - - res2 } }; diff --git a/src/smtp/mod.rs b/src/smtp/mod.rs index 96c7daff6..39b999171 100644 --- a/src/smtp/mod.rs +++ b/src/smtp/mod.rs @@ -77,13 +77,13 @@ impl Smtp { self.last_success = None; } - /// Return number of seconds since last success or None if - /// no success-time is recorded in this session. - pub fn secs_since_last_success(&self) -> Option { + /// Return true if smtp was connected but is not known to + /// have been successfully used the last 60 seconds + pub fn has_maybe_stale_connection(&self) -> bool { if let Some(last_success) = self.last_success { - Some(Instant::now().duration_since(last_success).as_secs()) + Instant::now().duration_since(last_success).as_secs() > 60 } else { - None + false } }