chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/: Fix internals to carry around address families.
[adns]
/
src
/
query.c
diff --git
a/src/query.c
b/src/query.c
index a3ce68d8051aa7c821af959c0cbf9e19e53ad378..717cac0d3c7418b3e751c04d65b4dfba29de09f5 100644
(file)
--- a/
src/query.c
+++ b/
src/query.c
@@
-83,7
+83,7
@@
static adns_query query_alloc(adns_state ads,
qu->answer->expires= -1;
qu->answer->nrrs= 0;
qu->answer->rrs.untyped= 0;
qu->answer->expires= -1;
qu->answer->nrrs= 0;
qu->answer->rrs.untyped= 0;
- qu->answer->rrsz= typei->
rrsz
;
+ qu->answer->rrsz= typei->
getrrsz(typei,type)
;
return qu;
}
return qu;
}
@@
-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,
}
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;
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;
err= check_domain_name(ads, flags,ctx,typei, qumsg_vb->buf,qumsg_vb->used);
if (err) goto x_err;
- qu= query_alloc(ads,typei,type
i->typekey
,flags,now);
+ qu= query_alloc(ads,typei,type,flags,now);
if (!qu) { err = adns_s_nomemory; goto x_err; }
*query_r= qu;
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) {
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);
}
return adns_submit_reverse_any(ads,addr,"in-addr.arpa",
type,flags,context,query_r);
}
@@
-578,7
+580,7
@@
void adns__query_done(adns_query qu) {
}
if (ans->nrrs && qu->typei->diff_needswap) {
}
if (ans->nrrs && qu->typei->diff_needswap) {
- if (!adns__vbuf_ensure(&qu->vb,qu->
typei
->rrsz)) {
+ if (!adns__vbuf_ensure(&qu->vb,qu->
answer
->rrsz)) {
adns__query_fail(qu,adns_s_nomemory);
return;
}
adns__query_fail(qu,adns_s_nomemory);
return;
}
@@
-589,7
+591,8
@@
void adns__query_done(adns_query qu) {
qu->ads);
}
if (ans->nrrs && qu->typei->postsort) {
qu->ads);
}
if (ans->nrrs && qu->typei->postsort) {
- qu->typei->postsort(qu->ads, ans->rrs.bytes, ans->nrrs, qu->typei);
+ qu->typei->postsort(qu->ads, ans->rrs.bytes,
+ ans->nrrs,ans->rrsz, qu->typei);
}
ans->expires= qu->expires;
}
ans->expires= qu->expires;