X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsetup.c;h=83526251e1ab4c22b19a497eeb9fe133f42909bb;hb=59def40c472c794b57f97d744099b7d8faee99ca;hp=23a01d14f9503e1a3e0ad23a0a195d0db1851ea9;hpb=38b74824d7fe58823b870a3f5f0fdd236217dacd;p=adns.git diff --git a/src/setup.c b/src/setup.c index 23a01d1..8352625 100644 --- a/src/setup.c +++ b/src/setup.c @@ -4,7 +4,12 @@ * - management of global state */ /* - * This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson + * This file is + * Copyright (C) 1997-1999 Ian Jackson + * + * It is part of adns, which is + * Copyright (C) 1997-1999 Ian Jackson + * Copyright (C) 1999 Tony Finch * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +28,6 @@ #include #include -#include #include #include #include @@ -227,6 +231,21 @@ static void ccf_options(adns_state ads, const char *fn, int lno, const char *buf ads->searchndots= v; continue; } + if (l>=12 && !memcmp(word,"adns_checkc:",12)) { + if (!strcmp(word+12,"none")) { + ads->iflags &= ~adns_if_checkc_freq; + ads->iflags |= adns_if_checkc_entex; + } else if (!strcmp(word+12,"entex")) { + ads->iflags &= ~adns_if_checkc_freq; + ads->iflags |= adns_if_checkc_entex; + } else if (!strcmp(word+12,"freq")) { + ads->iflags |= adns_if_checkc_freq; + } else { + configparseerr(ads,fn,lno, "option adns_checkc has bad value `%s' " + "(must be none, entex or freq", word+12); + } + continue; + } adns__diag(ads,-1,0,"%s:%d: unknown option `%.*s'", fn,lno, l,word); } } @@ -450,6 +469,7 @@ static int init_begin(adns_state *ads_r, adns_initflags flags, FILE *diagfile) { ads->udpsocket= ads->tcpsocket= -1; adns__vbuf_init(&ads->tcpsend); adns__vbuf_init(&ads->tcprecv); + ads->tcprecv_skip= 0; ads->nservers= ads->nsortlist= ads->nsearchlist= ads->tcpserver= 0; ads->searchndots= 1; ads->tcpstate= server_disconnected; @@ -496,7 +516,7 @@ static void init_abort(adns_state ads) { free(ads); } -int adns_init(adns_state *ads_r, adns_initflags flags, FILE *diagfile) { +int adns_init(adns_state *ads_r, int flags, FILE *diagfile) { adns_state ads; const char *res_options, *adns_res_options; int r; @@ -531,11 +551,12 @@ int adns_init(adns_state *ads_r, adns_initflags flags, FILE *diagfile) { r= init_finish(ads); if (r) return r; + adns__consistency(ads,0,cc_entex); *ads_r= ads; return 0; } -int adns_init_strcfg(adns_state *ads_r, adns_initflags flags, +int adns_init_strcfg(adns_state *ads_r, int flags, FILE *diagfile, const char *configtext) { adns_state ads; int r; @@ -550,11 +571,14 @@ int adns_init_strcfg(adns_state *ads_r, adns_initflags flags, } r= init_finish(ads); if (r) return r; + adns__consistency(ads,0,cc_entex); *ads_r= ads; return 0; } + void adns_finish(adns_state ads) { + adns__consistency(ads,0,cc_entex); for (;;) { if (ads->timew.head) adns_cancel(ads->timew.head); else if (ads->childw.head) adns_cancel(ads->childw.head); @@ -569,6 +593,7 @@ void adns_finish(adns_state ads) { } void adns_forallqueries_begin(adns_state ads) { + adns__consistency(ads,0,cc_entex); ads->forallnext= ads->timew.head ? ads->timew.head : ads->childw.head ? ads->childw.head : @@ -578,6 +603,7 @@ void adns_forallqueries_begin(adns_state ads) { adns_query adns_forallqueries_next(adns_state ads, void **context_r) { adns_query qu, nqu; + adns__consistency(ads,0,cc_entex); nqu= ads->forallnext; for (;;) { qu= nqu;