X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fquery.c;h=541d8ac35d11fc40d69e6195bf41079b2962f5db;hb=7f5937118639156f1fb201c42298c00e1f54c3cc;hp=a3ce68d8051aa7c821af959c0cbf9e19e53ad378;hpb=e8e5aeacbdaf5654974626d548f30a4c86e5ced6;p=adns.git diff --git a/src/query.c b/src/query.c index a3ce68d..541d8ac 100644 --- a/src/query.c +++ b/src/query.c @@ -148,8 +148,8 @@ static adns_status check_domain_name(adns_state ads, adns_queryflags flags, } adns_status adns__internal_submit(adns_state ads, adns_query *query_r, - const typeinfo *typei, vbuf *qumsg_vb, - int id, + const typeinfo *typei, adns_rrtype type, + vbuf *qumsg_vb, int id, adns_queryflags flags, struct timeval now, qcontext *ctx) { adns_query qu; @@ -157,7 +157,7 @@ adns_status adns__internal_submit(adns_state ads, adns_query *query_r, err= check_domain_name(ads, flags,ctx,typei, qumsg_vb->buf,qumsg_vb->used); if (err) goto x_err; - qu= query_alloc(ads,typei,typei->typekey,flags,now); + qu= query_alloc(ads,typei,type,flags,now); if (!qu) { err = adns_s_nomemory; goto x_err; } *query_r= qu; @@ -364,7 +364,9 @@ int adns_submit_reverse(adns_state ads, adns_queryflags flags, void *context, adns_query *query_r) { - if (type != adns_r_ptr && type != adns_r_ptr_raw) return EINVAL; + if (((type^adns_r_ptr) & adns_rrt_reprmask) && + ((type^adns_r_ptr_raw) & adns_rrt_reprmask)) + return EINVAL; return adns_submit_reverse_any(ads,addr,"in-addr.arpa", type,flags,context,query_r); }