chiark
/
gitweb
/
~ianmdlvl
/
adns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
.gitignore: add addrtext_s, remove non-built dynamic local tests
[adns.git]
/
src
/
check.c
diff --git
a/src/check.c
b/src/check.c
index 41cdde5ff3592d09f86d3e0bd4b9d8abcc114896..21dca706300fdd714eb94d3a9c8ec77a60ef8136 100644
(file)
--- a/
src/check.c
+++ b/
src/check.c
@@
-75,12
+75,15
@@
static void checkc_notcpbuf(adns_state ads) {
}
static void checkc_global(adns_state ads) {
}
static void checkc_global(adns_state ads) {
+ const struct sortlist *sl;
int i;
assert(ads->udpsocket >= 0);
int i;
assert(ads->udpsocket >= 0);
- for (i=0; i<ads->nsortlist; i++)
- assert(!(ads->sortlist[i].base.s_addr & ~ads->sortlist[i].mask.s_addr));
+ for (i=0; i<ads->nsortlist; i++) {
+ sl= &ads->sortlist[i];
+ assert(adns__addr_match_p(sl->af,&sl->base, sl->af,&sl->base,&sl->mask));
+ }
assert(ads->tcpserver >= 0 && ads->tcpserver < ads->nservers);
assert(ads->tcpserver >= 0 && ads->tcpserver < ads->nservers);
@@
-145,15
+148,29
@@
static void checkc_queue_childw(adns_state ads) {
});
}
});
}
+static void checkc_query_done(adns_state ads, adns_query qu) {
+ assert(qu->state == query_done);
+ assert(!qu->children.head && !qu->children.tail);
+ checkc_query(ads,qu);
+}
+
static void checkc_queue_output(adns_state ads) {
adns_query qu;
DLIST_CHECK(ads->output, qu, , {
static void checkc_queue_output(adns_state ads) {
adns_query qu;
DLIST_CHECK(ads->output, qu, , {
- assert(qu->state == query_done);
- assert(!qu->children.head && !qu->children.tail);
assert(!qu->parent);
assert(!qu->allocations.head && !qu->allocations.tail);
assert(!qu->parent);
assert(!qu->allocations.head && !qu->allocations.tail);
- checkc_query(ads,qu);
+ checkc_query_done(ads,qu);
+ });
+}
+
+static void checkc_queue_intdone(adns_state ads) {
+ adns_query qu;
+
+ DLIST_CHECK(ads->intdone, qu, , {
+ assert(qu->parent);
+ assert(qu->ctx.callback);
+ checkc_query_done(ads,qu);
});
}
});
}
@@
-165,6
+182,7
@@
void adns__consistency(adns_state ads, adns_query qu, consistency_checks cc) {
break;
case cc_entex:
if (!(ads->iflags & adns_if_checkc_entex)) return;
break;
case cc_entex:
if (!(ads->iflags & adns_if_checkc_entex)) return;
+ assert(!ads->intdone.head);
break;
case cc_freq:
if ((ads->iflags & adns_if_checkc_freq) != adns_if_checkc_freq) return;
break;
case cc_freq:
if ((ads->iflags & adns_if_checkc_freq) != adns_if_checkc_freq) return;
@@
-178,6
+196,7
@@
void adns__consistency(adns_state ads, adns_query qu, consistency_checks cc) {
checkc_queue_tcpw(ads);
checkc_queue_childw(ads);
checkc_queue_output(ads);
checkc_queue_tcpw(ads);
checkc_queue_childw(ads);
checkc_queue_output(ads);
+ checkc_queue_intdone(ads);
if (qu) {
switch (qu->state) {
if (qu) {
switch (qu->state) {
@@
-191,7
+210,10
@@
void adns__consistency(adns_state ads, adns_query qu, consistency_checks cc) {
DLIST_ASSERTON(qu, search, ads->childw, );
break;
case query_done:
DLIST_ASSERTON(qu, search, ads->childw, );
break;
case query_done:
- DLIST_ASSERTON(qu, search, ads->output, );
+ if (qu->parent)
+ DLIST_ASSERTON(qu, search, ads->intdone, );
+ else
+ DLIST_ASSERTON(qu, search, ads->output, );
break;
default:
assert(!"specific query state");
break;
default:
assert(!"specific query state");