MaraDNS changelog
       maradns-0.9.15:

	   Added '-n' option to askmara so askmara can send the
	   same kinds of DNS queries that recursive DNS servers
	   send out (DNS queries that do not ask for recursion)

	   Fixed bug where 'make install' would overwrite
	   /etc/rc.d/init.d/maradns

	   Changed maxprocs limit to 200 and made it so exceeding
	   maxprocs does not cause MaraDNS to stop; instead
	   maxprocs is reset to 200.

	   (2002.03.06)

       maradns-0.9.14:

	   Rewrote debug.hostname tool; this will allow me to set
	   up the testbed to find the more obscure MaraDNS bugs.

	   (2002.03.03)

       maradns-0.9.13:

	   Fixed bug where debug_msg_level could only be changed
	   if recursion was enabled.

	   Changed stress testing simulation to simulate network
	   lag in processing DNS replies.

	   Made maxprocs have a hard limit of 100; making
	   maxprocs have a value of 400 results in MaraDNS
	   hanging on Linux systems.

	   (2002.02.25)

       maradns-0.9.12:

	   Cleanups performed so that all files to be audited to
	   be compiled with -Wall enabled without generating any
	   warnings.

	   Fixed ej2txt so that it no longer generates iso-8859-1
	   quites.

	   (2002.02.19)

       maradns-0.9.11:

	   Fixed bug where CNAME records obtained from the cache
	   would not work with stub resolvers, since the code
	   changed the question in the question section of the
	   reply.

	   'make debug' now works again.

	   (2002.02.11)

       maradns-0.9.10:

	   Fixed bug of case where there is a CNAME record, and
	   something happened when trying to get an A record for
	   the CNAME record. Previously, MaraDNS would think the
	   CNAME record had no A record until the CNAME record
	   was purged from the cache. Now, MaraDNS is smart
	   enough to store CNAME records with an A record of "a
	   'no such host' reply was found when we looked for an A
	   record"; and CNAME records without any corresponding A
	   record only stay in the cache for 30 seconds.

	   If data is already in the cache for a given record,
	   and the data has not expired, then there is no need to
	   spawn a thread to process the record; now MaraDNS no
	   longer does this. This should result in greater
	   stability and less memory usage, since many operating
	   systems do threads poorly.

	   askmara now can have a user-defined timeout

	   compile flags changed from -g to -O2

	   (2002.02.11)

       maradns-0.9.09:

	   Added data_structures.ej document, which describes the
	   internal data structures that MaraDNS uses.

	   Updated the mararc man page to describe the new
	   debug_msg_level variable

	   Added files needed to make MaraDNS RPM files in the
	   build/ directory.

	   (2002.01.27)

       maradns-0.9.08:

	   Fixed another bug in the ej2man script; it now
	   correctly zaps blockquotes inside ul.../ul lists.

	   Made changelog an ej-compatible document; this allows
	   the changelog to be an ASCII text file instead of an
	   HTML file which a lot of UNIX-heads will prefer.

	   Verified that MaraDNS 0.9.07 compiles on Darwin
	   (a.k.a. Mac OS X) "out of the box"; this means that
	   MaraDNS now compiles "out of the box" on Solaris;
	   Linux; and Darwin. It also should compile on Cygwin;
	   alas I do not have a working cygwin setup to verify
	   this on. Between these four OSes, we cover all of the
	   major flavors of UNIX: Linux is a little of
	   everything; Solaris is a "System V" UNIX; Darwin is a
	   BSD UNIX clone; and Cygwin is a pure POSIX
	   implementation.

	   (2002.01.25)

       maradns-0.9.07:

	   Added new runtime parameter which can be seen when
	   debug messages are enabled: The number of elements in
	   the DNS cache.

	   Added Makefile template which is a generate Makefile
	   for systems which do not have flock() support; make
	   this Makefile the default Makefile (instead of the
	   Linux Makefile).

	   (2002.01.24)

       maradns-0.9.06:

	   Fixed bug in maradns startup script where the script
	   would not correctly restart the MaraDNS processes.

	   New mararc parameter added: debug_msg_level; this sets
	   the level of information we can get about a running
	   MaraDNS process by sending special DNS queries to
	   MaraDNS.

	   (2002.01.23)

       maradns-0.9.05:

	   Revamping of the build process; placing most build-
	   related files in a directory named "build"; MaraDNS
	   now compiles and installs cleanly on Solaris; MaraDNS
	   now has a system startup script which MaraDNS invokes
	   at system startup time.

	   (2002.01.21)

       maradns-0.9.04:

	   Another documentation fix. Added new EJ tag: DTWIDTH

	   This version now compiles on Solaris; and should
	   compile on Darwin.

	   (2002.01.18)

       maradns-0.9.03:

	   Integrated Christian's spelling corrections and German
	   translations in to the MaraDNS documentation.

	   Minor bugfixes with the ej2man script.

	   (2002.01.17)

       maradns-0.9.02:

	   Document reorganization: MaraDNS now uses a new
	   document format, EJ (which I created myself for
	   MaraDNS documentation usage), which can be converted
	   in to HTML documents, text documents, or in to man
	   page sources. By having a stramlined documentation
	   format, MaraDNS' documentation will be easier to
	   manage, and easier to translate.

	   Since the ej format allows other files to be embedded
	   in documents, this eliminates having to revise
	   multiple versions of the same document

	   (2002.01.16)

       maradns-0.5.31:

	   Backporting of compression security patch to the
	   MaraDNS 0.5.xx branch.

	   (2002.01.10)

       maradns-0.9.01:

	   Fixed security problem with the compression code which
	   I found when performing an audit on the code. Other
	   cleanup of the compression code.

	   Updated the French documentation.

	   Added some more information to the MaraDNS tutorial.

	   Added (currently untested) Darwin (a.k.a. MacOS X)
	   support.

	   (2002.01.10)

       maradns-0.9.00:

	   Plugged some memory leaks in the recursive code.

	   Added Thomas Seyrat's French translation of the
	   documentation

	   Completed the tutorial

	   Fixed bug where the zoneserver needed the mararc file
	   specified to start.

	   Updated documentation

	   (2002.01.06)

       maradns-0.8.99a:

	   OK, so I was wrong about the first post-0.8.99 release
	   being MaraDNS 0.9.00.

	   This is simply MaraDNS 0.8.99 with a 2-line patch
	   which fixes a problem where MaraDNS 0.8.99 would
	   crash.

	   (2001.12.17)

       maradns-0.8.99:

	   Since I found a some security problems when working on
	   the MaraDNS-0.9.00 release, I am making this release
	   available which appears to addresses the security
	   problems.

	   Changes since 0.8.35:

	   * Jaakko's patch, in a modified form, has been
	     applied.

	   * Documentation touchups.

	   * Askmara timeout increased.

	   * Solaris recursive support dropped until I can get my
	     hands on my Solaris CDs (and a PC to install Solaris
	     on) in January (Solaris still has bugs which do not
	     exist in Linux).

	   * Updated test bed to handle NS referrals which point
	     nowhere

	   * Found and fixed a bug where MaraDNS would not close
	     UDP connections when sendto returned an error

	   * Fixed a problem that mhash_put_data had, where the
	     DNS cache could become inconsistant in certain
	     circumstances.

	   * Fixed two other spots in recursive.c (in two of the
	     add_closer routines) which could have potentially
	     caused inconsistant data in the cache.

	   * Got remove.rng to work again.

	   I have changed the version number to maradns-0.8.99 to
	   reflect the fact that the next release will almost
	   certaintly be MaraDNS 0.9.00.

	   (2001.12.08)

       maradns-0.8.35:

	   Made the stress tests in sqa/testbed more extensive;
	   they now crash recursive MaraDNS versions up to and
	   including 0.8.33.

	   Found and plugged some memory leaks that MaraDNS had.

	   Verified that MaraDNS can handle the stress
	   tests--MaraDNS was able to handle 80.000 queries
	   without crashing, and without growing after 10.000 or
	   so queries were processed.

	   (2001.11.17)

       maradns-0.8.34:

	   Found and removed another crash-inducing bug.

	   Modified askmara so that it generates somewhat
	   csv1-compatible output. Also modified the
	   debug.hostname tool so that it can handle the new
	   askmara output.

	   (2001.11.16)

       maradns-0.8.33:

	   Yipee! No, I'm not talking about the fact that the
	   evil Taliban are no longer in control of Kabul. I am
	   talking about the fact that I found and removed
	   another crasher bug in MaraDNS.

	   I hope that this is the last crasher bug. Time to
	   cross my fingers.

	   (2001.11.13)

       maradns-0.8.32:

	   This is the third beta test candidate for the
	   recursive MaraDNS, since people are reporting serious
	   stability problems with MaraDNS 0.8.30 and MaraDNS
	   0.8.31. While I am unable to reporduce the problems
	   offline, I was able to reproduce the problem online
	   (but only intermittently), and found some iffy-looking
	   code which may be the root of the problem.

	   This program passes all offline stress tests.

	   Also added an entry to the FAQ which answers an
	   unrelated question posted to the mailing list, and
	   added the changelog to the list of files placed in the
	   MaraDNS doc directory when a 'make install' is
	   performed.

	   (2001.11.13)

       maradns-0.8.31:

	   This is the second beta test candidate for the
	   recursive MaraDNS, since I found some bugs after
	   releasing MaraDNS 0.8.30. See the release notes for
	   MaraDNS 0.8.30 for more on the beta starus of MaraDNS.

	   Looking through the source code of the revamped hash
	   structure, I found a routine which was not revamped.
	   This would cause a bug in the case of having two or
	   more zone files which happen to hash to the same
	   value--only one of the zone files would load. Fixed. I
	   also deleted some routines which were based on the old
	   hash structure.

	   I have modified MaraDNS so the csv1 hash no longer
	   needs to be initialized, since the csv1 hash does
	   nothing but waste memory in recursive-only MaraDNS
	   configurations.

	   I have added another parameter: timeout_seconds, which
	   is how long to wait for a remote DNS server to reply.
	   This is mainly useful for slow networks which need
	   more than two seconds to get a reply from a DNS
	   server. Note that the larger this is, the slower
	   MaraDNS answers queries when a DNS server doesn't
	   respond to DNS requests.

	   In addition, I have begun work on the tutorial, which
	   currently describes how to use MaraDNS in recursive
	   mode, and gives an overview of DNS.

	   (2001.11.12)

       maradns-0.8.30:

	   This is a beta test candidate for the recursive
	   version of MaraDNS.	Which means that the only changes
	   I will make between now and the first beta release are
	   essential bug fixes (e.g. bugs not mentioned in the
	   man page), and a basic DNS tutorial, since I have
	   received two emails of the form "I don't know how to
	   do this DNS stuff, and could use some help".

	   The bad news is that, because of the excess of greedy
	   lawyers in the US, I have added the legal disclaimer
	   to all of the man pages for MaraDNS, and, in addition,
	   the legal disclaimer appears when MaraDNS is started.

	   The good news is that it is possible to have MaraDNS
	   not show the legal disclaimer when opening up; MaraDNS
	   tells you how to do this when showing the disclaimer.

	   The better news is that I have done a major revamping
	   of the MaraHash structure. This structure is a
	   structure that can both handle records being added,
	   and being removed from the hash. MaraDNS, as far as I
	   can tell from my offline tests, is now a great deal
	   more stable as a result.

	   In addition, I found another memory leak in the
	   recursive code, which I have plugged.

	   I have also performed some more documentation touch-
	   ups.

	   (2001.11.10)

       maradns-0.8.29:

	   OK, this is a "band-aid" release of MaraDNS. As I was
	   debugging the problem with MaraDNS crashing with the
	   new custodian, I discovered that the hash code is
	   fundamentally broken. Hence, I need to a major revamp
	   to the hash code. In short, the hash needs to have
	   each hash spot point to a linked list of elements.

	   In the meantime, I performed a band-aid fix to the
	   hash that, while not fixing the problem, makes the
	   problem slightly less bothersome.  This is an interim
	   release until I can really fix the problem this
	   weekend.

	   Updated the FAQ to reflect the slightly changed
	   procedure for joinging the MaraDNS mailing list
	   ("subscribe" now has to be in the subject line when
	   one wants to join the list).

	   (2001.11.08)

       maradns-0.8.28:

	   I fixed a bug in the fila-handling code where chains
	   of records were not being correctly put at the top of
	   the list.

	   I am still receiving reports that MaraDNS freezes up
	   after running for a while. I am unable to reproduce
	   this problem. I have carefully checked the recursive
	   code for potential deadlocks, finding none.

	   I suspect that there is a certain query which causes
	   thie problem.  Theirfore, I have added the ability for
	   MaraDNS to log all queries she receives in human-
	   readable format if verbose_level is three or higher.

	   While this results in some really huge logs, this will
	   hopefully allow me to pin down exactly which query
	   causes MaraDNS to lock up, allowing me to see where
	   MaraDNS locks up, allowing me to resolve the issue.

	   (2001.10.31)

       maradns-0.8.27:

	   I have added a lot of code which creates a circular
	   linked list. This circular linked list is used by the
	   custodian to erase elements from the cache which have
	   not been recently accessed.

	   The psudo-random number generator has been renamed to
	   'rng', and modified to be a hash-only primitive.
	   MaraDNS no longer has any code which can be directly
	   used for cryptographic purposes. Of course, the
	   compression function of the hash/prng is invertable,
	   and can be used as a stream cipher, but such is the
	   case for all secure hash functions and secure PRNGs.

	   Added a list of features I will not add to the 1.x
	   release of MaraDNS to the MaraDNS man page.

	   The default max_glueless_level is now 10, because some
	   real-world hosts need a max_glueless_level this high.

	   (2001.10.31)

       maradns-0.8.26:

	   I have updated the 0QuickStart file to be current with
	   the present state of MaraDNS.

	   The Linux makefile now supports "make debug", useful
	   for making a build with verbose debugging output.

	   Now that I have some decent *roff documentation, I
	   have done some improvments to the formatting of the
	   man pages. Not only do the man pages look a little
	   more attractive on the tty terminal, the man pages
	   also look good when made postscript man pages (troff
	   -man -Tps foo.1 > foo.ps).

	   In addition, since the -man macros are not documented
	   anywhere on the internet, I have somewhat deciphered
	   the tmac.an macro set, and written up some
	   documentation describing all of the -man macros.
	   (2001.10.15)

       maradns-0.8.25:

	   I have done an audit and an overhaul of how MaraDNS
	   calls locks in the recursive code. Hopefully, this
	   will resolve the issues with MaraDNS freezing after
	   running for a few days.

	   In addition, the recursive resolver now is better able
	   to handle instances where a NS record points to a list
	   of IPs.

	   More documentation updates. The man page for maradns
	   now has a guide on how to set up a firewall to allow
	   maradns packets through, and a list of known issues
	   where MaraDNS breaks the DNS spec.

	   The crypto-emasculated version of MaraDNS no longer
	   binds the source port of outgoing UDP queries. This is
	   because the underlying OS may generate secure source
	   port numbers when the source port is not specified in
	   the application.

	   (2001.10.12)

       maradns-0.8.24:

	   I have created a tool, called debug.hostname in the
	   tools directory, which gives a very verbose trace
	   trying to look up a given hostname.	This will
	   hopefully help me to debug and fix problematical
	   hostnames.

	   I have also created a tool, called faq2man which
	   converts the HTML faq in to a format suitable for
	   embedding in to a man page.	This makes the FAQ
	   section of the MaraDNS man page more attractive

	   I have made the maximum glueless level user-
	   configurable, since it looks like some hosts do not
	   resolve with the old hard-wired default of 4. I have
	   also made the maximum number of queries performed
	   total in a recursive lookup user-configurable

	   I have added more helpful error messages which tell
	   the user what to fix in their mararc file if MaraDNS
	   can not initialize the DNS cache or the random number
	   seed. The init_cache() and init_crypto() failed error
	   messages should not be visible any more.

	   Documentation update: There is now a man page
	   description of the mararc file. The CREDITS and FAQ
	   files have been updated, in addition to almost all man
	   pages. For example, I have gotten rid of the two or
	   three pages of ugly troff syntax that Perl's pod2man
	   program generates in the Man pages which had this.

	   make run without ./configure now works again.

	   Since MaraDNS used to act in a different manner than
	   Python 1.5.2 with respect to multiple declations of
	   the same index of the same dictionary variable, I have
	   changed MaraDNS so that she exits with a fatal error
	   should this occur, showing the user the line with the
	   problem.

	   Made the error message which pops up when a csv1 zone
	   file pointer is incorrectly formatted more helpful.

	   There was a minor security weakness with the PRNG
	   which would pop up if the seed was a fixed file, two
	   copies of MaraDNS used the same seed file, and the two
	   files were started at the same time. This has been
	   fixed.  The seed is now exclusive-ored with the
	   process ID before generating numbers.

	   More trimming of unused routines in the AES code. The
	   AES code now only supports encryption with a 128-bit
	   key and block size in ECB mode--the only way we use
	   AES in MaraDNS.

	   For people who can not legally have any kind of
	   cryptography in their code (French citizens, etc.),
	   there is now a script in the tools directory,
	   remove.aes which removes all crypto code. Note that,
	   while the main MaraDNS suite will still compile after
	   running this, some programs in the tools/misc, test
	   and sqa directories will no longer compile. make still
	   works, of course. Note that removing this code does
	   make MaraDNS more suspectable to a spoofing attack.

	   (2001.10.08)

       maradns-0.8.23:

	   Star records which point to CNAMEs are now completely
	   supported.

	   Christophe Colle pointed out that the reason MaraDNS
	   was leaking memory when making threads on Solaris was
	   because MaraDNS was not using pthread_attr_destroy.
	   Hopefully, adding this will make MaraDNS not leak on
	   Solaris.

	   Improvment to the "make install" process: The default
	   configuration looks for local man pages in
	   /usr/local/share/man if /usr/local/man doesn't exist.
	   This is to get around some Linux distributions which
	   don't have /usr/local/man

	   Minor security tweak to the routine that generates the
	   16-bit secure psudo-random number.

	   The AES hasher now correctly generates a 128-version
	   of the hash specified in Bram Cohen's proposed AES
	   hash standard. Thanks to Bram for providing test
	   vectors for the 256-version of the hash.

	   maradns --version now also includes the build system
	   and date

	   (2001.09.27)

       maradns-0.5.30:

	   Two bugs have been fixed: A bug where a UDP error
	   message normally did not have the correct query ID,
	   and a bug where, in certain cases, MaraDNS would
	   return a UDP error instead of a SOA "not there" reply.

	   Also, the documentation has been updated. (2001.09.25)

       maradns-0.8.22:

	   Document reorganization: I am starting to move the
	   formats of the data files to separate man pages. This
	   will make each man page smaller and more convenient to
	   use.

	   Improved CNAME support: MaraDNS now has partial
	   support for star records that point to a CNAME.

	   Less code in the aes directory: I now have a program
	   which generates the AES tables during the build
	   process, since the code to generate those tables is a
	   good deal smaller than the tables themselves. There is
	   no slowdown, since it is a one-time calculation done
	   during the build process.

	   maradns --version (and zoneserver --version) now do
	   the right thing: Print out the version number and exit

	   The installer now removes the zoneserver and the
	   maradns server before installing the new ones to get
	   around the "text file busy" problem.

	   There was a subtle bug with returning "not there" SOA
	   replies and case insensitivity. This bug has now been
	   fixed. This bugfix also needs to be folded back in to
	   the 0.5.xx branch.

	   It is now possible to change the class of the query
	   with the getzone client if possible. Next: Document
	   this new feature. (2001.09.24)

       maradns-0.8.21:

	   First, the bad news.

	   There is a known issue with MaraDNS having memory
	   leaks when used as a recursive nameserver on the
	   Solaris operating system. This problem does not exist
	   in Linux. Since I do not have ready access to a
	   Solaris box to develop on, I can not resolve this
	   issue. Until a Solaris developer steps up to bat and
	   fixes this for me, I am forced to disable recursive
	   DNS serving under Solaris.

	   I should have ready access to a Solaris again in
	   December, when I return to the United States. I have
	   CDs of Solaris eight up there, in addition to friends
	   with Solaris boxes.

	   Now, the good news.

	   I have updated the example mararc files to be
	   consistant with the documentation. In particular, I
	   now have two "out of the box" working mararc files.
	   One for authoritative name serving, and another for
	   recursive nameserving.

	   I have also updated the installer script to return an
	   error if the directories to put the MaraDNS files in
	   do not exist. In addition, MaraDNS will install all of
	   the MaraDNS documentation in the directory specified
	   by the variable DOCS in install.locations.

	   Finally, I have updated the FAQ, the man pages, the
	   mararc.format documentation, and am working on making
	   separate man pages which describe csv1 zone files and
	   the mararc file. (2001.09.20)

       maradns-0.8.20:

	   When doing some tests with the AES engine in MaraDNS,
	   I found that I inadvertently created a minor security
	   problem w.r.t. ASCII nulls in the AES key. Basically,
	   an "out of the box" MaraDNS configuration had a 1 in
	   16 chance of the aes key not having a full 128 bits of
	   entropy.

	   I also corrected a minor fault in the aes128 hasher
	   (it did not previously fully follow the spec, since it
	   counted bytes, not bits), a minor fault with the top-
	   level Makefile (which did not clean up tools/misc with
	   a make clean), and did some minor manpage clean-up.
	   (2001.09.18)

       maradns-0.8.19:

	   Updated the CREDITS file. If you have contributed to
	   MaraDNS in any way, no matter how small, and are not
	   in this file, please let me know so I can credit you.

	   Removed references to routines in the aes/ directory
	   which MaraDNS and aes128 do not use. The aes code is
	   now encrypt-only.

	   Added a test, based on Brian Gladman's AES reference
	   code, which verified that the AES routines are working
	   correctly.

	   Some cleanup, corrections, and revisions of the man
	   pages. I figured out how to turn off hyphenation and
	   justifaction for man pages, and have hence disabled
	   these in all of the MaraDNS man pages.

	   Streamlining of the build process: ./configure; make;
	   make install now does "the right thing". In addition,
	   make uninstall also automagically does the right
	   thing.

	   <STRONG>Important:</STRONG> make install now, by
	   default, installs files in /usr/local/sbin,
	   /usr/local/bin, and man pages in /usr/local/man. If
	   one has previous installs of MaraDNS in other
	   locations, please change the install.sh script to the
	   desired location of the MaraDNS files.  (2001.09.17)

       maradns-0.8.18:

	   Added code which keeps track of allocated memory,
	   allowing me to hunt down and eliminate memory leaks.
	   Found four memory leaks in the recursive code:

	   * in_bailiwick did not properly destroy the tempory
	     string "get"

	   * When a negative answer was given, query_nameserver
	     did not correctly deallocate some temporary strings

	   * recurse_call did not correctly deallocate the
	     temporary string used for glueless queries

	   * The code that set up the root nameservers in the
	     cache had two strings which were used to help set up
	     the root nameservers. This strings were not
	     deallocated after being used. This was a one-time,
	     and not continuous, leak.

	   (2001.09.15)

       maradns-0.8.17:

	   Incorperated a modified form of Franky's patch which
	   adds the max_tcp_procs kvar to the program. Added some
	   non-DNS releated tools to the "tools" directory. Clean
	   up of the documentation. (2001.08.28)

       maradns-0.8.16:

	   More regression testing: Added test where it sends an
	   answer to a server.	If the server replies, this is
	   considered an error condition. Cleaned up the
	   recursive code (got rid of some XXX to dos): Mainly,
	   MaraDNS sends an error if she can not spawn a thread.
	   Documentation reorganized.  (2001.08.16)

       maradns-0.8.15:

	   Made an 'asktest' program which will be used for
	   regression testing.	(2001.08.15)

       maradns-0.8.14:

	   Added support for a counter that counts the children
	   in the Zone server.	(2001.08.13)

       maradns-0.8.13:

	   Askmara doesn't display debug messages which can mess
	   up terminals to the end user any more.

	   When an element in the cache is overwritten, the new
	   data is now added to the cache.

	   New feature: MaraDNS can now blacklist spammer-
	   friendly DNS servers.

	   (2001.08.12)

       maradns-0.8.12:

	   Fixed bug in udperror which caused it to spit back the
	   wrong query ID.

	   Added code to use a counter to count the number of
	   threads. If we have more than maxprocs threads going
	   on at the same time, we refuse to launch a thread.

	   Cached data now will go through round-robin rotates.

	   MaraDNS now compiles again when the locale is set to
	   Spanish (though I still need more Spanish
	   translations. Maybe when I am in Mxico, I can get
	   help down there) (2001.08.11)

       maradns-0.5.29:

	   Backported some bug fixes with zone file handling back
	   to the "stable" authoritative-only branch of MaraDNS.
	   (2001.08.10)

       maradns-0.8.11:

	   Improved handling of CNAME records in the cache. BSD-
	   dependent routines (which are currently unused in
	   MaraDNS) are not compiled if we are compiling on a
	   Solaris box. (2001.08.08)

       maradns-0.8.10:

	   I have redone the makefile in the rijndael directory,
	   some some makes (notably, the one NetBSD has) did not
	   like the original Makefile.	Marked some
	   unreproducable bugs as unreproducable.  (2001.08.07)

       maradns-0.8.09:

	   After much work (handling lame delegations better and
	   fixing a bug in substring_issame_case), I have managed
	   to get the host name linuxemu.retrofaction.com to
	   resolve.

	   Completely unreleated to MaraDNS, I have added a
	   SirCam filter to the tools directory.  (2001.08.03)

       maradns-0.8.08:

	   More bug swatting:

	   * The problem that was causing www.fairytale-abuse.com
	     to not resolve is fixed. (Better lame delegation
	     handling)

	   * The problem that was causing www.cs.cmu.edu and
	     www.roaringpenguin.com to not resolve is fixed
	     (Better case sensitivity handling)

	   (2001.07.28)

       maradns-0.8.07:

	   Fixed the zoneserver so it too only answers questions.
	   Fixed two bugs in the getzone client: One where it
	   would handle MX records incorrectly, another where it
	   would hand the root zone incorrectly (this bug was
	   actually in the Queries.c file). (2001.07.27)

       maradns-0.8.06:

	   We now check to make sure we only answer questions.
	   (2001.07.18)

       maradns-0.8.05:

	   Added support for multiple root name servers. Also
	   changed the example mararc file to have the root
	   servers for eight different top level domain
	   registries listed. (2001.07.16)

       maradns-0.5.27:

	   Back porting bug fixes to the authoritative-only
	   branch of MaraDNS.  (2001.07.15)

       maradns-0.8.04:

	   MaraDNS now sucessfully compiles on Solaris. Thanks to
	   Franky Van Liedekerke for providing the pointers on
	   how to do this, and to Danny for access to a Solaris
	   machine to compile MaraDNS on.  (2001.07.14)

       maradns-0.8.03:

	   Solaris support added, but does not fully work, added
	   disclaimer, improved code which drops group
	   privledges.	(2001.07.13)

       maradns-0.8.02:

	   Another bug fix: If a zone did not have a record of a
	   given type at the "top" of the zone, MaraDNS would
	   attempt to perform recursion instead of returning a
	   SOA record in the authority section. Fixed. Also needs
	   to be fixed in the 0.5.xx branch. Thanks to D Richard
	   Felker III for finding the bug. (2001.07.10)

       maradns-0.8.01:

	   Touch up bug fix: MaraDNS failed to close open file
	   descripters when reading zone files. Fixed. Also needs
	   to be fixed in the 0.5.xx series.  Thanks to Boris
	   Manojlovic for finding the bug.  (2001.07.09)

       maradns-0.5.26:

	   Fixed a couple of long-standing bugs found while
	   debugging the recursive version of MaraDNS:

	   * Fixed a subtle bug in the DNS compression code that
	     would only show up in certain rare circumstances.

	   * Fixed a bug in the handling of ANY DNS queries.

	   (2001.07.08)

       maradns-0.8.00:

	   This is the first alpha release of the recursive
	   nameserver. I fixed a bug in the compression code, and
	   fixed another bug which was causing problems with
	   glueless name server entries. (2001.07.08)

       maradns-0.7.22:

	   www.monty.de now successfully resolves; fixed bug
	   where the custodian could potentially erase the root
	   name server entry, making MaraDNS non-functional as a
	   root nameserver until restarted. (2001.07.07)

       maradns-0.7.21:

	   Type ANY queries now work for recursive queries.
	   Finally. (2001.07.06)

       maradns-0.7.20:

	   Another late night double feature MaraDNS show. There
	   was a really nasty bug which Jaakko pointed out to me.
	   I found the culprit, and fixed the bug.  (2001.07.04)

       maradns-0.7.19:

	   Begun work on some of the infastructure changes needed
	   to make MaraDNS sucessfully resolve recursive ANY
	   queries. Added maradns_gid support.	Other pieces of
	   code cleanup, primarily better handling of RR_ANY when
	   acting as an authoritative nameserver (should I fold
	   these changes in to a 0.5.26 release eventually?).
	   (2001.07.04)

       maradns-0.7.18:

	   Re-arranging of the engine that returns an answer from
	   the cache. We check the cache expire of a "host not
	   here" reply. Updated the documentation so that it is
	   the 0.5.25 documentation with the recursive stuff
	   added as needed. (2001.07.01)

       maradns-0.7.17:

	   We now choose a random DNS server to query when we are
	   looking for an answer. (2001.07.01)

       maradns-0.7.16:

	   Updated documentation to include information on how to
	   set up a recursive nameserver. Fixed bug where
	   multiple levels of CNAME indirection were not being
	   properly followed. It is now possible to go to
	   www.imdb.com or groups.yahoo.com (both cases of
	   multiple levels of CNAME indirection).  (2001.06.30)

       maradns-0.7.15:

	   I have added support for negative caching: If a given
	   host name does not exist, the program sends a "not
	   here" to the stub resolver.	I also fixed a bug which
	   was causing out-of-bailiwock queries to not work.
	   (Having to do with the case-sensitivity issue). Next:
	   Getting www.monty.de to work, caching ANY replies.
	   (2001.06.28)

       maradns-0.7.14:

	   MaraDNS now works as a recursive nameserver again. The
	   root nameserver is now user-configurable. CNAME
	   returns queries in a form that a stub resolver can now
	   understand. (2001.06.25)

       maradns-0.7.13:

	   After much tinkering with the code, I have managed to
	   make it so that a CNAME record in the cache returns
	   the corresponding A record (note: only one A record!)
	   along with the CNAME record. This should allow hosts
	   like www.yahoo.com to work when this is used as a stub
	   resolver.  (2001.06.24)

       maradns-0.7.12:

	   More work done on plugging memory leaks. Working on
	   code that will determine the ip for a given CNAME
	   record, since stub resolvers are not smart enough to
	   do a second A query themselves when they see a CNAME
	   record. Also some minor cleanups that Franky Van
	   Liedekerke suggested. (2001.06.22)

       maradns-0.7.11:

	   Finished work on the custodian. Now, I need to make
	   sure the custodian works. Also fixed CNAME support so
	   it now works, plugged a couple more memory leaks, and
	   revised the offline testbed to have a CNAME record.
	   (2001.06.21)

       maradns-0.7.10:

	   Bigfixes: I have plugged some memory leaks, and added
	   code which will (hopefully) allow recursive queries to
	   cname records to work.  I have also done some more
	   work on the "custodian" code.  (2001.06.21)

       maradns-0.7.09:

	   Bugfix release: MaraDNS now closes the sockets that
	   she opens when performing recursive queries. This
	   stops the open sockets from piling up. Also, I have
	   begun work on the "custodian" code: Code the reduces
	   the number of elements in the cache when the user-
	   defined cache runs low on space. (2001.06.20)

       maradns-0.7.08:

	   I have made the RNG truly random, and I have added
	   code to the resolution algorithm which allows it to
	   perform recursive queries when the only authoritative
	   records are NS delegation records. Also, updates to
	   the todo list. Changed cc to gcc in all the makefiles
	   to make MaraDNS more Solaris-friendly. (2001.06.20)

       maradns-0.7.07:

	   I have added ACLs which limit who is allowed to make
	   recursive queries.  I have also begun work on making
	   the random number seed truly random.	 (2001.06.19)

       maradns-0.7.06:

	   I have updated the non-recursive code to use code from
	   MaraDNS 0.5.25, which adds a number of features from
	   there (round robin rotation, etc.)  I have alos made a
	   list of things which need to be done before I can make
	   this a beta candidate for a 1.0 release. In addition,
	   the code now makes sure that the query ID we receive
	   is the same one we sent out.	 I have also started work
	   on a CREDITS file, updated the FAQ, and added a couple
	   of interesting (if not MaraDNS-specific) Perl scripts
	   to the archive.  (2001.06.17)

       maradns-0.7.05:

	   The DNS server now has a psudo-random number generator
	   which uses the Rijndael algorithm. This PRNG
	   randomizes both the query ID and (I believe) the
	   source port of any and all DNS queries. This PNRG now
	   needs to become secure (by setting up either a random
	   or a user-defined Rijndael key) (2001.06.16)

       maradns-0.7.04:

	   There were some bugs in the RR expire code. I have
	   found those bugs, fixed them, and now cache expirery
	   should work. (2001.06.12)

       maradns-0.7.03:

	   This release has implemented the ability to expire
	   records from the cache.  All Name server records have
	   a fixed expire of 1 day (this can be changed by
	   changing one #define in recursive.c), but all other
	   records have an expire time based on the TTL of the
	   record.  I have not yet tested DNS RR expire.
	   (2001.06.11)

       maradns-0.7.02:

	   Milestone: This is the first release of MaraDNS that
	   works as a recursive nameserver with the real root
	   nameservers. Fix: Changing only the case of the first
	   nameserver, add negative caching, then start adding
	   security (good RNG for the query ID and source port,
	   recursive ACL), then start making the root servers
	   customizable (including being able to have different
	   TLDs have different root servers). (2001.06.11)

       maradns-0.7.01:

	   Beginning work on making MaraDNS both case-insensitive
	   and able to preserve case. (2001.06.06)

       maradns-0.7.00:

	   Albert Prats kindly provided Spanish translations for
	   various text files.	To get MaraDNS to compile in
	   Spanish instead of English, type in

	   MaraDNS now can handle gluelessness. I am bumping up
	   the minor version number to reflect that MaraDNS now
	   has recursive nameserving capabilities, albeit without
	   some security features. Next: Work on cache flushing
	   and security.  (2001.06.03)

       maradns-0.6.21:

	   Now, if one of the IP nameservers is bad, we will try
	   the next nameserver in the chain. Next: Add the code
	   to handle out-of-bailiwick nameservers (2001.06.01)

       maradns-0.6.20:

	   Two big improvments: 1) The recursive resolver can now
	   handle multiple A records (MaraDNS deliberately
	   ignores NS and AR records. Note that it is a good idea
	   to give out the corresponding A record for a CNAME
	   record [To do]) 2) There is now code which makes a
	   local copy of the chain of NS records in an
	   authoritative-only section, which will allow me to
	   make thread-safe code which will query other
	   nameservers, should a given nameserver not function
	   (e.g. Someone changed a computer's IP. In the three
	   weeks it can take Network Solutions to update the
	   records on the root nameservers, we still want to be
	   able to reach the domain in question by using the
	   other listed nameserver for the domain)

       maradns-0.6.19:

	   Not only did I get to spend some time with my family
	   this memorial day weekend, I also was able to get
	   Linux up and going on my new laptop.	 Took two
	   installs, but everything except SSL in Konqueror now
	   works.  I also, now that the new laptop is (mostly) up
	   and going, have gotten a chance to work on MaraDNS.
	   This new laptop, since it has a working battery,
	   should speed up MaraDNS development--I can now work on
	   MaraDNS on the train.  The latest version is able to
	   go to a remote server and give us an incomplete answer
	   (only one RR) based on what the remote server tells
	   us.	(2001.05.29)

       maradns-0.6.18:

	   Some minor bugfixes and tweaks: The nameserver will
	   now query name servers until it is able to find an
	   answer, then it will go in a loop.  (2001.05.24)

       maradns-0.6.17:

	   A fairly significant milestone: This version of
	   MaraDNS is able to read data from an authoritative
	   nameserver, and, based on that data, determine the IP
	   of a nameserver closer to the answer we are looking
	   for. (2001.05.21)

       maradns-0.5.24:

	   Two minor bug fixes: The erre-con-erre-
	   cigarro.maradns.org query will work, even if
	   authoritative nameservers for the root are set up;
	   MaraDNS now will run on systems which do not support
	   the setrlimit system call, such as the GNU Hurd.
	   (2001.05.21)

       maradns-0.5.23:

	   Three bug fixes: MaraDNS now works with RRs for the
	   root namserver (MaraDNS, in fact, can now be a
	   nameserver for the root), the askmara tool now has a
	   timeout (and can ask questions about the root
	   nameserver), and the output that MaraDNS generates is
	   unbuffered. (2001.05.19)

       maradns-0.6.16:

	   I have added a lot more debugging stuff as I hunt down
	   why it is RRs are not being added to the dns RR cache.
	   I think I am pretty close to pinning it down, and hope
	   tomorrow's release can add RRs to the big cache.
	   (2001.05.18)

       maradns-0.6.15:

	   I added a simple interactive debugger which lets me
	   see the state of the DNS cache hash table. Looks like
	   the data from the server is not being added to the
	   cache. Next: FInd out why not. (2001.05.17)

       maradns-0.6.14:

	   An unexpected event forcing me to go home late
	   yesterday caused there not to be a release of MaraDNS
	   yesterday.

	   Fixed bug where it was not correctly appending the
	   class to the server that it was querying. Temporarily
	   disabled the actual threading while development work
	   on the recurseor continues. Next: Make sure that the
	   cache is properly seeded from data from authoritative
	   nameservers.	 (2001.05.17)

       maradns-0.6.13:

	   Fixed bug where it was choosing the wrong IP to query.
	   Automated the process of setting up a testbed (which
	   is completely self-contained), so I can debug this on
	   a variety of machines. Next: Fix the timeout bug.
	   (2001.05.15)

       maradns-0.6.12:

	   MaraDNS compiles again. Now, I need to go through all
	   the code and iron out all of the bugs. Testbed of
	   MaraDNS configuration files added. (2001.05.14)

       maradns-0.6.11:

	   More work on the recursive stuff done. (2001.05.13)

       maradns-0.6.10:

	   More work on the recursive stuff done. (2001.05.12)

       maradns-0.5.22:

	   Bugfix release: non-0 opcodes now correctly return a
	   "NOT IMPLEMENTED" error message. Also, some minor
	   cleanup in the documentation: star records
	   (*.example.com, etc.) are now documented. (2001.05.10)

       maradns-0.6.09:

	   add_closer_jsddip, add_closer_js, and add_closer_jsip
	   now have a third argument: Whether to overwrite or
	   append to already existing data in the cache. Since
	   the autoconf stuff doesn't work with the development
	   branch, I got rid of it for now. Once this code gets
	   stable, one of the Debian packagers can feel free to
	   add the autoconf stuff again.  (2001.05.10)

       maradns-0.6.08:

	   Added in_bailiwick and cmp_dnames functions to
	   recursive.c (2001.05.09)

       maradns-0.5.21:

	   Feature enhancment: Added round-robin rotation of
	   records and limits to the number of records that can
	   be displayed for a given answer to MaraDNS.	This will
	   be the last feature enhancment for the 0.5.xx tree.
	   All changes in the 0.5.xx tree will now be bug fixes.
	   Now, back to work on the 0.6.xx series, starting off
	   with integrating the 0.5.xx changes. (2001.05.07)

       maradns-0.5.20:

	   Feature enhancment: We now make sure that the same AR
	   record does not show up twice in the AR section.
	   Thanks to Phil Homewood for pointing out this problem.
	   (2001.05.06)

       maradns-0.5.19:

	   Bugfix release: We now follow chains of records in the
	   AR section.	The authoritative bit for an "RR_ALL"
	   request is now determined by the authoritative bit in
	   the first RR found. Thanks to Phil Homewood for
	   finding these bugs. (2001.05.06)

       maradns-0.6.07:

	   The askmara tool now uses select() to time out after
	   three seconds.  Added a lot of code to the recursive
	   lookup. I now send a query to the remote server, and
	   receive the reponse. Next: Code to process the
	   response and add the data to the local cache.
	   (2001.05.06)

       maradns-0.6.06:

	   The recursive code now sucessfully seeds a root
	   nameserver in to the cache.	Next: Code to query and
	   get the response form that nameserver.  (2001.05.05)

       maradns-0.6.05:

	   Heavy debugging of the recursive stuff going on. It is
	   not fixed, but I wanted to post something, however
	   miniscule, before going to bed.  (2001.05.04)

       maradns-0.5.18:

	   Addded new feature: default_rrany_set, which is used
	   to change the RRs returned when a RR_ANY query is sent
	   to the MaraDNS server. Thanks to Phil Homewood who
	   pointed out that this is sometimes needed.
	   (2001.05.03)

       maradns-0.6.04:

	   recursive text documented updated to reflect changes I
	   made on the train.  Some other cleanup. (2001.05.02)

       maradns-0.6.03:

	   Wrote up document detailing the recursive algorithm
	   that MaraDNS' recursive resolver will use. Integrated
	   the 0.5.17 bugfixes in to the development tree.
	   (2001.05.01)

       maradns-0.5.17:

	   Fixed bug in MaraDNS' handling of zone transfers where
	   the response is a single big RR instead of multiple
	   small RRs. Some other small bugfixes. (2001.04.30)

       maradns-0.6.02:

	   I have the general structure of how I want to do the
	   recursive name serving in place. The devil, however,
	   is in the details.  (2001.04.28)

       maradns-0.6.01:

	   Fixes in MaraDNS-0.5.16 incorporated in to development
	   branch. Slowly making progress on the recursive code.
	   (2001.04.26)

       maradns-0.5.16:

	   Fixed bug in the zoneserver's handling of replies
	   longer than 255 octets in length. Fixed problem in
	   manpage and updated man page. Special thanks to Phil
	   Homewood for finding problems the zone server was
	   having.  (2001.04.26)

       maradns-0.6.00:

	   Work on making MaraDNS recursive begins. (2001.04.26)

       maradns-0.5.15:

	   Fatal error messages caused by failed system calls now
	   show the user the error message that the system gave,
	   in addition to MaraDNS' error message. (2001.04.26)

       maradns-0.5.14:

	   Added "no_fingerprint" feature which minimizes the
	   MaraDNS-specific features, making it more difficult to
	   determine which DNS server one is running.
	   (2001.04.23)

       maradns-0.5.13:

	   Manpage for maradns added. (2001.04.22)

       maradns-0.5.12:

	   Added better support for CNAME records: If the CNAME
	   record points to an A record, and we have the A record
	   "on file", MaraDNS will add the CNAME record to the ar
	   section of the reply. Also added support for getting
	   the version number for maradns via a 'erre-con-erre-
	   cigarro.maradns.org.' TXT query. Set things up so we
	   can both a autoconf-based and a non-autoconf-based
	   build process, and we can switch between the two.
	   Next: Branch off to development again, because I need
	   to get the zone server multithreaded. (2001.04.22)

       maradns-0.5.11:

	   Tollef Fog Heen generously ran autoconf for MaraDNS.
	   The build process now consists of './configure;make'".
	   (2001.04.21)

       maradns-0.5.10:

	   Code cleanup: I added -Wall as an option in the libs,
	   dns, and server directories. Cleanup of all the
	   warnings that -Wall generated. Added /etc/mararc and
	   /var/maradns/db.example.com to RPM file. (2001.04.20)

       maradns-0.5.09:

	   The server crashes were causes by pointers that were
	   not correctly initialized to zero. The pointers
	   causing the crash have been initialized, and hopefully
	   this one will be crashproof. Next: Look for other
	   incorrectly initialized variables. (2001.04.20)

       maradns-0.5.08:

	   Begin a "stable" brach for the only-authoritative non-
	   threaded nameserver. Changed compiler option from -g
	   to -O2. Made RPM of MaraDNS-0.5.08. (2001.04.19)

       maradns-0.5.07:

	   Plugged some memory leaks in the zoneserver which,
	   while not currently a problem, could have been a
	   problem if I had started coding threads before
	   plugging the memory leaks. Some of the leaks were is
	   the js_string library, so that code base is a lot
	   cleaner now. Made the functions in ParseCsv1.c thread-
	   safe. My friend Fatma generously supplied a German
	   translation of the error strings in MaraDNS_en.h--we
	   now have a MaraDNS_de.h which, while not perfect, will
	   be appreciated by the Germans.  (2001.04.18)

       maradns-0.5.06:

	   The zone server for MaraDNS can now be run from inetd.
	   Due to the security implications of this (MaraDNS' IP-
	   based ACLs stop working when run from inetd), this
	   will be an undocumented feature. (2001.04.18)

       maradns-0.5.05:

	   Phil Homewood generously supplied a patch that makes
	   this compile on FreeBSD. In addition, he fixed a bug
	   in the Makefile in dns/Makefile which made it so
	   bobbit.c compiles instead of using the Linux-specific
	   object file (Which I didn't catch, since make clean
	   didn't remove it and make didn't recreate it). I also
	   fixed a bug in getzone.c which was introduced when I
	   put the string literals in a language-specific file.
	   (2001.04.17)

       maradns-0.5.04:

	   Added more support for dotted decimal IPs in NS,
	   CNAME, and MX records. Added handles for code which
	   will warn the user of the presence of these dotted-
	   decimal IP records. Fixed bug where js_copy was not
	   returning an appropriate value on success (2001.04.17)

       maradns-0.5.03:

	   If a "give me all records for a given hostname" query
	   appears, MaraDNS will now look for a CNAME with the
	   same hostname, returning only that if found (and she
	   will only look for a CNAME if an A and MX were not
	   found), and if A, MX, and CNAME records are not found,
	   MaraDNS will see if the person entered a dotted
	   decimal ip and respond appropriately.  (2001.04.16)

       maradns-0.5.02:

	   Most of the text messages that MaraDNS' various
	   utilities generate have been moved to separate files,
	   which will make localization easier. (2001.04.16)

       See previous change log entries
