X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Finternal.h;h=121c6d8fb36afd9f3e12edd1f388384a2266f007;hb=814cee186999a6e9a76ab970f891347c1e42b132;hp=007efbd1c122b4f4f1578a979c5c432ff5c1e0c5;hpb=a2d3f193f511921cacffce83e5e8a6114a0b1d9b;p=adns.git diff --git a/src/internal.h b/src/internal.h index 007efbd..121c6d8 100644 --- a/src/internal.h +++ b/src/internal.h @@ -6,7 +6,7 @@ */ /* * This file is part of adns, which is - * Copyright (C) 1997-2000,2003,2006,2014-2016 Ian Jackson + * Copyright (C) 1997-2000,2003,2006,2014-2016,2020 Ian Jackson * Copyright (C) 2014 Mark Wooding * Copyright (C) 1999-2000,2003,2006 Tony Finch * Copyright (C) 1991 Massachusetts Institute of Technology @@ -95,7 +95,8 @@ typedef unsigned char byte; typedef enum { cc_user, - cc_entex, + cc_enter, + cc_exit, cc_freq } consistency_checks; @@ -170,7 +171,7 @@ typedef struct typeinfo { * Previously, used alloc_interim, now use alloc_final. */ - adns_status (*convstring)(vbuf *vb, const void *data); + adns_status (*convstring)(vbuf *vb, adns_rrtype, const void *data); /* Converts the RR data to a string representation in vbuf. * vbuf will be appended to (it must have been initialised), * and will not be null-terminated by convstring. @@ -246,7 +247,7 @@ union maxalign { void *p; void (*fp)(void); union maxalign *up; -} data; +}; struct adns__query { adns_state ads; @@ -297,7 +298,8 @@ struct adns__query { int id, flags, retries; int udpnextserver; unsigned long udpsent; /* bitmap indexed by server */ - struct timeval timeout; + int timeout_ms; + struct timeval timeout_started; time_t expires; /* Earliest expiry time of any record we used. */ qcontext ctx; @@ -884,6 +886,15 @@ void adns__autosys(adns_state ads, struct timeval now); * lest we end up in recursive descent ! */ +static inline void +adns__timeout_set(adns_query qu, struct timeval now, long ms) + { qu->timeout_ms= ms; qu->timeout_started= now; } + +static inline void +adns__timeout_clear(adns_query qu) + { qu->timeout_ms= 0; timerclear(&qu->timeout_started); } + + void adns__must_gettimeofday(adns_state ads, const struct timeval **now_io, struct timeval *tv_buf); /* Call with care - might reentrantly cause queries to be completed! */