[packages] tor-alpha: update to 0.2.2.22-alpha, add archive mirror
[openwrt/svn-archive/archive.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;