
	--- 8.1-REL released ---

 189.	[port]		update to the port/sco50 directory rcvd from author.

 188.	[func]		to avoid potentially confusing log messages, don't
			set Z_DYNAMIC if "allow-update { none; };" is
			specified in the config file.

 187.	[bug]		a panic() in new_ip_match_mask() erroneously
			referred to the function as "new_ip_match_pattern".

 186.	[bug]		transfers-in couldn't be set higher than the default.
			It may now be set as high as 20.

 185.	[doc]		add a stub example to named.conf.

 184.	[bug]		the usage message was out-of-date.

 183.	[port]		some systems don't define AF_INET6, so we
			define it if necessary in all port_after.h
			
	--- 8.1-T5B released ---

 182.	[bug]		fix the way bindname is allocated in hesiod_to_bind().

 181.	[bug]		MAXHOSTNAMELEN wasn't defined on Solaris.

 180.	[bug]		a check for zptr != NULL in res_update was wrong.  It
			should have been zptr == NULL.

 179.	[bug]		sq_remove() and sq_done() were calling ns_freexfr()
			when any stream was removed, resulting in a panic
			when the server was reloaded.  ns_freexfr() is now
			only called when a zone transfer stream is removed.

	--- 8.1-T4B released ---

 178.	[bug]		if the server was reloaded and then a zone was
			deleted and the server reloaded again, all within
			a short period of time, then pending NOTIFY messages
			would cause the server to panic when they ran.

 177.	[lint]		replaced BUFSIZ with a more appropriate size in
			several places.

 176.	[func]		change MAXDATA to 2*MAXDNAME + 5*INT32SZ.

 175.	[security]	libirs now limits hostnames to MAXHOSTNAMELEN
			characters.

 174.	[bug]		we called ns_refreshtime() instead of ns_retrytime()
			in the Z_NEED_RELOAD|Z_NEED_XFER|Z_QSERIAL case in
			zone_maint().

 173.	[bug]		the server didn't clear the Z_NEED_RELOAD flag in
			zoneinit().

 172.	[bug]		if a server was a slave for a zone, and an outbound
			transfer ever hung or terminated unusually, regular
			zone maintenance would cease for the zone.

 171.	[port]		work around a bug in the Digital UNIX 4.0B SIOCGIFCONF
			ioctl.

 170.	[func]		the message logged when a zone is loaded now
			indicates the class of the zone.

 169.	[func]		the message logged when a zone is removed now
			indicates both the type and class of the zone.

 168.	[bug]		if a zone's type changed from master to slave on a
			server reload, the server erroneously deleted the
			new zone data as part of cleaning up the old zone
			data.

 167.	[func]		when converting from wire format to printable format,
			represent special characters ".;\@$ by escaping them
			with \ instead of converting them to \DDD.

 166.	[bug]		when a slave zone expired, it was not scheduled for
			immedidate maintenance.

 165.	[port]		added port for SCO OSE 5.0.2, renamed port for
			SCO UNIX 3.2v4.2.

 164.	[func]		created the "response-checks" logging category.

 163.	[port]		don't define AF_INET6 in nameser_compat.h.

 162.	[bug]		the server panicked if a dynamic update request
			was sent for a dynamic zone which had not loaded
			because of syntax errors in the master file.  The
			server now returns NOTAUTH.

 161.	[bug]		debugging messages in process_prereq() referred to
			process_updates() instead of process_prereq().

 160.	[bug]		hp was not reset after a realloc() in named-xfer.c

 159.	[bug]		named-bootconf.pl didn't translate stub zones.

 158.	[lint]		cast a number of "no effect" statements to void so
			that gcc doesn't complain when invoked with
			-Wall -W -Wno-unused

 157.	[lint]		a number of uses of the %lu printf() format were
			converted to %u; the corresponding casts to u_long
			were removed.

 156.	[lint]		converted z_deferupdcnt and z_updatecnt from int to
			u_int32_t.

 155.	[func]		maint_interval is now gone; SOA sanity checking
			related to it is gone too.

 154.	[bug]		in named-xfer, unsigned 32-bit integers were
			sometimes stored in signed 32-bit variables and then
			printed using a cast to u_long and printf() format
			%lu.  This would cause problems on 64-bit systems if
			the MSB of the 32-bit integer was set.  The variable
			declarations have been changed to u_int32_t, and the
			printf format is now %u.

 153.	[bug]		log_open_stream() had two syslogs that said the
			failing function was log_vwrite() instead of
			log_open_stream().

 152.	[lint]		made class, type, and dlen in rrextract() and
			named-xfer.c/print_output() u_int16_t.

 151.	[bug]		the server was incrementing nssSentFErr in the
			formerr: code in ns_resp.c even though it wasn't
			sending FORMERR to anyone.

 150.	[func]		in "check-names response fail" mode, instead of
			just dropping a failing response, we now send
			REFUSED to the client and drop the query.

 149.	[bug]		if there wasn't a space between the SOA minimum value
			and a following ')' in a master file, the server
			would generate an error when it tried to parse the
			minimum value, causing the zone load to fail.

 148.	[func]		the list of supported syslog facilities has been
			increased; the following facilities may now be used,
			provided they're available on the system 'named' is
			being built on: kern, user, mail, daemon, auth,
			syslog, lpr, news, uucp, cron, authpriv, ftp,
			local[0-7].

 147.	[bug]		the maybe_syslog_facility, logging_opt,
			channel_severity, address_name, key_ref, key_stmt,
			acl_stmt, zone_stmt, optional_class, and size_spec
			rules in the parser either leaked memory or could
			leak memory.

 146.	[func]		if an RR set in a reply differed from an RR set in
			the cache only in the TTL, we would not update the
			TTL of the RR set in the cache.  We now update this
			TTL to that of the reply RR set if the reply RR set's
			TTL is greater.

 145.	[func]		follow the direction of the clarification draft and
			treat TTLs as unsigned 32-bit integers, with a
			maximum value of 2^31 - 1.  TTLs greater than the
			maximum will be converted to 0.  A warning will
			be issued if this conversion occurs while loading
			a master zone or during inbound zone transfer.

 144.	[func]		"dig version.bind. txt chaos" now returns only
			the version number (e.g. "8.1-T4B").

 143.	[lint]		fixed various mismatches between printf() format
			string components and their corresponding
			arguments.

 142.	[lint]		SendRequest_close() in nslookup/send.c had a return
			type of int instead of void.

 141.	[port]		converted bcopy() to memcpy() or memmove() as
			appropriate.

 140.	[bug]		certain buffer size checking comparisons in
			rdata_expand() weren't working because they were
			checking to see if an unsigned value was < 0.

 139.	[func]		convert a few address comparisons from == to using
			ina_equal().

 138.	[bug]		an address comparison used in marking a server as
			bad was done incorrectly in ns_resp.c because the
			comparison used = instead of ==.

 137.	[lint]		cleaned up warnings caused by assignment used as
			truth-value in various source files.

 136.	[func]		changed eventlib-related INSIST statements into
			INSIST_ERR, so that we can print out strerror(errno).

 135.	[lint]		replaced _getshort() with ns_get16() and _getlong()
			with ns_get32() in various source files.

 134.	[lint]		findzone() and rdata_expand() were used before
			they were declared in ns_update.c, and were not
			declared static.

 133.	[lint]		merge_logs() was not declared in ns_func.h.

 132.	[lint]		Linux port_after.h didn't declare daemon().  We now
			do so, but only if GNU libc < 2.0.

 131.	[lint]		set_boolean_option() was not declared in ns_func.h.

 130.	[lint]		yyparse() was not declared in ns_parser.y.

 129.	[lint]		ns_lexer.h didn't declare lexer_end_file().

 128.	[lint]		db_dump.c, db_lookup.c, db_update.c, db_glue.c,
			db_save.c, ns_ncache.c, ns_req.c, ns_stats.c, and
			ns_xfr.c didn't #include <string.h>

 127.	[lint]		logging.c, ev_connects.c, ns_maint.c, ns_glue.c,
			ns_update.c, dig/dig.c, nslookup/list.c,
			nslookup/send.c, host/host.c, and
			dnsquery/dnsquery.c didn't #include <unistd.h>.

 126.	[lint]		res_update.c, heap.c, db_load.c, db_save.c, db_glue.c,
			ns_lexer.c, ns_forw.c, ns_maint.c, ns_req.c,
			ns_stats.c, ns_xfr.c, ns_glue.c, ns_config.c,
			ns_update.c, host/host.c, nslookup/list.c, and
			nslookup/getinfo.c didn't #include <stdlib.h>.

 125.	[lint]		res_mkupdate.c, ns_update.c, nsupdate.c, ns_print.c,
			didn't #include <ctype.h>.

 124.	[port]		replaced bcmp() with memcmp().

 123.	[func]		while not required, it's nice to preserve the order
			of RRs as received when ROUND_ROBIN isn't on, so
			we now do so.

 122.	[bug]		under certain improbable conditions, the server
			could erroneously set a maintenance timer for a
			master zone.  When the timer went off, it would
			trigger the INSIST() in zone_maint().

 121.	[port]		replaced bzero() with memset().

 120.	[func]		added multiple-cnames option.

 119.	[bug]		the timeout: code in ns_resp.c didn't clean up TCP
			connections.

 118.	[port]		added port for IRIX 5.3, 6.2, 6.4

 117.	[bug]		removed declaration of getnum_error from db_load.c,
			since it is now declared in ns_glob.h.

 116.	[bug]		GNU libc 2.0 doesn't have a <net/route.h>, so in the
			Linux port we now provide a stub net/route.h that
			includes the real <net/route.h> if GNU libc < 2.0 and
			does nothing if >= 2.0.

 115.	[func]		on Linux systems, avoid an often unnecessary 'ranlib'
			and the subsequent relinking of all binaries by using
			the 's' flag of 'ar'.

 114.	[bug]		'make install' didn't work on HP/UX because the
			path to the install script was wrong in many cases.

 113.	[bug]		named-xfer didn't clean up properly when sent SIGTERM.

 112.	[bug]		named-xfer didn't clean up properly if an error
			occured in print_output().

 111.	[func]		added "max-transfer-time-in" option.  The server
			used to allow a maximum of 2 hours for an inbound
			zone transfer to complete.  This time can now be
			set globally or on a per-zone basis.  The parameter
			is the number of minutes a transfer can take.

 110.	[func]		moved declaration of d_ns in struct databuf to improve
			structure alignment.

 109.	[bug]		addname() in ns_print.c didn't write an "@" for RRs
			that contained a domain name which was the same as
			the zone origin (it wrote nothing).

 108.	[bug]		the server didn't check for EINTR in readable() and
			writable() in ev_streams.c.

 107.	[bug]		check for both EWOULDBLOCK and EAGAIN after certain
			system calls instead of using PORT_WOULDBLK.  This
			fixes partial zone transfer problems reported on
			Sun systems.

 106.	[bug]		db_load() couldn't read SOAs with ( ) that were only
			one line.

 105.	[bug]		fixed typo in Linux Makefile.set MANROFF definition.

 104.	[func]		move various rrset debugging messages, rm_datum, and
			nsfree messages to debug level 3.  Moved a few rrset
			debugging messages to debug level 2.

 103.	[bug]		d_rcnt could overflow; to prevent this it has been
			increased to 32 bits.  d_mark was made unsigned and
			decreased to 12 bits.

 102.	[func]		added macro DRCNTDEC to	go along with DRCNTINC.

 101.	[bug]		clean_cache() didn't count deleted RRs, so it
			always reported "Cleaned cache of 0 RRs".

 100.	[bug]		heap_for_each() didn't return a status, and didn't
			check for a NULL context or a NULL action.
			heap_element() didn't set errno to EINVAL when
			given invalid arguments.

  99.	[bug]		the category rule in the parser leaked memory.

  98.	[bug]		"notify" was not recognized as a valid category
			name.

  97.	[security]	zone access control wasn't applied correctly to
			names that didn't exist, allowing an attacker to
			determine whether or not a given name exists in a
			zone.

  96.	[bug]		we didn't recognize certain non-fatal errno values
			when recvfrom() failed; this would result in us
			dropping an interface unnecessarily.

	--- 8.1-T3B released ---

  95.	[bug]		named-bootconf.pl didn't process xfrnets correctly
			(if no netmask was specifed, it assumed a mask of
			255.255.255.255 instead of the natural netmask for
			the class of the address).

  94.	[bug]		named-bootconf.pl didn't handle lines ending in a
			comment.

  93.	[bug]		if rename() failed in merge_logs(), we would return
			garbage instead of -1.

  92.	[bug]		writemsg() in named-xfer.c was returning a random
			value instead of the number of bytes written.

  91.	[bug]		schedretry() could set retry times in the past
			because it was relying on 'tt' which hadn't been
			updated.  It now calls gettime(&tt).

  90.	[bug]		'tt' might not have been current when clean_cache()
			was called.

  89.	[bug]		ns_lexer.h didn't #include <ctype.h>

  88.	[cleanup]	removed some relics of the early days of BIND 8's
			new logging system from the parser and ns_config.c.

  87.	[bug]		when writing to a TCP socket, the server didn't
			handle errors from the write() correctly.  Under the
			right circumstances, this will cause the server to
			spin.  The most common trigger would be a large
			outbound zone transfer where the far end died.

  86.	[cleanup]	fixed comment in dig.c that messed up font-lock mode
			in emacs.

  85.	[bug]		inet_lnaof, inet_makeaddr, inet_netof, and
			inet_network were missing from lib/inet.

  84.	[func]		improved log_channel creation and use by making the
			type more opaque.  The logging API provides a more
			complete set of services.  Added the LOG_CHANNEL_OFF
			flag.

  83.	[func]		removed statistics_channel; it wasn't being used.

  82.	[lint]		a few handler functions were declared as
			void (*)() instead of void (*)(void).  All now have
			the latter declaration.

  81.	[port]		added port for A/UX 3.1.1.

  80.	[port]		added port for SCO UNIX 3.2v4.2.

  79.	[bug]		when processsing slave zones during a config file
			reload, in the "backup file changed" (or missing)
			case we were calling purge_zone() and do_reload()
			even if we had never successfully transferred and
			loaded the zone.

  78.	[cleanup]	moved writemsg() to named-xfer.c.

  77.	[cleanup]	removed doupdate() from ns_resp.c.

  76.	[bug]		writev() in lib/bsd would keep going if there was
			a partial write; this could cause incorrect output.

  75.	[func]		added readv() to lib/bsd.

  74.	[bug]		if evConnect() failed in tcp_send() we were aborting
			the server instead of just returning an error.

  73.	[port]		automatically fix getgrgid() declaration in ULTRIX
			4.5 grp.h.

  72.	[func]		make port/*/Makefile invoke SUBDIR make in
			include.  Add/modify include and include/sys
			Makefiles.

  71.	[port]		added utimes() to lib/bsd.

  70.	[doc]		README broken up into INSTALL, TODO, port/README.
			Added more info about many topics.

  69.	[bug]		NOTIFY didn't handle an unknown NS target.  E.g.
			if we had "test.domain NS unknown.name" and
			"unknown.name" was not known, NOTIFY wasn't doing an
			"A" query for "unknown.name".

  68.	[lint]		tweaks to ERR() and OK() in eventlib_p.h.

  67.	[bug]		'ch' in main() was a char instead of an int.

  66.	[bug]		in bin/named/Makefile, pathnames wasn't getting
			linked with ${LIBBIND}, ${LIBPORT}, and ${SYSLIBS}.

  65.	[port]		automatically fix timespec in BSD/OS 2.1 includes.

  64.	[func]		lib/isc/heap.c now includes port_before.h and
			port_after.h.  Fix 58 (below) has been undone;
			with port_after.h we'll now use __ansi_realloc()
			from Fix 59.

  63.	[bug]		STRIP and PS were missing from MARGS in bin/Makefile.

  62.	[func]		RRs in the additional data section must relate to
			RRs in the answer and authority sections.  Only
			certain RR types are allowed in the authority and
			additional data sections.

  61.	[bug]		Dynamic update didn't understand SRV records.

  60.	[bug]		SRV records weren't decoded properly.

	--- 8.1-T3A released ---

  59.	[bug]		The IRS library also wanted an ANSI C realloc().
			port/sunos now provides __ansi_realloc().

  58.	[bug]		SunOS didn't like heap.c doing realloc() on a NULL
			pointer (in ANSI C that is equivalent to malloc()),
			so we malloc() instead.

  57.	[bug]		interface discovery complained about bogus
			interfaces on ULTRIX, SunOS, and HP/UX because
			SIOCGIFCONF_ADDR wasn't defined in their port_after.h.

  56.	[API]		created lib/nameser/ns_name.c and moved a lot of the
			functionality from lib/resolv/res_comp.c into it.
			functions older than 8.1 were stubbed out, but new
			functions from 8.1 were just renamed/removed.

  55.	[bug]		findzone in ns_update wasn't ignoring z_nil zones.

  54.	[bug]		if the named-xfer exec() failed, a misleading message
			was printed.

  53.	[bug]		interface discovery didn't work on NetBSD because
			HAVE_SA_LEN wasn't defined in port_after.h.

  52.	[func]		log the host we got a NOTIFY message from

  51.	[bug]		we weren't sending out NOTIFY messages if the SOA
			was changed as the result of a dynamic update.

  50.	[bug]		req_notify() wasn't calling sched_zone_maint() after
			it called qserial_query().

  49.	[bug]		initial_{data,stack,core}_size and initial_num_files
			weren't in an #ifdef HAVE_GETRUSAGE block.

  48.	[func]		use sysconf(_SC_OPEN_MAX) instead of getdtablesize()
			in all cases when USE_POSIX is defined.

  47.	[bug]		printupdatelog() was printing the post-update serial
			number in the zone section instead of the pre-update
			serial number.

  46.	[bug]		zp->z_serial wasn't being updated if a dynamic update
			changed the zone serial number.
			
  45.	[bug]		the SEQ_GT test in db_update was backwards.

  44.	[func]		merge_logs() didn't work because a 'break' wasn't
			removed when class and type lookups were converted
			to sym_ston.

  43.	[func]		evResetTimer() added to eventlib.

  42.	[bug]		incr_serial() doesn't need to call schedule_dump().

  41.	[bug]		reset_retrytimer() could clear a timer that had
			already been cleared.

  40.	[bug]		some zone data structures weren't freed if the zone
			was removed.

  39.	[func]		The eventlib timers module now uses a heap to
			implement the timer queue.

  38.	[bug]		dynamic zones weren't dumped if they were removed
			from the configuration file.

  37.	[func]		created the "load" logging category.

  36.	[func]		find_zone now uses a hash table instead of a linear
			search.

  35.	[bug]		we weren't scheduling a retry for dumps or soa serial
			increments that failed.

  34.	[func]		instead of doing all NOTIFY messages five seconds after
			loading completes, we now spread them out over up
			to fifteen minutes (the maximum delay depends on how
			many zones there are).

  33.	[func]		if there are too many qserials running, we'll try
			again in five to thirty seconds.

  32.	[bug]		z_dumptime wasn't getting set to zero after a
			zone dump.

  31.	[func]		Each zone now has a maintenance timer.  sched_maint()
			is gone.  The new programming rule: if you change
			zp->z_time, it's your reponsibility to ensure
			sched_zone_maint(zp) gets called.

  30.	[func]		short circuit PrintTimers evPrintfs if not debugging
			at a level where PrintTimers would print something.

  29.	[bug]		if a log message with a non-default category was
			logged to a default category channel which had
			print-category on, "default" was printed instead
			of the category name.

  28.	[func]		the performance of the main loop has been improved.

  27.	[bug]		NOTIFY messages weren't being delayed after a
			zone load.

  26.	[bug]		the eventlib category wasn't working if the channel
			wasn't the default debugging channel.

  25.	[func]		added the "maintenance" logging category.

  24.	[func]		periodic statistics dumps are now done using an
			eventlib timer instead of in ns_maint().

  23.	[bug]		names which have multiple CNAME records are illegal,
			but the server was allowing them.

  22.	[func]		convert to POSIX signals from eventlib signal handling;
			the eventlib API no longer provides signal support.

  21.	[func]		converted assert() to INSIST() so that the logging
			system (category "insist") will be used if a
			consistency check fails.

  20.	[bug]		the server could exit when it shouldn't, and without
			leaving a message or a core file, because it wasn't
			handling SIGPIPE.

  19.	[port]		Solaris has trouble if the size of the buffer used for
			IP_OPTIONS processing isn't 40 bytes.

  18.	[bug]		library Makefiles we were using 'ld' instead
			of ${LD}.  Added LD_LIBFLAGS.

  17.	[bug]		on at least one OS, ctime() can return NULL and
			this can cause problems.  We now call checked_ctime()
			in ns_glue.c, which returns "<unknown time>\n" if
			ctime() fails.

  16.	[bug]		some signal handlers were calling library routines
			which POSIX does not designate as safe for use by
			signal handlers.

  15.	[func]		finished conversion to new options scheme of
			name checking and inbound zone transfer parameters.

  14.	[func]		added os_change_directory().

  13.	[bug]		write_open() in ns_config.c wasn't checking if the
			file was regular before unlinking.

  12.	[func]		added "os" logging category.

  11.	[bug]		named-bootconf.pl used the deprecated channel name
			"default" instead of "default_syslog".

  10.	[bug]		named-bootconf.pl didn't understand continuation lines.

   9.	[bug]		remove -p from mkdep command in Makefiles for
			bin/named and bin/nslookup.

   8.	[bug]		add CDEBUG to Makefiles that link using ${CC}.

   7.	[bug]		timestamp and level were printed twice for file
			channels in lib/isc/logging.c.

   6.	[bug]		off by one with on level_text subscript in
			lib/isc/logging.c.

   5.	[bug]		broken channels sometimes weren't marked as broken
			in lib/isc/logging.c.

   4.	[bug]		didn't set foundname=0 after try_again: in ns_resp.c.

   3.	[bug]		update_pid_file() didn't put a newline after the pid.

   2.	[func]		minor log message tweaks in ns_config.c.

   1.	[bug]		zone names needed to be canonicalized in the parser.
	
	--- 8.1-T2B released ---
