From: ian Date: Sat, 16 Sep 2000 20:49:38 +0000 (+0000) Subject: + * Fix adnsresfilter usage message to include correct default timeout. X-Git-Tag: rel-adns-pre-1-0--1~15 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=commitdiff_plain;h=98e3fa813e15297eaa1c9858aa962d08d52c92cd + * Fix adnsresfilter usage message to include correct default timeout. @@ -3,9 +3,11 @@ Bugfixes: * Fix incorrect `compressed datagram contains loop' error. * Actually compile shared libraries by default ! + * Fix adnsresfilter usage message to include correct default timeout. General Improvements: - * adnshost and adnslogres have options for overriding configuration. + * adnshost, adnslogres, adnsresfilter have options for config override. + * adnsresfilter has --debug option. * Improvements to adnslogres (incl. new -c option) from Tony Finch. * Regression tests now include `adnshost' invocations. * Test cancellation both before and after query completion. --- diff --git a/changelog b/changelog index 5e0ec11..342cdc1 100644 --- a/changelog +++ b/changelog @@ -3,9 +3,11 @@ adns (0.10) unstable; urgency=low Bugfixes: * Fix incorrect `compressed datagram contains loop' error. * Actually compile shared libraries by default ! + * Fix adnsresfilter usage message to include correct default timeout. General Improvements: - * adnshost and adnslogres have options for overriding configuration. + * adnshost, adnslogres, adnsresfilter have options for config override. + * adnsresfilter has --debug option. * Improvements to adnslogres (incl. new -c option) from Tony Finch. * Regression tests now include `adnshost' invocations. * Test cancellation both before and after query completion. diff --git a/client/adnsresfilter.c b/client/adnsresfilter.c index bba1b1c..02d0f4c 100644 --- a/client/adnsresfilter.c +++ b/client/adnsresfilter.c @@ -42,6 +42,10 @@ #include "dlist.h" #include "tvarith.h" +#ifdef ADNS_REGRESS_TEST +# include "hredirect.h" +#endif + struct outqueuenode { struct outqueuenode *next, *back; void *buffer; @@ -54,6 +58,8 @@ struct outqueuenode { static int bracket, forever, address; static unsigned long timeout= 1000; static adns_rrtype rrt= adns_r_ptr; +static adns_initflags initflags= 0; +static const char *config_text; static int outblocked, inputeof; static struct { struct outqueuenode *head, *tail; } outqueue; @@ -116,8 +122,10 @@ static void usage(void) { " -b|--brackets (require [...] around IP addresses)\n" " -a|--address (always include [address] in output)\n" " -u|--unchecked (do not forward map for checking)\n" + " --config (use this instead of resolv.conf)\n" + " --debug (turn on adns resolver debugging)\n" "Timeout is the maximum amount to delay any particular bit of output for.\n" - "Lookups will go on in the background. Default timeout = 100 (ms).\n") + "Lookups will go on in the background. Default timeout = 1000 (ms).\n") == EOF) outputerr(); } @@ -147,48 +155,53 @@ static void parseargs(const char *const *argv) { while ((arg= *++argv)) { if (arg[0] != '-') usageerr("no non-option arguments are allowed"); if (arg[1] == '-') { - if (!strcmp(arg,"--brackets")) { - bracket= 1; - } else if (!strcmp(arg,"--unchecked")) { - rrt= adns_r_ptr_raw; + if (!strcmp(arg,"--timeout")) { + if (!(arg= *++argv)) usageerr("--timeout needs a value"); + settimeout(arg); + forever= 0; } else if (!strcmp(arg,"--wait")) { forever= 1; + } else if (!strcmp(arg,"--brackets")) { + bracket= 1; } else if (!strcmp(arg,"--address")) { address= 1; + } else if (!strcmp(arg,"--unchecked")) { + rrt= adns_r_ptr_raw; + } else if (!strcmp(arg,"--config")) { + if (!(arg= *++argv)) usageerr("--config needs a value"); + config_text= arg; + } else if (!strcmp(arg,"--debug")) { + initflags |= adns_if_debug; } else if (!strcmp(arg,"--help")) { usage(); quit(0); - } else if (!strcmp(arg,"--timeout")) { - if (!(arg= *++argv)) usageerr("--timeout needs a value"); - settimeout(arg); - forever= 0; } else { usageerr("unknown long option"); } } else { while ((c= *++arg)) { switch (c) { - case 'b': - bracket= 1; - break; - case 'u': - rrt= adns_r_ptr_raw; + case 't': + if (*++arg) settimeout(arg); + else if ((arg= *++argv)) settimeout(arg); + else usageerr("-t needs a value"); + forever= 0; + arg= "\0"; break; case 'w': forever= 1; break; + case 'b': + bracket= 1; + break; case 'a': address= 1; break; + case 'u': + rrt= adns_r_ptr_raw; + break; case 'h': usage(); quit(0); - case 't': - if (*++arg) settimeout(arg); - else if ((arg= *++argv)) settimeout(arg); - else usageerr("-t needs a value"); - forever= 0; - arg= "\0"; - break; default: usageerr("unknown short option"); } @@ -380,7 +393,12 @@ static void startup(void) { if (nonblock(1,1)) sysfail("set stdout to nonblocking mode"); memset(&sa,0,sizeof(sa)); sa.sin_family= AF_INET; - r= adns_init(&ads,0,0); if (r) adnsfail("init",r); + if (config_text) { + r= adns_init_strcfg(&ads,initflags,stderr,config_text); + } else { + r= adns_init(&ads,initflags,0); + } + if (r) adnsfail("init",r); cbyte= -1; inbyte= -1; inbuf= 0;