From ac77ffc12405483a2b65ec2b27006426719113aa Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 13 Oct 1999 00:23:01 +0000 Subject: [PATCH] adns_rr_info on _r_mx etc. shows status type abbrev and status number. --- changelog | 4 ++- regress/case-abbrev.out | 6 ++-- regress/case-brokenmail.out | 24 +++++++-------- regress/case-owner.out | 2 +- regress/case-rootqueryall-as.out | 52 ++++++++++++++++---------------- regress/case-rootqueryall.out | 52 ++++++++++++++++---------------- src/adns.h | 5 ++- src/general.c | 40 +++++++++++++++++++++++- src/types.c | 8 ++++- 9 files changed, 121 insertions(+), 72 deletions(-) diff --git a/changelog b/changelog index 71d75b4..74ea490 100644 --- a/changelog +++ b/changelog @@ -5,13 +5,15 @@ adns (0.5) unstable; urgency=medium Thanks to Tony Finch for the program and the performance figure. * New internal consistency checking with assert if right options set. * New adns_wait_poll function like adns_wait but uses poll, not select. - * New adnshost utility - currently only a usage message :-). + * New adnshost utility - very alpha. + * New adns_errtypeabbrev function. Incompatible changes: * RRs with mailboxes never rejected due to strange chars if _raw. * Lack of a mailbox produces `.' not `<>'. * Better usage messages (and no default query domain) for adnstest. * Return EAGAIN from _check instead of EWOULDBLOCK. + * adns_rr_info on _r_mx etc. shows status type abbrev and status number. Bugfixes: * Do not invoke __autosys indirectly from __procdgram (result: coredump diff --git a/regress/case-abbrev.out b/regress/case-abbrev.out index aa96308..1f786ef 100644 --- a/regress/case-abbrev.out +++ b/regress/case-abbrev.out @@ -29,11 +29,11 @@ greenend.org.uk flags 0 type TXT(-) ownflags=a: nodata; nrrs=0; cname=$; owner=$ greenend.org.uk flags 0 type RP(raw) ownflags=a: nodata; nrrs=0; cname=$; owner=$; ttl=86400 greenend.org.uk flags 0 type A(addr) ownflags=a: nodata; nrrs=0; cname=$; owner=$; ttl=86400 greenend.org.uk flags 0 type NS(+addr) ownflags=a: ok; nrrs=2; cname=$; owner=$; ttl=86400 - ns0.relativity.greenend.org.uk ok "OK" ( INET 172.18.45.6 ) - ns1.relativity.greenend.org.uk ok "OK" ( INET 172.18.45.65 ) + ns0.relativity.greenend.org.uk ok 0 ok "OK" ( INET 172.18.45.6 ) + ns1.relativity.greenend.org.uk ok 0 ok "OK" ( INET 172.18.45.65 ) greenend.org.uk flags 0 type PTR(checked) ownflags=a: nodata; nrrs=0; cname=$; owner=$; ttl=86400 greenend.org.uk flags 0 type MX(+addr) ownflags=a: ok; nrrs=1; cname=$; owner=$; ttl=86400 - 10 chiark.greenend.org.uk ok "OK" ( INET 195.224.76.132 ) + 10 chiark.greenend.org.uk ok 0 ok "OK" ( INET 195.224.76.132 ) greenend.org.uk flags 0 type SOA(822) ownflags=a: ok; nrrs=1; cname=$; owner=$; ttl=86400 ns.chiark.greenend.org.uk hostmaster@greenend.org.uk 1999061300 28800 7200 604800 86400 greenend.org.uk flags 0 type RP(822) ownflags=a: nodata; nrrs=0; cname=$; owner=$; ttl=86400 diff --git a/regress/case-brokenmail.out b/regress/case-brokenmail.out index f2b7d19..14757ba 100644 --- a/regress/case-brokenmail.out +++ b/regress/case-brokenmail.out @@ -21,18 +21,18 @@ broken-mail.test.iwj.relativity.greenend.org.uk. flags 260 type MX(raw): OK; nrr 30 172.18.45.36 40 cname-ptr.test.iwj.relativity.greenend.org.uk broken-mail.test.iwj.relativity.greenend.org.uk. flags 0 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=30 - 10 manyaddrs.test.iwj.relativity.greenend.org.uk ok "OK" ( INET 127.0.0.1 INET 172.18.45.6 INET 172.18.45.1 INET 172.18.45.35 ) - 20 host.broken-delg.test.iwj.relativity.greenend.org.uk timeout "DNS query timed out" ? - 30 172.18.45.36 nxdomain "No such domain" ( ) - 40 cname-ptr.test.iwj.relativity.greenend.org.uk prohibitedcname "DNS alias found where canonical name wanted" ( ) + 10 manyaddrs.test.iwj.relativity.greenend.org.uk ok 0 ok "OK" ( INET 127.0.0.1 INET 172.18.45.6 INET 172.18.45.1 INET 172.18.45.35 ) + 20 host.broken-delg.test.iwj.relativity.greenend.org.uk remotefail 30 timeout "DNS query timed out" ? + 30 172.18.45.36 permfail 300 nxdomain "No such domain" ( ) + 40 cname-ptr.test.iwj.relativity.greenend.org.uk misconfig 101 prohibitedcname "DNS alias found where canonical name wanted" ( ) broken-mail.test.iwj.relativity.greenend.org.uk. flags 256 type MX(+addr): OK; nrrs=4; cname=$; owner=$; ttl=30 - 10 manyaddrs.test.iwj.relativity.greenend.org.uk ok "OK" ( INET 127.0.0.1 INET 172.18.45.6 INET 172.18.45.1 INET 172.18.45.35 ) - 20 host.broken-delg.test.iwj.relativity.greenend.org.uk timeout "DNS query timed out" ? - 30 172.18.45.36 nxdomain "No such domain" ( ) - 40 cname-ptr.test.iwj.relativity.greenend.org.uk ok "OK" ( INET 172.18.45.37 ) + 10 manyaddrs.test.iwj.relativity.greenend.org.uk ok 0 ok "OK" ( INET 127.0.0.1 INET 172.18.45.6 INET 172.18.45.1 INET 172.18.45.35 ) + 20 host.broken-delg.test.iwj.relativity.greenend.org.uk remotefail 30 timeout "DNS query timed out" ? + 30 172.18.45.36 permfail 300 nxdomain "No such domain" ( ) + 40 cname-ptr.test.iwj.relativity.greenend.org.uk ok 0 ok "OK" ( INET 172.18.45.37 ) broken-mail.test.iwj.relativity.greenend.org.uk. flags 260 type MX(+addr): OK; nrrs=4; cname=$; owner=broken-mail.test.iwj.relativity.greenend.org.uk; ttl=30 - 10 manyaddrs.test.iwj.relativity.greenend.org.uk ok "OK" ( INET 127.0.0.1 INET 172.18.45.6 INET 172.18.45.1 INET 172.18.45.35 ) - 20 host.broken-delg.test.iwj.relativity.greenend.org.uk timeout "DNS query timed out" ? - 30 172.18.45.36 nxdomain "No such domain" ( ) - 40 cname-ptr.test.iwj.relativity.greenend.org.uk ok "OK" ( INET 172.18.45.37 ) + 10 manyaddrs.test.iwj.relativity.greenend.org.uk ok 0 ok "OK" ( INET 127.0.0.1 INET 172.18.45.6 INET 172.18.45.1 INET 172.18.45.35 ) + 20 host.broken-delg.test.iwj.relativity.greenend.org.uk remotefail 30 timeout "DNS query timed out" ? + 30 172.18.45.36 permfail 300 nxdomain "No such domain" ( ) + 40 cname-ptr.test.iwj.relativity.greenend.org.uk ok 0 ok "OK" ( INET 172.18.45.37 ) rc=0 diff --git a/regress/case-owner.out b/regress/case-owner.out index 4ebf6ff..9cb3358 100644 --- a/regress/case-owner.out +++ b/regress/case-owner.out @@ -30,7 +30,7 @@ chiark.greenend.org.uk flags 4 type A(addr): OK; nrrs=1; cname=$; owner=chiark.g chiark.greenend.org.uk flags 4 type NS(+addr): No such data; nrrs=0; cname=$; owner=chiark.greenend.org.uk; ttl=86400 chiark.greenend.org.uk flags 4 type PTR(checked): No such data; nrrs=0; cname=$; owner=chiark.greenend.org.uk; ttl=86400 chiark.greenend.org.uk flags 4 type MX(+addr): OK; nrrs=1; cname=$; owner=chiark.greenend.org.uk; ttl=86400 - 5 permutation-city.greenend.org.uk ok "OK" ( INET 195.224.76.134 ) + 5 permutation-city.greenend.org.uk ok 0 ok "OK" ( INET 195.224.76.134 ) chiark.greenend.org.uk flags 4 type SOA(822): No such data; nrrs=0; cname=$; owner=chiark.greenend.org.uk; ttl=86400 chiark.greenend.org.uk flags 4 type RP(822): No such data; nrrs=0; cname=$; owner=chiark.greenend.org.uk; ttl=86400 rc=0 diff --git a/regress/case-rootqueryall-as.out b/regress/case-rootqueryall-as.out index d195c54..dcfbc8e 100644 --- a/regress/case-rootqueryall-as.out +++ b/regress/case-rootqueryall-as.out @@ -53,19 +53,19 @@ adns debug: using nameserver 172.18.45.6 . flags 0 type RP(raw): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 0 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 0 type NS(+addr): OK; nrrs=13; cname=$; owner=$; ttl=518399 - I.ROOT-SERVERS.NET ok "OK" ( INET 192.36.148.17 ) - F.ROOT-SERVERS.NET ok "OK" ( INET 192.5.5.241 ) - G.ROOT-SERVERS.NET ok "OK" ( INET 192.112.36.4 ) - J.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.10 ) - K.ROOT-SERVERS.NET ok "OK" ( INET 193.0.14.129 ) - L.ROOT-SERVERS.NET ok "OK" ( INET 198.32.64.12 ) - M.ROOT-SERVERS.NET ok "OK" ( INET 202.12.27.33 ) - A.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.4 ) - H.ROOT-SERVERS.NET ok "OK" ( INET 128.63.2.53 ) - B.ROOT-SERVERS.NET ok "OK" ( INET 128.9.0.107 ) - C.ROOT-SERVERS.NET ok "OK" ( INET 192.33.4.12 ) - D.ROOT-SERVERS.NET ok "OK" ( INET 128.8.10.90 ) - E.ROOT-SERVERS.NET ok "OK" ( INET 192.203.230.10 ) + I.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.36.148.17 ) + F.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.5.5.241 ) + G.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.112.36.4 ) + J.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.10 ) + K.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 193.0.14.129 ) + L.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.32.64.12 ) + M.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 202.12.27.33 ) + A.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.4 ) + H.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.63.2.53 ) + B.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.9.0.107 ) + C.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.33.4.12 ) + D.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.8.10.90 ) + E.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.203.230.10 ) . flags 0 type PTR(checked): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 0 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 0 type SOA(822): OK; nrrs=1; cname=$; owner=$; ttl=77975 @@ -95,19 +95,19 @@ adns debug: using nameserver 172.18.45.6 . flags 1 type RP(raw): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 1 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 1 type NS(+addr): OK; nrrs=13; cname=$; owner=$; ttl=518399 - G.ROOT-SERVERS.NET ok "OK" ( INET 192.112.36.4 ) - J.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.10 ) - K.ROOT-SERVERS.NET ok "OK" ( INET 193.0.14.129 ) - L.ROOT-SERVERS.NET ok "OK" ( INET 198.32.64.12 ) - M.ROOT-SERVERS.NET ok "OK" ( INET 202.12.27.33 ) - A.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.4 ) - H.ROOT-SERVERS.NET ok "OK" ( INET 128.63.2.53 ) - B.ROOT-SERVERS.NET ok "OK" ( INET 128.9.0.107 ) - C.ROOT-SERVERS.NET ok "OK" ( INET 192.33.4.12 ) - D.ROOT-SERVERS.NET ok "OK" ( INET 128.8.10.90 ) - E.ROOT-SERVERS.NET ok "OK" ( INET 192.203.230.10 ) - I.ROOT-SERVERS.NET ok "OK" ( INET 192.36.148.17 ) - F.ROOT-SERVERS.NET ok "OK" ( INET 192.5.5.241 ) + G.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.112.36.4 ) + J.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.10 ) + K.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 193.0.14.129 ) + L.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.32.64.12 ) + M.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 202.12.27.33 ) + A.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.4 ) + H.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.63.2.53 ) + B.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.9.0.107 ) + C.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.33.4.12 ) + D.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.8.10.90 ) + E.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.203.230.10 ) + I.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.36.148.17 ) + F.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.5.5.241 ) . flags 1 type PTR(checked): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 1 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 1 type SOA(822): OK; nrrs=1; cname=$; owner=$; ttl=70372 diff --git a/regress/case-rootqueryall.out b/regress/case-rootqueryall.out index fea6831..fed0a88 100644 --- a/regress/case-rootqueryall.out +++ b/regress/case-rootqueryall.out @@ -58,19 +58,19 @@ adns debug: reply not found, id 312e, query owner (NS=172.18.45.6) . flags 0 type RP(raw): No such data; nrrs=0; cname=$; owner=$; ttl=86400 . flags 0 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 0 type NS(+addr): OK; nrrs=13; cname=$; owner=$; ttl=305624 - I.ROOT-SERVERS.NET ok "OK" ( INET 192.36.148.17 ) - F.ROOT-SERVERS.NET ok "OK" ( INET 192.5.5.241 ) - G.ROOT-SERVERS.NET ok "OK" ( INET 192.112.36.4 ) - J.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.10 ) - K.ROOT-SERVERS.NET ok "OK" ( INET 193.0.14.129 ) - L.ROOT-SERVERS.NET ok "OK" ( INET 198.32.64.12 ) - M.ROOT-SERVERS.NET ok "OK" ( INET 202.12.27.33 ) - A.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.4 ) - H.ROOT-SERVERS.NET ok "OK" ( INET 128.63.2.53 ) - B.ROOT-SERVERS.NET ok "OK" ( INET 128.9.0.107 ) - C.ROOT-SERVERS.NET ok "OK" ( INET 192.33.4.12 ) - D.ROOT-SERVERS.NET ok "OK" ( INET 128.8.10.90 ) - E.ROOT-SERVERS.NET ok "OK" ( INET 192.203.230.10 ) + I.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.36.148.17 ) + F.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.5.5.241 ) + G.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.112.36.4 ) + J.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.10 ) + K.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 193.0.14.129 ) + L.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.32.64.12 ) + M.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 202.12.27.33 ) + A.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.4 ) + H.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.63.2.53 ) + B.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.9.0.107 ) + C.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.33.4.12 ) + D.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.8.10.90 ) + E.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.203.230.10 ) . flags 0 type PTR(checked): No such data; nrrs=0; cname=$; owner=$; ttl=599 . flags 0 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=86400 . flags 0 type SOA(822): OK; nrrs=1; cname=$; owner=$; ttl=51616 @@ -106,19 +106,19 @@ adns debug: reply not found, id 3139, query owner (NS=172.18.45.6) . flags 1 type RP(raw): No such data; nrrs=0; cname=$; owner=$; ttl=86399 . flags 1 type A(addr): No such data; nrrs=0; cname=$; owner=$; ttl=598 . flags 1 type NS(+addr): OK; nrrs=13; cname=$; owner=$; ttl=305623 - G.ROOT-SERVERS.NET ok "OK" ( INET 192.112.36.4 ) - J.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.10 ) - K.ROOT-SERVERS.NET ok "OK" ( INET 193.0.14.129 ) - L.ROOT-SERVERS.NET ok "OK" ( INET 198.32.64.12 ) - M.ROOT-SERVERS.NET ok "OK" ( INET 202.12.27.33 ) - A.ROOT-SERVERS.NET ok "OK" ( INET 198.41.0.4 ) - H.ROOT-SERVERS.NET ok "OK" ( INET 128.63.2.53 ) - B.ROOT-SERVERS.NET ok "OK" ( INET 128.9.0.107 ) - C.ROOT-SERVERS.NET ok "OK" ( INET 192.33.4.12 ) - D.ROOT-SERVERS.NET ok "OK" ( INET 128.8.10.90 ) - E.ROOT-SERVERS.NET ok "OK" ( INET 192.203.230.10 ) - I.ROOT-SERVERS.NET ok "OK" ( INET 192.36.148.17 ) - F.ROOT-SERVERS.NET ok "OK" ( INET 192.5.5.241 ) + G.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.112.36.4 ) + J.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.10 ) + K.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 193.0.14.129 ) + L.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.32.64.12 ) + M.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 202.12.27.33 ) + A.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 198.41.0.4 ) + H.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.63.2.53 ) + B.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.9.0.107 ) + C.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.33.4.12 ) + D.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 128.8.10.90 ) + E.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.203.230.10 ) + I.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.36.148.17 ) + F.ROOT-SERVERS.NET ok 0 ok "OK" ( INET 192.5.5.241 ) . flags 1 type PTR(checked): No such data; nrrs=0; cname=$; owner=$; ttl=598 . flags 1 type MX(+addr): No such data; nrrs=0; cname=$; owner=$; ttl=598 . flags 1 type SOA(822): OK; nrrs=1; cname=$; owner=$; ttl=46580 diff --git a/src/adns.h b/src/adns.h index fa9b6ca..cb2d671 100644 --- a/src/adns.h +++ b/src/adns.h @@ -798,9 +798,12 @@ adns_status adns_rr_info(adns_rrtype type, const char *adns_strerror(adns_status st); const char *adns_errabbrev(adns_status st); +const char *adns_errtypeabbrev(adns_status st); /* Like strerror but for adns_status values. adns_errabbrev returns * the abbreviation of the error - eg, for adns_s_timeout it returns - * "timeout". You MUST NOT call these functions with status values + * "timeout". adns_errtypeabbrev returns the abbreviation of the + * error class: ie, for values up to adns_s_max_XXX it will return the + * string XXX. You MUST NOT call these functions with status values * not returned by the same adns library. */ diff --git a/src/general.c b/src/general.c index 5ebdd6a..ae7cac0 100644 --- a/src/general.c +++ b/src/general.c @@ -204,6 +204,7 @@ adns_status adns_rr_info(adns_rrtype type, return st; } + #define SINFO(n,s) { adns_s_##n, #n, s } static const struct sinfo { @@ -240,7 +241,7 @@ static const struct sinfo { SINFO( querydomaintoolong, "Domain name is too long" ), SINFO( nxdomain, "No such domain" ), - SINFO( nodata, "No such data" ), + SINFO( nodata, "No such data" ) }; static int si_compar(const void *key, const void *elem) { @@ -268,6 +269,43 @@ const char *adns_errabbrev(adns_status st) { return si->abbrev; } + +#define STINFO(max) { adns_s_max_##max, #max } + +static const struct stinfo { + adns_status stmax; + const char *abbrev; +} stinfos[]= { + { adns_s_ok, "ok" }, + STINFO( localfail ), + STINFO( remotefail ), + STINFO( tempfail ), + STINFO( misconfig ), + STINFO( misquery ), + STINFO( permfail ) +}; + +static int sti_compar(const void *key, const void *elem) { + const adns_status *st= key; + const struct stinfo *sti= elem; + + adns_status here, min, max; + + here= *st; + min= (sti==stinfos) ? 0 : sti[-1].stmax+1; + max= sti->stmax; + + return here < min ? -1 : here > max ? 1 : 0; +} + +const char *adns_errtypeabbrev(adns_status st) { + const struct stinfo *sti; + + sti= bsearch(&st,stinfos,sizeof(stinfos)/sizeof(*stinfos),sizeof(*stinfos),sti_compar); + return sti->abbrev; +} + + void adns__isort(void *array, int nobjs, int sz, void *tempbuf, int (*needswap)(void *context, const void *a, const void *b), void *context) { diff --git a/src/types.c b/src/types.c index 5cc2d15..668986f 100644 --- a/src/types.c +++ b/src/types.c @@ -552,14 +552,20 @@ static void mf_hostaddr(adns_query qu, void *datap) { static adns_status csp_hostaddr(vbuf *vb, const adns_rr_hostaddr *rrp) { const char *errstr; adns_status st; + char buf[20]; int i; st= csp_domain(vb,rrp->host); if (st) return st; CSP_ADDSTR(" "); - CSP_ADDSTR(adns_errabbrev(rrp->astatus)); + CSP_ADDSTR(adns_errtypeabbrev(rrp->astatus)); + + sprintf(buf," %d ",rrp->astatus); + CSP_ADDSTR(buf); + CSP_ADDSTR(adns_errabbrev(rrp->astatus)); CSP_ADDSTR(" "); + errstr= adns_strerror(rrp->astatus); st= csp_qstring(vb,errstr,strlen(errstr)); if (st) return st; -- 2.30.2