--- djbdns-1.05.patch.orig 2007-08-26 15:08:50.000000000 +0200 +++ djbdns-1.05.patch 2007-12-17 21:34:49.000000000 +0100 @@ -1757,8 +1757,8 @@ { === modified file 'query.c' ---- query.c 2004-07-08 11:45:45 +0000 -+++ query.c 2007-08-23 21:11:49 +0000 +--- query.c.orig 2007-12-17 21:14:09.000000000 +0100 ++++ query.c 2007-12-17 21:33:24.000000000 +0100 @@ -12,6 +12,15 @@ #include "alloc.h" #include "response.h" @@ -1775,7 +1775,7 @@ static int flagforwardonly = 0; -@@ -20,10 +29,32 @@ +@@ -20,10 +29,31 @@ flagforwardonly = 1; } @@ -1790,12 +1790,11 @@ +#ifdef SQLCACHE +unsigned int db_reinsert_interval = 1*60*60; +unsigned int db_insert_minttl = 10*60; -+extern unsigned int save_ok; +#endif ++static unsigned int save_ok; + +char save_buf[8192]; +unsigned int save_len; -+static unsigned int save_ok; + static void cachegeneric(const char type[2],const char *d,const char *data,unsigned int datalen,uint32 ttl) { @@ -1808,7 +1807,7 @@ len = dns_domain_length(d); if (len > 255) return; -@@ -32,13 +63,26 @@ +@@ -32,13 +62,26 @@ byte_copy(key + 2,len,d); case_lowerb(key + 2,len); @@ -1839,7 +1838,7 @@ static void save_start(void) { save_len = 0; -@@ -193,6 +237,7 @@ +@@ -193,6 +236,7 @@ int k; int p; int q; @@ -1847,7 +1846,7 @@ errno = error_io; if (state == 1) goto HAVEPACKET; -@@ -236,7 +281,9 @@ +@@ -236,7 +280,9 @@ response_rfinish(RESPONSE_ANSWER); } cleanup(z); @@ -1857,7 +1856,7 @@ return 1; } -@@ -246,7 +293,10 @@ +@@ -246,7 +292,10 @@ case_lowerb(key + 2,dlen); cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached) { @@ -1868,7 +1867,7 @@ goto NXDOMAIN; } -@@ -254,13 +304,17 @@ +@@ -254,13 +303,17 @@ cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached) { if (typematch(DNS_T_CNAME,dtype)) { @@ -1886,7 +1885,7 @@ if (!dns_domain_copy(&cname,cached)) goto DIE; goto CNAME; } -@@ -269,7 +323,9 @@ +@@ -269,7 +322,9 @@ byte_copy(key,2,DNS_T_NS); cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) { @@ -1896,7 +1895,7 @@ if (!rqa(z)) goto DIE; pos = 0; while (pos = dns_packet_getname(cached,cachedlen,pos,&t2)) { -@@ -286,7 +342,9 @@ +@@ -286,7 +341,9 @@ byte_copy(key,2,DNS_T_PTR); cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) { @@ -1906,7 +1905,7 @@ if (!rqa(z)) goto DIE; pos = 0; while (pos = dns_packet_getname(cached,cachedlen,pos,&t2)) { -@@ -303,7 +361,9 @@ +@@ -303,7 +360,9 @@ byte_copy(key,2,DNS_T_MX); cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) { @@ -1916,7 +1915,7 @@ if (!rqa(z)) goto DIE; pos = 0; while (pos = dns_packet_copy(cached,cachedlen,pos,misc,2)) { -@@ -324,7 +384,9 @@ +@@ -324,7 +383,9 @@ cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) { if (z->level) { @@ -1926,7 +1925,7 @@ while (cachedlen >= 4) { for (k = 0;k < 64;k += 4) if (byte_equal(z->servers[z->level - 1] + k,4,"\0\0\0\0")) { -@@ -337,7 +399,9 @@ +@@ -337,7 +398,9 @@ goto LOWERLEVEL; } @@ -1936,7 +1935,7 @@ if (!rqa(z)) goto DIE; while (cachedlen >= 4) { if (!response_rstart(d,DNS_T_A,ttl)) goto DIE; -@@ -355,7 +419,9 @@ +@@ -355,7 +418,9 @@ byte_copy(key,2,dtype); cached = cache_get(key,dlen + 2,&cachedlen,&ttl); if (cached && (cachedlen || byte_diff(dtype,2,DNS_T_ANY))) { @@ -1946,7 +1945,7 @@ if (!rqa(z)) goto DIE; while (cachedlen >= 2) { uint16_unpack_big(cached,&datalen); -@@ -396,7 +462,9 @@ +@@ -396,7 +461,9 @@ pos = 0; j = 0; while (pos = dns_packet_getname(cached,cachedlen,pos,&t1)) { @@ -1956,7 +1955,7 @@ if (j < QUERY_MAXNS) if (!dns_domain_copy(&z->ns[z->level][j++],t1)) goto DIE; } -@@ -430,12 +498,16 @@ +@@ -430,12 +497,16 @@ dns_sortip(z->servers[z->level],64); if (z->level) { @@ -1975,7 +1974,7 @@ } return 0; -@@ -590,15 +662,19 @@ +@@ -590,15 +661,19 @@ 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; @@ -1995,7 +1994,7 @@ cachegeneric(DNS_T_CNAME,t1,t2,dns_domain_length(t2),ttl); } else if (byte_equal(type,2,DNS_T_PTR)) { -@@ -606,7 +682,9 @@ +@@ -606,7 +681,9 @@ 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; @@ -2005,7 +2004,7 @@ save_data(t2,dns_domain_length(t2)); ++i; } -@@ -617,7 +695,9 @@ +@@ -617,7 +694,9 @@ 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; @@ -2015,7 +2014,7 @@ save_data(t2,dns_domain_length(t2)); ++i; } -@@ -629,7 +709,9 @@ +@@ -629,7 +708,9 @@ pos = dns_packet_skipname(buf,len,records[i]); if (!pos) goto DIE; pos = dns_packet_copy(buf,len,pos + 10,misc,2); if (!pos) goto DIE; pos = dns_packet_getname(buf,len,pos,&t2); if (!pos) goto DIE; @@ -2025,7 +2024,7 @@ save_data(misc,2); save_data(t2,dns_domain_length(t2)); ++i; -@@ -643,8 +725,13 @@ +@@ -643,8 +724,13 @@ pos = dns_packet_copy(buf,len,pos,header,10); if (!pos) goto DIE; if (byte_equal(header + 8,2,"\0\4")) { pos = dns_packet_copy(buf,len,pos,header,4); if (!pos) goto DIE; @@ -2039,7 +2038,7 @@ } ++i; } -@@ -659,7 +746,9 @@ +@@ -659,7 +745,9 @@ if (datalen > len - pos) goto DIE; save_data(header + 8,2); save_data(buf + pos,datalen); @@ -2049,7 +2048,7 @@ ++i; } save_finish(type,t1,ttl); -@@ -689,13 +778,21 @@ +@@ -689,13 +777,21 @@ } if (rcode == 3) { @@ -2072,7 +2071,7 @@ cleanup(z); return 1; } -@@ -706,10 +803,13 @@ +@@ -706,10 +802,13 @@ if (byte_diff(DNS_T_CNAME,2,dtype)) { save_start(); save_finish(dtype,d,soattl); @@ -2087,8 +2086,6 @@ if (flagout || flagsoa || !flagreferral) { - -=== modified file 'query.h' --- query.h 2004-07-08 11:45:45 +0000 +++ query.h 2007-08-23 20:36:07 +0000 @@ -28,5 +28,6 @@ @@ -2446,3 +2443,5 @@ if (cdb_make_finish(&cdb) == -1) die_datatmp(); if (fsync(fdcdb) == -1) die_datatmp(); + +