This abstracts away the open-coded handling of qu->timeout.
Rename the field to catch all call sites.
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
/* Timeout handling functions. */
+void adns__timeout_set(adns_query qu, struct timeval now, int ms) {
+ qu->timeout_expires= now;
+ timevaladd(&qu->timeout_expires,ms);
+}
+
void adns__must_gettimeofday(adns_state ads, const struct timeval **now_io,
struct timeval *tv_buf) {
const struct timeval *now;
for (qu= queue->head; qu; qu= nqu) {
nqu= qu->next;
- if (!timercmp(&now,&qu->timeout,>)) {
- inter_maxtoabs(tv_io,tvbuf,now,qu->timeout);
+ if (!timercmp(&now,&qu->timeout_expires,>)) {
+ inter_maxtoabs(tv_io,tvbuf,now,qu->timeout_expires);
} else {
if (!act) { inter_immed(tv_io,tvbuf); return; }
LIST_UNLINK(*queue,qu);
int id, flags, retries;
int udpnextserver;
unsigned long udpsent; /* bitmap indexed by server */
- struct timeval timeout;
+ struct timeval timeout_expires;
time_t expires; /* Earliest expiry time of any record we used. */
qcontext ctx;
* lest we end up in recursive descent !
*/
+void adns__timeout_set(adns_query qu, struct timeval now, int ms);
+static inline void adns__timeout_clear(adns_query qu)
+ { timerclear(&qu->timeout_expires); }
+
+
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! */
qu->retries= 0;
qu->udpnextserver= 0;
qu->udpsent= 0;
- timerclear(&qu->timeout);
+ adns__timeout_clear(qu);
qu->expires= now.tv_sec + MAXTTLBELIEVE;
memset(&qu->ctx,0,sizeof(qu->ctx));
static void query_usetcp(adns_query qu, struct timeval now) {
qu->state= query_tcpw;
- qu->timeout= now;
- timevaladd(&qu->timeout,TCPWAITMS);
+ adns__timeout_set(qu,now,TCPWAITMS);
LIST_LINK_TAIL(qu->ads->tcpw,qu);
adns__querysend_tcp(qu,now);
adns__tcp_tryconnect(qu->ads,now);
if (r<0 && errno != EAGAIN)
adns__warn(ads,serv,0,"sendto failed: %s",strerror(errno));
- qu->timeout= now;
- timevaladd(&qu->timeout,UDPRETRYMS);
+ adns__timeout_set(qu, now, UDPRETRYMS);
qu->udpsent |= (1<<serv);
qu->udpnextserver= (serv+1)%ads->nservers;
qu->retries++;