X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftypes.c;h=7e671fc9a98e779d5ae29fd4d9356dd0297b032c;hb=958ad1f072aa889debf6bdde8f042678f5335952;hp=042675afe949b70b69f928a48dad558f1bb000f0;hpb=71a6ff46a019b9f9fdeefac45037ac6d68571d01;p=adns.git diff --git a/src/types.c b/src/types.c index 042675a..7e671fc 100644 --- a/src/types.c +++ b/src/types.c @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -30,7 +31,7 @@ #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: @@ -53,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) @@ -790,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; @@ -846,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) */