chiark / gitweb /
+ * TCP handling revamped (avoids recursive-invocation problems).
[adns.git] / src / query.c
index c092a30c25a79a94837510691e5c5a8747767b46..f805c9296565fe8b10920c15d144e31cd34457a9 100644 (file)
@@ -68,9 +68,9 @@ static adns_query query_alloc(adns_state ads, const typeinfo *typei,
 
   qu->id= 0;
   qu->flags= flags;
-  qu->udpretries= 0;
+  qu->retries= 0;
   qu->udpnextserver= 0;
-  qu->udpsent= qu->tcpfailed= 0;
+  qu->udpsent= 0;
   timerclear(&qu->timeout);
   qu->expires= now.tv_sec + MAXTTLBELIEVE;
 
@@ -225,6 +225,7 @@ int adns_submit(adns_state ads,
                                 
   if (ol>=1 && owner[ol-1]=='.' && (ol<2 || owner[ol-2]!='\\')) {
     flags &= ~adns_qf_search;
+    qu->flags= flags;
     ol--;
   }
 
@@ -398,10 +399,13 @@ void adns_cancel(adns_query qu) {
   adns__consistency(ads,qu,cc_entex);
   if (qu->parent) LIST_UNLINK_PART(qu->parent->children,qu,siblings.);
   switch (qu->state) {
-  case query_tosend: case query_tcpwait: case query_tcpsent:
-    LIST_UNLINK(ads->timew,qu);
+  case query_tosend:
+    LIST_UNLINK(ads->udpw,qu);
     break;
-  case query_child:
+  case query_tcpw:
+    LIST_UNLINK(ads->tcpw,qu);
+    break;
+  case query_childw:
     LIST_UNLINK(ads->childw,qu);
     break;
   case query_done: