chiark / gitweb /
Sends packet, is apparently OK (tcpdump shows response is OK).
[adns.git] / src / adns-internal.h
index 8666614456e5cd0d8db594f4864a7c20e26dee9e..f47fc966c7f9677a9821c587098cdb527227c92c 100644 (file)
@@ -16,22 +16,33 @@ struct adns__query {
   adns_query next, back;
   adns_query parent, child;
   adns_rrtype type;
-  struct adns_answer *answer;
-  int flags, udpretries, server;
+  adns_answer *answer;
+  int id, flags, udpretries, nextserver;
+  unsigned long sentudp, senttcp; /* bitmaps indexed by server */
   struct timeval timeout;
   void *context;
+  unsigned char *querymsg;
+  int querylen;
   char owner[1];
+  /* Possible states:
+   *  Queue   child  id   answer    nextserver  sentudp             senttcp
+   *  tosend  null   >=0  null      any         any                 any
+   *  timew   null   >=0  null      any         at least 1 bit set  any
+   *  childw  set    >=0  partial   any         any                 any
+   *  output  null   -1   set/null  any         any                 any
+   */
 };
 
 struct adns__state {
   adns_initflags iflags;
-  struct { adns_query head, tail; } input, timew, childw, output;
-  int udpsocket;
+  struct { adns_query head, tail; } tosend, timew, childw, output;
+  int nextid, udpsocket;
   int qbufavail, tcpbufavail, tcpbufused, tcpbufdone;
-  char *qbuf, *tcpbuf;
+  unsigned char *qbuf, *tcpbuf;
   int nservers;
-  struct {
+  struct server {
     struct in_addr addr;
+    enum { server_disc, server_connecting, server_ok } state;
     int tcpsocket;
     struct timeval timeout;
     struct { adns_query head, tail; } connw;