DNS: explicit alloc/free of workspace
[exim.git] / src / src / spf.c
index 48f26f31593f1b627ce047a8762d33d075aaf3ac..2f55fb77cd63c9fc62eb250b1daec4f1aecc1809 100644 (file)
@@ -80,6 +80,7 @@ if (rr_type == T_SPF)
   HDEBUG(D_host_lookup) debug_printf("faking NO_DATA for SPF RR(99) lookup\n");
   srr.herrno = NO_DATA;
   SPF_dns_rr_dup(&spfrr, &srr);
+  store_free_dns_answer(dnsa);
   return spfrr;
   }
 
@@ -100,6 +101,7 @@ for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_ANSWERS); rr;
 if (found == 0)
   {
   SPF_dns_rr_dup(&spfrr, &srr);
+  store_free_dns_answer(dnsa);
   return spfrr;
   }
 
@@ -171,6 +173,7 @@ if (!(srr.num_rr = found))
 
 /* spfrr->rr must have been malloc()d for this */
 SPF_dns_rr_dup(&spfrr, &srr);
+store_free_dns_answer(dnsa);
 return spfrr;
 }
 
@@ -402,8 +405,12 @@ if (spf_result_guessed)
   g = string_cat(g, US" (best guess record for domain)");
 
 s = expand_string(US"$sender_address_domain");
+if (s && *s)
+  return string_append(g, 2, US" smtp.mailfrom=", s);
+
+s = sender_helo_name;
 return s && *s
-  ? string_append(g, 2, US" smtp.mailfrom=", s)
+  ? string_append(g, 2, US" smtp.helo=", s)
   : string_cat(g, US" smtp.mailfrom=<>");
 }