add packages_10.03.2 in preparation for the 10.03.2 interim release
[10.03/packages.git] / net / djbdns / patches / 080-dnscache-cache-negatives.patch
1 --- a/query.c
2 +++ b/query.c
3 @@ -193,6 +193,7 @@ static int doit(struct query *z,int stat
4    int k;
5    int p;
6    int q;
7 +  uint32 cachettl;
8  
9    errno = error_io;
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() */
14  
15 +  cachettl = 0;
16    flagout = 0;
17    flagcname = 0;
18    flagreferral = 0;
19 @@ -512,6 +514,11 @@ static int doit(struct query *z,int stat
20  
21      uint16_unpack_big(header + 8,&datalen);
22      pos += datalen;
23 +
24 +    if (flagsoa && (pos <= len)) {
25 +      cachettl = ttlget(buf + pos - 4);
26 +      if (soattl < cachettl) cachettl = soattl;
27 +    }
28    }
29    posglue = pos;
30  
31 @@ -689,8 +696,8 @@ static int doit(struct query *z,int stat
32    }
33  
34    if (rcode == 3) {
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);
39  
40      NXDOMAIN:
41      if (z->level) goto LOWERLEVEL;