X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/3e2e5fab72e861e677586726f1420d2db3f1efd0..0aa7cba06213dbb951f02bbc7afbaacf5c409d18:/src/adns.h diff --git a/src/adns.h b/src/adns.h index c440222..d59f4d4 100644 --- a/src/adns.h +++ b/src/adns.h @@ -50,7 +50,7 @@ typedef enum { adns_if_eintr= 0x0020, /* allow _wait and _synchronous to return EINTR */ adns_if_nosigpipe= 0x0040, /* applic has SIGPIPE set to SIG_IGN, do not protect */ adns_if_checkc_entex= 0x0100, /* do consistency checks on entry/exit to adns funcs */ - adns_if_checkc_freq= 0x0300, /* do consistency checks very frequently (slow!) */ + adns_if_checkc_freq= 0x0300 /* do consistency checks very frequently (slow!) */ } adns_initflags; typedef enum { @@ -199,7 +199,7 @@ typedef enum { /* permanent errors */ adns_s_nxdomain, - adns_s_nodata, + adns_s_nodata } adns_status; @@ -336,6 +336,12 @@ int adns_wait(adns_state ads, adns_answer **answer_r, void **context_r); +/* same as adns_wait but uses poll(2) internally */ +int adns_wait_poll(adns_state ads, + adns_query *query_io, + adns_answer **answer_r, + void **context_r); + void adns_cancel(adns_query query); /* The adns_query you get back from _submit is valid (ie, can be @@ -381,9 +387,11 @@ adns_query adns_forallqueries_next(adns_state ads, void **context_r); * context_r may be 0. *context_r may not be set when _next returns 0. */ -void adns_checkconsistency(adns_state ads); +void adns_checkconsistency(adns_state ads, adns_query qu); /* Checks the consistency of adns's internal data structures. * If any error is found, the program will abort(). + * You may pass 0 for qu; if you pass non-null then additional checks + * are done to make sure that qu is a valid query. */ /* @@ -425,7 +433,7 @@ int adns_processexceptional(adns_state ads, int fd, const struct timeval *now); * from, or send outgoing data via, fd. Very like _processany. If it * returns zero then fd will no longer be readable or writeable * (unless of course more data has arrived since). adns will _only_ - * that fd and only in the manner specified, regardless of whether + * use that fd and only in the manner specified, regardless of whether * adns_if_noautosys was specified. * * adns_processexceptional should be called when select(2) reports an @@ -551,7 +559,7 @@ int adns_beforepoll(adns_state ads, struct pollfd *fds, int *nfds_io, int *timeo * in *nfds_io, and always return either 0 (if it is not interested in * any fds) or ERANGE (if it is). * - * NOTE that (unless timeout_io is 0) adns may acquire additional fds + * NOTE that (unless now is 0) adns may acquire additional fds * from one call to the next, so you must put adns_beforepoll in a * loop, rather than assuming that the second call (with the buffer * size requested by the first) will not return ERANGE. @@ -572,9 +580,11 @@ int adns_beforepoll(adns_state ads, struct pollfd *fds, int *nfds_io, int *timeo * adns_beforepoll will return 0 on success, and will not fail for any * reason other than the fds buffer being too small (ERANGE). * - * This call will never actually do any I/O, or change the fds that - * adns is using or the timeouts it wants; and in any case it won't - * block. + * This call will never actually do any I/O. If you supply the + * current time it will not change the fds that adns is using or the + * timeouts it wants. + * + * In any case this call won't block. */ #define ADNS_POLLFDS_RECOMMENDED 2