3 @@ -193,6 +193,7 @@ static int doit(struct query *z,int stat
10 if (state == 1) goto HAVEPACKET;
11 @@ -470,6 +471,7 @@ static int doit(struct query *z,int stat
12 rcode = header[3] & 15;
13 if (rcode && (rcode != 3)) goto DIE; /* impossible; see irrelevant() */
19 @@ -512,6 +514,11 @@ static int doit(struct query *z,int stat
21 uint16_unpack_big(header + 8,&datalen);
24 + if (flagsoa && (pos <= len)) {
25 + cachettl = ttlget(buf + pos - 4);
26 + if (soattl < cachettl) cachettl = soattl;
31 @@ -689,8 +696,8 @@ static int doit(struct query *z,int stat
35 - log_nxdomain(whichserver,d,soattl);
36 - cachegeneric(DNS_T_ANY,d,"",0,soattl);
37 + log_nxdomain(whichserver,d,cachettl);
38 + cachegeneric(DNS_T_ANY,d,"",0,cachettl);
41 if (z->level) goto LOWERLEVEL;