chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanups, development.
[adns]
/
src
/
adns-internal.h
diff --git
a/src/adns-internal.h
b/src/adns-internal.h
index 8666614456e5cd0d8db594f4864a7c20e26dee9e..7caba2f6d9db024cbe701c3b279a6b522f4c32f7 100644
(file)
--- a/
src/adns-internal.h
+++ b/
src/adns-internal.h
@@
-8,33
+8,59
@@
#include "adns.h"
#define MAXSERVERS 5
#include "adns.h"
#define MAXSERVERS 5
-#define MAXUDPRETRIES 1
0
+#define MAXUDPRETRIES 1
5
#define UDPRETRYMS 2000
#define UDPRETRYMS 2000
-#define TCPMS 20000
+#define TCPMS 30000
+#define LOCALRESOURCEMS 20
+
+union adns__align {
+ adns_status status;
+ char *cp;
+ adns_rrtype type;
+ int int;
+ struct in_addr ia;
+ unsigned long ul;
+};
struct adns__query {
struct adns__query {
- adns_query next, back;
- adns_query parent, child;
+ adns_query back, next;
+ adns_query parent;
+ struct { adns_query head, tail; } children;
+ struct { adns_query back, next; } siblings;
adns_rrtype type;
adns_rrtype type;
- struct adns_answer *answer;
- int flags, udpretries, server;
+ adns_answer *answer;
+ size_t ansalloc; ansused;
+ int id, flags, udpretries; /* udpretries==-1 => _f_usevc or too big for UDP */
+ int nextudpserver;
+ unsigned long sentudp, senttcp; /* bitmaps indexed by server */
struct timeval timeout;
void *context;
struct timeval timeout;
void *context;
+ unsigned char *querymsg;
+ int querylen;
char owner[1];
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__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;
int qbufavail, tcpbufavail, tcpbufused, tcpbufdone;
- char *qbuf, *tcpbuf;
- int nservers;
- struct {
+ unsigned char *qbuf, *tcpbuf;
+ int nservers, tcpserver;
+ enum { server_disc, server_connecting, server_ok } tcpstate;
+ int tcpsocket;
+ struct timeval tcptimeout;
+ int opbufavail, opbufused;
+ unsigned char *opbuf;
+ struct server {
struct in_addr addr;
struct in_addr addr;
- int tcpsocket;
- struct timeval timeout;
- struct { adns_query head, tail; } connw;
} servers[MAXSERVERS];
};
} servers[MAXSERVERS];
};