+3283. [bug] Raw zones with with more than 512 records in a RRset
+ failed to load. [RT #27863]
+
3282. [bug] Restrict the TTL of NS RRset to no more than that
of the old NS RRset when replacing it. [RT #27792]
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: clean.sh,v 1.10 2011/12/22 07:32:40 each Exp $
+# $Id: clean.sh,v 1.10.20.1 2012/02/13 23:51:50 marka Exp $
rm -f named-compilezone
rm -f ns1/example.db.raw*
rm -f ns1/example.db.compat
rm -f ns1/example.db.serial.raw
-rm -f ns2/example.db
+rm -f ns1/large.db ns1/large.db.raw
rm -f dig.out.*
+rm -f dig.out
rm -f */named.memstats
+rm -f ns2/example.db
rm -f ns2/transfer.db.*
rm -f ns2/formerly-text.db
rm -f ns2/db-*
+rm -f ns2/large.bk
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: compile.sh,v 1.9 2011/12/22 07:32:40 each Exp $
+# $Id: compile.sh,v 1.9.20.1 2012/02/13 23:51:51 marka Exp $
../named-compilezone -D -F raw -o example.db.raw example \
example.db > /dev/null 2>&1
example.db > /dev/null 2>&1
../named-compilezone -D -F raw -L 3333 -o example.db.serial.raw example \
example.db > /dev/null 2>&1
+../named-compilezone -D -F raw -o large.db.raw large large.db > /dev/null 2>&1
--- /dev/null
+; Copyright (C) 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
+;
+; Permission to use, copy, modify, and/or distribute this software for any
+; purpose with or without fee is hereby granted, provided that the above
+; copyright notice and this permission notice appear in all copies.
+;
+; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+; AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+; PERFORMANCE OF THIS SOFTWARE.
+
+; $Id: large.db.in,v 1.2.2.2 2012/02/13 23:51:51 marka Exp $
+
+$TTL 1D
+
+@ IN SOA ns hostmaster (
+ 1
+ 3600
+ 1800
+ 1814400
+ 3
+ )
+ NS ns
+ns A 10.53.0.1
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: named.conf,v 1.7 2011/12/08 16:07:20 each Exp $ */
+/* $Id: named.conf,v 1.7.36.1 2012/02/13 23:51:51 marka Exp $ */
// NS1
file "example.db";
allow-transfer { any; };
};
+
+zone "large" {
+ type master;
+ file "large.db.raw";
+ masterfile-format raw;
+ allow-transfer { any; };
+};
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: named.conf,v 1.6 2011/10/26 23:46:15 tbox Exp $ */
+/* $Id: named.conf,v 1.6.98.1 2012/02/13 23:51:51 marka Exp $ */
// NS2
masters { 10.53.0.1; };
file "formerly-text.db";
};
+
+zone "large" {
+ type slave;
+ masters { 10.53.0.1; };
+ masterfile-format raw;
+ file "large.bk";
+};
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: setup.sh,v 1.9 2011/12/08 16:07:20 each Exp $
+# $Id: setup.sh,v 1.9.36.1 2012/02/13 23:51:50 marka Exp $
rm -f named-compilezone
ln -s $CHECKZONE named-compilezone
rm -f ns1/example.db.raw
cp ns1/example.db ns2/
cp ns2/formerly-text.db.in ns2/formerly-text.db
+cp ns1/large.db.in ns1/large.db
+awk 'END {
+ for (i = 0; i < 512; i++ ) { print "a TXT", i; }
+ for (i = 0; i < 1024; i++ ) { print "b TXT", i; }
+ for (i = 0; i < 2000; i++ ) { print "c TXT", i; }
+}' < /dev/null >> ns1/large.db
cd ns1 && sh compile.sh
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
-# $Id: tests.sh,v 1.10.20.2 2012/02/01 23:46:23 tbox Exp $
+# $Id: tests.sh,v 1.10.20.3 2012/02/13 23:51:51 marka Exp $
SYSTEMTESTTOP=..
. $SYSTEMTESTTOP/conf.sh
echo "I:waiting for transfers to complete"
for i in 0 1 2 3 4 5 6 7 8 9
do
- test -f ns2/transfer.db.raw -a -f ns2/transfer.db.txt && break
+ test -f ns2/transfer.db.raw -a -f ns2/transfer.db.txt && break
sleep 1
done
[ $ret -eq 0 ] || echo "I:failed"
status=`expr $status + $ret`
+echo "I:checking that large rdatasets loaded"
+ret=0
+for a in a b c
+do
+ $DIG +tcp txt ${a}.large @10.53.0.2 -p 5300 > dig.out
+ grep "status: NOERROR" dig.out > /dev/null || ret=1
+done
+[ $ret -eq 0 ] || echo "I:failed"
+status=`expr $status + $ret`
+
echo "I:exit status: $status"
exit $status
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: master.c,v 1.181 2011/12/08 16:07:20 each Exp $ */
+/* $Id: master.c,v 1.181.36.1 2012/02/13 23:51:51 marka Exp $ */
/*! \file */
if (rdcount > rdata_size) {
dns_rdata_t *new_rdata = NULL;
- new_rdata = grow_rdata(rdata_size + RDSZ, rdata,
+ new_rdata = grow_rdata(rdcount + RDSZ, rdata,
rdata_size, &head,
&dummy, mctx);
if (new_rdata == NULL) {
result = ISC_R_NOMEMORY;
goto cleanup;
}
- rdata_size += RDSZ;
+ rdata_size = rdcount + RDSZ;
rdata = new_rdata;
}
}
while ((this = ISC_LIST_HEAD(save)) != NULL) {
ISC_LIST_UNLINK(save, this, link);
+ INSIST(rdlcount < new_len);
new[rdlcount] = *this;
ISC_LIST_APPEND(*current, &new[rdlcount], link);
rdlcount++;
}
while ((this = ISC_LIST_HEAD(save)) != NULL) {
ISC_LIST_UNLINK(save, this, link);
+ INSIST(rdlcount < new_len);
new[rdlcount] = *this;
ISC_LIST_APPEND(*glue, &new[rdlcount], link);
rdlcount++;
}
while ((rdata = ISC_LIST_HEAD(save)) != NULL) {
ISC_LIST_UNLINK(save, rdata, link);
+ INSIST(rdcount < new_len);
new[rdcount] = *rdata;
ISC_LIST_APPEND(this->rdata, &new[rdcount], link);
rdcount++;
}
while ((rdata = ISC_LIST_HEAD(save)) != NULL) {
ISC_LIST_UNLINK(save, rdata, link);
+ INSIST(rdcount < new_len);
new[rdcount] = *rdata;
ISC_LIST_APPEND(this->rdata, &new[rdcount], link);
rdcount++;
}
this = ISC_LIST_NEXT(this, link);
}
- INSIST(rdcount == old_len);
+ INSIST(rdcount == old_len || rdcount == 0);
if (old != NULL)
isc_mem_put(mctx, old, old_len * sizeof(*old));
return (new);