X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftransmit.c;h=bf2f8c608d47fdf8a74efb42402be781d6fa0bb8;hb=814cee186999a6e9a76ab970f891347c1e42b132;hp=28462b38fc96d03b0f4ea7cf16d848145c671092;hpb=8c09a4c65fb124c379c349f2ef8b84ad9e440545;p=adns.git diff --git a/src/transmit.c b/src/transmit.c index 28462b3..bf2f8c6 100644 --- a/src/transmit.c +++ b/src/transmit.c @@ -5,7 +5,8 @@ */ /* * This file is part of adns, which is - * Copyright (C) 1997-2000,2003,2006 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 * (See the file INSTALL for full details.) @@ -86,6 +87,7 @@ static adns_status qdparselabel(adns_state ads, while (p!=pe && (c= *p++)!='.') { if (c=='\\') { if (!(flags & adns_qf_quoteok_query)) return adns_s_querydomaininvalid; + if (p==pe) return adns_s_querydomaininvalid; if (ctype_digit(p[0])) { if (p+1==pe || p+2==pe) return adns_s_querydomaininvalid; if (ctype_digit(p[1]) && ctype_digit(p[2])) { @@ -232,8 +234,7 @@ void adns__querysend_tcp(adns_query qu, struct timeval now) { 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); @@ -279,8 +280,7 @@ void adns__query_send(adns_query qu, struct timeval 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<udpnextserver= (serv+1)%ads->nservers; qu->retries++;