diff --git a/adns.c b/adns.c index f3ae4b3237383cb4149fc3e3ca7757e9555317e3..2159af34feaa09eaec894173088dfd475aa86be4 100644 --- a/adns.c +++ b/adns.c @@ -70,13 +70,41 @@ void oop_adns_delete(oop_adapter_adns *a) { } oop_adns_query *oop_adns_submit( - oop_adapter_adns *a, + oop_adapter_adns *a,int *errcode, const char *owner,adns_rrtype type,adns_queryflags flags, oop_adns_call *call,void *data) { oop_adns_query *q = oop_malloc(sizeof(*q)); + int err; if (NULL == q) return NULL; - if (adns_submit(a->state,owner,type,flags,q,&q->query)) { + + err = adns_submit(a->state,owner,type,flags,q,&q->query); + if (errcode) *errcode = err; + if (err) { + oop_free(q); + return NULL; + } + + q->a = a; + q->call = call; + q->data = data; + ++q->a->count; + set_select(a); + return q; +} + +oop_adns_query *oop_adns_submit_reverse( + oop_adapter_adns *a,int *errcode, + const struct sockaddr *addr,adns_rrtype type,adns_queryflags flags, + oop_adns_call *call,void *data) +{ + oop_adns_query *q = oop_malloc(sizeof(*q)); + int err; + if (NULL == q) return NULL; + + err = adns_submit_reverse(a->state,addr,type,flags,q,&q->query))); + if (errcode) *errcode = err; + if (err) { oop_free(q); return NULL; } diff --git a/oop-adns.h b/oop-adns.h index 030875b0774622a33fab4f6fc856d4b7dfb49804..5016a6d3e654c3e8dfd794a2f53b29fb9749a47e 100644 --- a/oop-adns.h +++ b/oop-adns.h @@ -26,10 +26,15 @@ void oop_adns_delete(oop_adapter_adns *); The returned pointer is valid until the callback occurs or the query is cancelled (see below). */ oop_adns_query *oop_adns_submit( - oop_adapter_adns *, + oop_adapter_adns *,int *errcode, const char *owner,adns_rrtype type,adns_queryflags flags, oop_adns_call *,void *); +oop_adns_query *oop_adns_submit_reverse( + oop_adapter_adns *,int *errcode, + const struct sockaddr *addr,adns_rrtype type,adns_queryflags flags, + oop_adns_call *,void *); + /* Cancel a running query. */ void oop_adns_cancel(oop_adns_query *); diff --git a/test-oop.c b/test-oop.c index c909a91d82cc47b5634dc71e23a5ec58b9df48a7..c1f5281fe3b4306aa2bbdb47d1ed3e0537982b56 100644 --- a/test-oop.c +++ b/test-oop.c @@ -251,7 +251,7 @@ static void *on_lookup(oop_adapter_adns *adns,adns_answer *reply,void *data) { static void get_name(int i,const char *name) { q[i] = oop_adns_submit( - adns,name,adns_r_a,adns_qf_owner, + adns,NULL,name,adns_r_a,adns_qf_owner, on_lookup,&q[i]); }