X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/adns/blobdiff_plain/73dba56e1981d7fe721acf17d0cd91a4fed04850..ac868fa87da18cdebb86103b35ce250bd171f700:/src/internal.h diff --git a/src/internal.h b/src/internal.h index 5e59a12..9a5f23d 100644 --- a/src/internal.h +++ b/src/internal.h @@ -31,6 +31,7 @@ typedef unsigned char byte; #include #include #include +#include #include @@ -249,6 +250,8 @@ struct adns__state { int nservers, nsortlist, tcpserver; enum adns__tcpstate { server_disconnected, server_connecting, server_ok } tcpstate; struct timeval tcptimeout; + struct sigaction stdsigpipe; + sigset_t stdsigmask; struct server { struct in_addr addr; } servers[MAXSERVERS]; @@ -302,7 +305,15 @@ void adns__isort(void *array, int nobjs, int sz, void *tempbuf, * sz bytes long. needswap should return !0 if a>b (strictly, ie * wrong order) 0 if a<=b (ie, order is fine). */ - + +void adns__sigpipe_protect(adns_state); +void adns__sigpipe_unprotect(adns_state); +/* If SIGPIPE protection is not disabled, will block all signals except + * SIGPIPE, and set SIGPIPE's disposition to SIG_IGN. (And then restore.) + * Each call to _protect must be followed by a call to _unprotect before + * any significant amount of code gets to run. + */ + /* From transmit.c: */ adns_status adns__mkquery(adns_state ads, vbuf *vb, int *id_r, @@ -482,6 +493,15 @@ adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu, * serv may be -1 and qu may be 0 - they are used for error reporting only. */ +adns_status adns__parse_domain_more(findlabel_state *fls, adns_state ads, + adns_query qu, vbuf *vb, parsedomain_flags flags, + const byte *dgram); +/* Like adns__parse_domain, but you pass it a pre-initialised findlabel_state, + * for continuing an existing domain or some such of some kind. Also, unlike + * _parse_domain, the domain data will be appended to vb, rather than replacing + * the existing contents. + */ + adns_status adns__findrr(adns_query qu, int serv, const byte *dgram, int dglen, int *cbyte_io, int *type_r, int *class_r, unsigned long *ttl_r,