spf: move top-level error handling into EvalContext::new()

This commit is contained in:
Dirkjan Ochtman
2024-10-12 08:00:15 -07:00
committed by Wez Furlong
parent 871986cb5e
commit 3a758681d8
2 changed files with 7 additions and 11 deletions
+6 -4
View File
@@ -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<Self, String> {
pub fn new(sender: &'a str, domain: &'a str, client_ip: IpAddr) -> Result<Self, SpfResult> {
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 {
+1 -7
View File
@@ -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,
}
}
}