aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2017-10-20 09:48:38 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2017-10-20 09:53:56 +0300
commit04a44fafaa2baf0be206a457febca5540b7e3f4a (patch)
treef3356546d95a6591fbb961e5febf67cc9d5f6351 /src
parent1307a40117e0c4d4d96b7720537dc30a217af681 (diff)
downloadmailfromd-04a44fafaa2baf0be206a457febca5540b7e3f4a.tar.gz
mailfromd-04a44fafaa2baf0be206a457febca5540b7e3f4a.tar.bz2
Drop ttl tracking from DNS API; drop SPF caching
* lib/dns.c: Remove ttl tracking. * lib/dns.h: Fix prototypes. * mflib/spf.mf: Remove caching. * src/builtin/spf.bi (spf_ttl): Remove variable. * src/builtin/dns.bi: Update calls to DNS API. * src/spf.c: Likewise. * src/spf.h (spf_answer_t): Remove ttl.
Diffstat (limited to 'src')
-rw-r--r--src/builtin/dns.bi8
-rw-r--r--src/builtin/spf.bi2
-rw-r--r--src/spf.c36
-rw-r--r--src/spf.h1
4 files changed, 10 insertions, 37 deletions
diff --git a/src/builtin/dns.bi b/src/builtin/dns.bi
index faf8998d..137cccc8 100644
--- a/src/builtin/dns.bi
+++ b/src/builtin/dns.bi
@@ -73,11 +73,10 @@ ipaddr_cmp(const void *a, const void *b)
MF_DEFUN(dns_getaddr, STRING, STRING string)
{
size_t i;
- unsigned long ttl;
dns_status dnstat;
struct dns_reply r;
- dnstat = a_lookup(string, &r, &ttl);
+ dnstat = a_lookup(string, &r);
switch (dnstat) {
case dns_success: {
MF_OBSTACK_BEGIN();
@@ -115,14 +114,13 @@ MF_DEFUN(dns_getname, STRING, STRING ipstr)
{
dns_status dnstat;
struct in_addr addr;
- unsigned long ttl;
struct dns_reply r;
MF_ASSERT(inet_aton(ipstr, &addr),
mfe_invip,
_("invalid IP: %s"), ipstr);
- dnstat = ptr_lookup(addr, &r, &ttl);
+ dnstat = ptr_lookup(addr, &r);
switch (dnstat) {
case dns_success: {
size_t i;
@@ -297,7 +295,7 @@ END
MF_DEFUN(ptr_validate, NUMBER, STRING s)
{
int rc, res;
- switch (rc = ptr_validate(s, NULL, NULL, NULL)) {
+ switch (rc = ptr_validate(s, NULL, NULL)) {
case dns_success:
res = 1;
break;
diff --git a/src/builtin/spf.bi b/src/builtin/spf.bi
index f85ff2ff..c473ac75 100644
--- a/src/builtin/spf.bi
+++ b/src/builtin/spf.bi
@@ -18,7 +18,6 @@
MF_VAR(spf_explanation, STRING);
MF_VAR(spf_mechanism, STRING);
-MF_VAR(spf_ttl, NUMBER);
MF_VAR(spf_explanation_prefix, STRING);
MF_DSEXP_SUPPRESS([<update_spf_vars>],[<
@@ -38,7 +37,6 @@ update_spf_vars(eval_environ_t env, spf_answer_t *ans)
}
MF_OBSTACK_1GROW(0);
MF_VAR_REF(spf_mechanism, size, mf_c_val(MF_OBSTACK_FINISH, size));
- MF_VAR_REF(spf_ttl, ulong, ans->ttl);
}
>])
diff --git a/src/spf.c b/src/spf.c
index 9e8c1bfe..edec1d45 100644
--- a/src/spf.c
+++ b/src/spf.c
@@ -42,13 +42,6 @@ typedef struct spf_data {
spf_answer_t *answer;
} spf_data;
-#define UPDATE_ANSWER_TTL(dat, ttl) \
- do { \
- if ((dat)->answer) { \
- UPDATE_TTL((dat)->answer->ttl, ttl); \
- } \
- } while (0)
-
static char *spf_result_str[] = {
"None",
"Neutral",
@@ -343,15 +336,11 @@ spf_expand_do(struct spf_data *dat, int allow_exp, const char **pptr)
char *name = NULL;
char **vnames;
size_t vcount;
- unsigned long ttl;
dns_status status = ptr_validate(dat->q.ipstr,
- &vnames, &vcount,
- &ttl);
+ &vnames, &vcount);
if (status != dns_success)
return spf_transform(dat, "unknown", 0, pptr);
- UPDATE_ANSWER_TTL(dat, ttl);
-
for (i = 0; i < vcount; i++)
if (strcasecmp(vnames[i], dat->q.domain) == 0) {
name = vnames[i];
@@ -632,7 +621,6 @@ mech_a(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
struct in_addr addr;
struct dns_reply r;
size_t i;
- unsigned long ttl;
spf_term_result res;
if (arg)
@@ -645,8 +633,7 @@ mech_a(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE1,
("A domain_spec=%s, netmask=%lx", domain_spec, netmask));
- DNS_CATCH(a_lookup(domain_spec, &r, &ttl));
- UPDATE_ANSWER_TTL(dat, ttl);
+ DNS_CATCH(a_lookup(domain_spec, &r));
addr.s_addr = dat->ipaddr.s_addr & netmask;
mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE6,
@@ -676,7 +663,6 @@ mech_mx(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
size_t i;
spf_term_result result = spf_term_nomatch;
const char *domain_spec;
- unsigned long ttl;
if (arg)
domain_spec = arg->v.domain_spec;
@@ -687,8 +673,7 @@ mech_mx(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
("MX domain_spec=%s, netmask=%lx",
domain_spec, netmask));
- DNS_CATCH(dns_get_mx_records(domain_spec, 1, &mxbuf, &ttl));
- UPDATE_ANSWER_TTL(dat, ttl);
+ DNS_CATCH(dns_get_mx_records(domain_spec, 1, &mxbuf));
for (i = 0; i < mxbuf.mx_cnt; i++) {
spf_term_arg targ;
@@ -718,15 +703,13 @@ mech_ptr(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
size_t i;
const char *domain_spec;
spf_term_result result = spf_term_nomatch;
- unsigned long ttl;
if (arg)
domain_spec = arg->v.domain_spec;
else
domain_spec = dat->q.domain;
- DNS_CATCH(ptr_validate(dat->q.ipstr, &vnames, &vcount, &ttl));
- UPDATE_ANSWER_TTL(dat, ttl);
+ DNS_CATCH(ptr_validate(dat->q.ipstr, &vnames, &vcount));
for (i = 0; i < vcount; i++)
if (domain_match(vnames[i], domain_spec)) {
@@ -778,7 +761,6 @@ mech_ip6(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
static spf_term_result
mech_exists(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
{
- unsigned long ttl;
struct dns_reply r;
if (!arg) {
mu_debug(MF_SOURCE_SPF, MU_DEBUG_ERROR,
@@ -789,9 +771,8 @@ mech_exists(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE1,
("EXISTS domain_spec=%s", arg->v.domain_spec));
- DNS_CATCH(a_lookup(arg->v.domain_spec, &r, &ttl));
+ DNS_CATCH(a_lookup(arg->v.domain_spec, &r));
dns_reply_free(&r);
- UPDATE_ANSWER_TTL(dat, ttl);
return spf_term_match;
}
@@ -821,7 +802,7 @@ mod_exp(spf_data *dat, spf_term_arg *arg, unsigned long masklen)
struct dns_reply r;
if (arg->v.domain_spec
- && txt_lookup(arg->v.domain_spec, &r, NULL) == dns_success) {
+ && txt_lookup(arg->v.domain_spec, &r) == dns_success) {
int i;
char *text;
@@ -1227,7 +1208,6 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno)
spf_result_str[res], \
text)); \
return res; }
- unsigned long ttl;
mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE0,
("check_host(%s, %s, %s)",
@@ -1244,7 +1224,7 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno)
if (strlen(q->domain) > 63)
SPF_RETURN(spf_none, "domain too long");
- switch (spf_lookup(q->domain, &txt_rec, &txt_num, &ttl)) {
+ switch (spf_lookup(q->domain, &txt_rec, &txt_num)) {
case dns_success:
break;
@@ -1275,8 +1255,6 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno)
mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE0,
("SPF record: %s", spf_rec));
- if (a)
- UPDATE_TTL(a->ttl, ttl);
if (spf_data_init(&dat, q, a, loopno + 1))
SPF_RETURN(spf_perm_error, "spf_data_init failed");
diff --git a/src/spf.h b/src/spf.h
index 229075e6..4485dd8e 100644
--- a/src/spf.h
+++ b/src/spf.h
@@ -38,7 +38,6 @@ typedef struct {
} spf_query_t;
typedef struct {
- unsigned long ttl; /* Minimal ttl */
char *exp_text; /* Explanation text */
char **mechv; /* SPF mechanisms that decided about the result */
size_t mechn; /* Number of elements used in mechv */

Return to:

Send suggestions and report system problems to the System administrator.