chiark / gitweb /
Better usage messages (and no default query domain) for adnstest.
[adns.git] / src / query.c
index b02abda87fc02e201bd4659a79a48c994f6253a0..81fedb8af48c318c430d1d412c9976a22e50d872 100644 (file)
@@ -27,7 +27,6 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <errno.h>
-#include <string.h>
 
 #include <sys/time.h>
 
@@ -42,7 +41,7 @@ static adns_query query_alloc(adns_state ads, const typeinfo *typei,
   qu->answer= malloc(sizeof(*qu->answer));  if (!qu->answer) { free(qu); return 0; }
   
   qu->ads= ads;
-  qu->state= query_udp;
+  qu->state= query_tosend;
   qu->back= qu->next= qu->parent= 0;
   LIST_INIT(qu->children);
   LINK_INIT(qu->siblings);
@@ -100,7 +99,7 @@ static void query_submit(adns_state ads, adns_query qu,
   qu->query_dglen= qu->vb.used;
   memcpy(qu->query_dgram,qu->vb.buf,qu->vb.used);
   
-  adns__query_udp(qu,now);
+  adns__query_send(qu,now);
   adns__autosys(ads,now);
 }
 
@@ -203,7 +202,7 @@ int adns_submit(adns_state ads,
   const char *p;
 
   typei= adns__findtype(type);
-  if (!typei) return adns_s_unknownrrtype;
+  if (!typei) return ENOSYS;
 
   r= gettimeofday(&now,0); if (r) goto x_errno;
   qu= query_alloc(ads,typei,flags,now); if (!qu) goto x_errno;
@@ -363,7 +362,7 @@ static void free_query_allocs(adns_query qu) {
 
 void adns_cancel(adns_query qu) {
   switch (qu->state) {
-  case query_udp: case query_tcpwait: case query_tcpsent:
+  case query_tosend: case query_tcpwait: case query_tcpsent:
     LIST_UNLINK(qu->ads->timew,qu);
     break;
   case query_child:
@@ -429,6 +428,8 @@ void adns__query_done(adns_query qu) {
   adns_answer *ans;
   adns_query parent;
 
+  cancel_children(qu);
+
   qu->id= -1;
   ans= qu->answer;
 
@@ -455,7 +456,7 @@ void adns__query_done(adns_query qu) {
   parent= qu->parent;
   if (parent) {
     LIST_UNLINK_PART(parent->children,qu,siblings.);
-    if (!parent->children.head) LIST_UNLINK(qu->ads->childw,parent);
+    LIST_UNLINK(qu->ads->childw,parent);
     qu->ctx.callback(parent,qu);
     free_query_allocs(qu);
     free(qu);