diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-10-20 09:48:38 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-10-20 09:53:56 +0300 |
commit | 04a44fafaa2baf0be206a457febca5540b7e3f4a (patch) | |
tree | f3356546d95a6591fbb961e5febf67cc9d5f6351 /src | |
parent | 1307a40117e0c4d4d96b7720537dc30a217af681 (diff) | |
download | mailfromd-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.bi | 8 | ||||
-rw-r--r-- | src/builtin/spf.bi | 2 | ||||
-rw-r--r-- | src/spf.c | 36 | ||||
-rw-r--r-- | src/spf.h | 1 |
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); } >]) @@ -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"); @@ -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 */ |