X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/blobdiff_plain/22181a31434b2439e41200ec65a95cb8605d41f5..e9e1b0e6b53d86c2bee91711d94e87a033176f9b:/src/query.c diff --git a/src/query.c b/src/query.c index 38bc3c2..2302c81 100644 --- a/src/query.c +++ b/src/query.c @@ -76,7 +76,7 @@ static adns_query query_alloc(adns_state ads, const typeinfo *typei, qu->answer->type= typei->type; qu->answer->expires= -1; qu->answer->nrrs= 0; - qu->answer->rrs= 0; + qu->answer->rrs.untyped= 0; qu->answer->rrsz= typei->rrsz; return qu; @@ -217,7 +217,10 @@ int adns_submit(adns_state ads, if (!ol) { stat= adns_s_querydomaininvalid; goto x_adnsfail; } if (ol>DNS_MAXDOMAIN+1) { stat= adns_s_querydomaintoolong; goto x_adnsfail; } - if (ol>=2 && owner[ol-1]=='.' && owner[ol-2]!='\\') { flags &= ~adns_qf_search; ol--; } + if (ol>=1 && owner[ol-1]=='.' && (ol<2 || owner[ol-2]!='\\')) { + flags &= ~adns_qf_search; + ol--; + } if (flags & adns_qf_search) { r= adns__vbuf_append(&qu->search_vb,owner,ol); @@ -331,7 +334,7 @@ void adns__reset_cnameonly(adns_query qu) { assert(!qu->final_allocspace); cancel_children(qu); qu->answer->nrrs= 0; - qu->answer->rrs= 0; + qu->answer->rrs.untyped= 0; qu->interim_allocd= qu->answer->cname ? MEM_ROUND(strlen(qu->answer->cname)+1) : 0; }