djbdns: fix compile errors because of wrong ranlib use, also apply Johnny Halfmoon's update to 1.05-5 (#5764)
git-svn-id: svn://svn.openwrt.org/openwrt/packages@17673 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@ -0,0 +1,67 @@
|
||||
--- a/query.c
|
||||
+++ b/query.c
|
||||
@@ -342,6 +342,29 @@ static int doit(struct query *z,int stat
|
||||
}
|
||||
}
|
||||
|
||||
+ if (typematch(DNS_T_SOA,dtype)) {
|
||||
+ byte_copy(key,2,DNS_T_SOA);
|
||||
+ cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
|
||||
+ if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
|
||||
+ log_cachedanswer(d,DNS_T_SOA);
|
||||
+ if (!rqa(z)) goto DIE;
|
||||
+ pos = 0;
|
||||
+ while (pos = dns_packet_copy(cached,cachedlen,pos,misc,20)) {
|
||||
+ pos = dns_packet_getname(cached,cachedlen,pos,&t2);
|
||||
+ if (!pos) break;
|
||||
+ pos = dns_packet_getname(cached,cachedlen,pos,&t3);
|
||||
+ if (!pos) break;
|
||||
+ if (!response_rstart(d,DNS_T_SOA,ttl)) goto DIE;
|
||||
+ if (!response_addname(t2)) goto DIE;
|
||||
+ if (!response_addname(t3)) goto DIE;
|
||||
+ if (!response_addbytes(misc,20)) goto DIE;
|
||||
+ response_rfinish(RESPONSE_ANSWER);
|
||||
+ }
|
||||
+ cleanup(z);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (typematch(DNS_T_A,dtype)) {
|
||||
byte_copy(key,2,DNS_T_A);
|
||||
cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
|
||||
@@ -374,7 +397,7 @@ static int doit(struct query *z,int stat
|
||||
}
|
||||
}
|
||||
|
||||
- if (!typematch(DNS_T_ANY,dtype) && !typematch(DNS_T_AXFR,dtype) && !typematch(DNS_T_NS,dtype) && !typematch(DNS_T_PTR,dtype) && !typematch(DNS_T_A,dtype) && !typematch(DNS_T_MX,dtype)) {
|
||||
+ if (!typematch(DNS_T_ANY,dtype) && !typematch(DNS_T_AXFR,dtype) && !typematch(DNS_T_NS,dtype) && !typematch(DNS_T_PTR,dtype) && !typematch(DNS_T_A,dtype) && !typematch(DNS_T_MX,dtype) && !typematch(DNS_T_SOA,dtype)) {
|
||||
byte_copy(key,2,dtype);
|
||||
cached = cache_get(key,dlen + 2,&cachedlen,&ttl);
|
||||
if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) {
|
||||
@@ -601,15 +624,24 @@ static int doit(struct query *z,int stat
|
||||
else if (byte_equal(type,2,DNS_T_AXFR))
|
||||
;
|
||||
else if (byte_equal(type,2,DNS_T_SOA)) {
|
||||
+ int non_authority = 0;
|
||||
+ save_start();
|
||||
while (i < j) {
|
||||
pos = dns_packet_skipname(buf,len,records[i]); if (!pos) goto DIE;
|
||||
pos = dns_packet_getname(buf,len,pos + 10,&t2); if (!pos) goto DIE;
|
||||
pos = dns_packet_getname(buf,len,pos,&t3); if (!pos) goto DIE;
|
||||
pos = dns_packet_copy(buf,len,pos,misc,20); if (!pos) goto DIE;
|
||||
- if (records[i] < posauthority)
|
||||
+ if (records[i] < posauthority) {
|
||||
log_rrsoa(whichserver,t1,t2,t3,misc,ttl);
|
||||
+ save_data(misc,20);
|
||||
+ save_data(t2,dns_domain_length(t2));
|
||||
+ save_data(t3,dns_domain_length(t3));
|
||||
+ non_authority++;
|
||||
+ }
|
||||
++i;
|
||||
}
|
||||
+ if (non_authority)
|
||||
+ save_finish(DNS_T_SOA,t1,ttl);
|
||||
}
|
||||
else if (byte_equal(type,2,DNS_T_CNAME)) {
|
||||
pos = dns_packet_skipname(buf,len,records[j - 1]); if (!pos) goto DIE;
|
Reference in New Issue
Block a user