diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-10-20 13:23:47 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2017-10-20 14:35:20 +0300 |
commit | 5cf28509ada303e8995113af9390d10553c60bef (patch) | |
tree | 6ef3c94ee4bf7350f8a3d26331ae4d0c260ccf11 /src | |
parent | 04a44fafaa2baf0be206a457febca5540b7e3f4a (diff) | |
download | mailfromd-5cf28509ada303e8995113af9390d10553c60bef.tar.gz mailfromd-5cf28509ada303e8995113af9390d10553c60bef.tar.bz2 |
Rewrite base dns functions using adns.
* configure.ac: Require libadns.
* lib/dns.c: Rewrite.
* lib/dns.h (dns_resolve_ipstr, dns_resolve_hostname): Simplify
parameters.
(dns_reply): Remove max, last_len, and last_max.
Diffstat (limited to 'src')
-rw-r--r-- | src/builtin/dns.bi | 12 | ||||
-rw-r--r-- | src/spf.c | 26 |
2 files changed, 10 insertions, 28 deletions
diff --git a/src/builtin/dns.bi b/src/builtin/dns.bi index 137cccc8..c23aaf31 100644 --- a/src/builtin/dns.bi +++ b/src/builtin/dns.bi @@ -63,4 +63,4 @@ ipaddr_cmp(const void *a, const void *b) { - GACOPYZ_UINT32_T ipa = ntohl(**(GACOPYZ_UINT32_T**)a); - GACOPYZ_UINT32_T ipb = ntohl(**(GACOPYZ_UINT32_T**)b); + GACOPYZ_UINT32_T ipa = ntohl(*(GACOPYZ_UINT32_T*)a); + GACOPYZ_UINT32_T ipb = ntohl(*(GACOPYZ_UINT32_T*)b); if (ipa < ipb) @@ -82,3 +82,3 @@ MF_DEFUN(dns_getaddr, STRING, STRING string) MF_OBSTACK_BEGIN(); - qsort(r.base, r.count, sizeof r.base[0], ipaddr_cmp); + qsort(r.data.ip, r.count, sizeof r.data.ip[0], ipaddr_cmp); for (i = 0; i < r.count; i++) { @@ -87,3 +87,3 @@ MF_DEFUN(dns_getaddr, STRING, STRING string) - addr.s_addr = dns_reply_ip(&r, i); + addr.s_addr = r.data.ip[i]; q = inet_ntoa(addr); @@ -127,3 +127,3 @@ MF_DEFUN(dns_getname, STRING, STRING ipstr) - qsort(r.base, r.count, sizeof r.base[0], hostname_cmp); + qsort(r.data.str, r.count, sizeof r.data.str[0], hostname_cmp); @@ -133,3 +133,3 @@ MF_DEFUN(dns_getname, STRING, STRING ipstr) MF_OBSTACK_1GROW(' '); - MF_OBSTACK_GROW((char*)r.base[i]); + MF_OBSTACK_GROW((char*)r.data.str[i]); } @@ -643,3 +643,3 @@ mech_a(spf_data *dat, spf_term_arg *arg, unsigned long masklen) for (i = 0; i < r.count; i++) { - if (ntohl(dns_reply_ip(&r, i) & netmask) == addr.s_addr) { + if (ntohl(r.data.ip[i] & netmask) == addr.s_addr) { res = spf_term_match; @@ -809,3 +809,3 @@ mod_exp(spf_data *dat, spf_term_arg *arg, unsigned long masklen) for (i = 0; i < r.count; i++) { - mu_opool_appendz(dat->tmpool, r.base[i]); + mu_opool_appendz(dat->tmpool, r.data.str[i]); } @@ -1197,5 +1197,2 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno) { - char **txt_rec; - size_t txt_num; - int i; char *spf_rec = NULL; @@ -1226,3 +1223,3 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno) - switch (spf_lookup(q->domain, &txt_rec, &txt_num)) { + switch (spf_lookup(q->domain, &spf_rec)) { case dns_success: @@ -1239,17 +1236,2 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno) - /* Select SPF1 records */ - for (i = 0; txt_rec[i]; i++) { - if (memcmp(txt_rec[i], "v=spf1", 6) == 0 - && (txt_rec[i][6] == 0 || mu_isspace(txt_rec[i][6]))) { - mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE6, - ("record: %s", txt_rec[i])); - if (spf_rec) { - SPF_RETURN(spf_perm_error, - "too many SPF records published"); - } - spf_rec = txt_rec[i]; - break; - } - } - mu_debug(MF_SOURCE_SPF, MU_DEBUG_TRACE0, @@ -1263,3 +1245,3 @@ spf_check_host_internal(spf_query_t *q, spf_answer_t *a, size_t loopno) spf_data_free(&dat); - mu_argcv_free(txt_num, txt_rec); + free(spf_rec); |