X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftypes.c;h=7e671fc9a98e779d5ae29fd4d9356dd0297b032c;hb=958ad1f072aa889debf6bdde8f042678f5335952;hp=e4e56f63859bd23e671dfb0e8d318bddc9d6eb8e;hpb=eaa4473118b245a9dc1d806309eb70d4b2c6eaa4;p=adns.git diff --git a/src/types.c b/src/types.c index e4e56f6..7e671fc 100644 --- a/src/types.c +++ b/src/types.c @@ -23,12 +23,15 @@ #include #include +#include +#include +#include #include #include "internal.h" #define R_NOMEM return adns_s_nomemory -#define CSP_ADDSTR(s) if (!adns__vbuf_appendstr(vb,(s))) R_NOMEM; else; +#define CSP_ADDSTR(s) do { if (!adns__vbuf_appendstr(vb,(s))) R_NOMEM; } while (0) /* * order of sections: @@ -51,7 +54,7 @@ * _strpair (mf,cs) * _intstrpair (mf,cs) * _hinfo (pa) - * _mailbox (pap) + * _mailbox (pap +pap_mailbox822) * _rp (pa) * _soa (pa,mf,cs) * _flat (mf) @@ -469,7 +472,7 @@ static adns_status pap_hostaddr(const parseinfo *pai, int *cbyte_io, if (!(pai->qu->flags & adns_qf_cname_loose)) nflags |= adns_qf_cname_forbid; st= adns__internal_submit(pai->ads, &nqu, adns__findtype(adns_r_addr), - &pai->qu->vb, id, nflags, pai->now, 0, &ctx); + &pai->qu->vb, id, nflags, pai->now, &ctx); if (st) return st; nqu->parent= pai->qu; @@ -712,7 +715,7 @@ static adns_status pa_ptr(const parseinfo *pai, int dmstart, int max, void *data memset(&ctx.info,0,sizeof(ctx.info)); st= adns__internal_submit(pai->ads, &nqu, adns__findtype(adns_r_addr), &pai->qu->vb, id, - adns_qf_quoteok_query, pai->now, 0, &ctx); + adns_qf_quoteok_query, pai->now, &ctx); if (st) return st; nqu->parent= pai->qu; @@ -788,8 +791,8 @@ static adns_status pa_hinfo(const parseinfo *pai, int cbyte, int max, void *data * _mailbox (pap) */ -static adns_status pap_mailbox(const parseinfo *pai, int *cbyte_io, int max, - char **mb_r) { +static adns_status pap_mailbox822(const parseinfo *pai, int *cbyte_io, int max, + char **mb_r) { int lablen, labstart, i, needquote, c, r, neednorm; const unsigned char *p; char *str; @@ -844,6 +847,16 @@ static adns_status pap_mailbox(const parseinfo *pai, int *cbyte_io, int max, return adns_s_ok; } +static adns_status pap_mailbox(const parseinfo *pai, int *cbyte_io, int max, + char **mb_r) { + if (pai->qu->typei->type & adns__qtf_mail822) { + return pap_mailbox822(pai, cbyte_io, max, mb_r); + } else { + return pap_domain(pai, cbyte_io, max, mb_r, + pai->qu->flags & adns_qf_quoteok_anshost ? pdf_quoteok : 0); + } +} + /* * _rp (pa) */