From 3a758681d857d46a032f64c7ccd3da3f90ebe70b Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Fri, 4 Oct 2024 10:36:39 +0200 Subject: [PATCH] spf: move top-level error handling into EvalContext::new() --- crates/kumo-spf/src/eval.rs | 10 ++++++---- crates/kumo-spf/src/lib.rs | 8 +------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/crates/kumo-spf/src/eval.rs b/crates/kumo-spf/src/eval.rs index 5e3d6972..0c7fea2f 100644 --- a/crates/kumo-spf/src/eval.rs +++ b/crates/kumo-spf/src/eval.rs @@ -15,11 +15,13 @@ pub struct EvalContext<'a> { } impl<'a> EvalContext<'a> { - pub fn new(sender: &'a str, domain: &'a str, client_ip: IpAddr) -> Result { + pub fn new(sender: &'a str, domain: &'a str, client_ip: IpAddr) -> Result { let Some((local_part, sender_domain)) = sender.split_once('@') else { - return Err(format!( - "invalid sender {sender} is missing @ sign to delimit local part and domain" - )); + return Err(SpfResult { + disposition: SpfDisposition::PermError, + context: + "input sender parameter '{sender}' is missing @ sign to delimit local part and domain".to_owned(), + }); }; Ok(Self { diff --git a/crates/kumo-spf/src/lib.rs b/crates/kumo-spf/src/lib.rs index 03e3956e..ed020350 100644 --- a/crates/kumo-spf/src/lib.rs +++ b/crates/kumo-spf/src/lib.rs @@ -106,13 +106,7 @@ impl CheckHostParams { match EvalContext::new(&self.sender, &self.domain, self.client_ip) { Ok(cx) => record.evaluate(&cx, resolver).await, - Err(err) => SpfResult { - disposition: SpfDisposition::PermError, - context: format!( - "input sender parameter '{}' is malformed: {err}", - self.sender - ), - }, + Err(err) => err, } } }