(Originally written 2001.06.17)

Critical bug fixes:

* Looks like the code which "overwrites" an element in the cache fails to
  add the new element after overwriting the old data. (DONE 2001.08.12)

* Why don't records in the cache robin-robin rotate? (DONE 2001.08.11)

* Fixed bug where udperror did not correctly get the header id. (2001.08.11)
  Needs to be backported to the 0.5.xx tree.

* www.mexconnect.com does not list the A record with the CNAME record
  (unreproducable.  2001.08.08: It looks like the problem was with how 
   MaraDNS handled CNAME records.  Since I have somewhat improved the
   CNAME record handling, this problem should now be fixed)

* Asking for a non-A record which points to a CNAME still chases down the
  A record.  Fix. (DONE 2001.08.08.  It always gets both the CNAME and
  the potential corresponding A record, and only returns an A record when 
  an A record was aksed for)

* Change Rijndael Makefile, since NetBSD's make doesn't like it (DONE
  2001.08.07)

* linuxemu.retrofaction.com does not resolve.  Investigate and fix.
  (DONE 2001.08.03)

* Probems with resolving www.fairytale-abuse.com.  (one of the listed 
  nameservers does not have records for this domain, but instead gives out
  the list of root servers) (DONE 2001.07.28)

* Problems with resolving www.cs.cmu.edu and www.roaringpenguin.com
  (the case issue.  Again) (DONE 2001.07.28)

* The getzone client does not handle a zone with root nameservers correctly
  (DONE 2001.07.27)

* The getzone client sometimes outputs an @ instead of a | as a delimiter
  for a MX record she gets. (DONE 2001.07.27)

* tekheads.co.uk as a MX query does not work (DONE 2001.08.08.  This one
  was a nasty bug in the compression routine where it would incorrectly
  thing that a previous occurance of "www.bar.foo." could use "foo" in
  a subsequent hostname like "go.foo.boy.".  In fact, I need to now
  backport the fixes to the 0.5.xx tree, and make a 0.5.26 release which
  also needs to have improved RR_ANY handling)

* www.sfsite.com as an A query does not work (DONE 2001.07.08)

* Add support for multiple ips (e.g. the same format as ACLs, but ignoring the
  netmask) for the root name servers. (DONE)

* There is a bug where the production-test DNS server does not work after
  resolving queries for a while.  This needs to be found and fixed.
  (ongoing work, but much better since I wrote this) (removing from
  priority one list, since these kind of issues are most appropriately
  dealt with during the 0.8.xx Alpha-test cycle)

* Find out why www.monty.de does not resolve.  Perhaps we are exceeding the
  glueless level (currently 4) (Update: It is a subtle issue involving
  case sensitivity) (DONE 2001.07.07)

* Add support for CNAME records.  If an A record is not found in the
  cache, then look for a CNAME record before looking for a NS server.
  While this is done, it is not sufficient, in the case of stub resolvers,
  to merely have a CNAME returned.  The CNAME and the A record the CNAME
  points to need to be returned in the answer section. (DONE 2001.06.24)

* The code is leaky (has memory leaks).  Plug the memory leaks. 
  (ongoing work) (removing from priority one list, since these kind of 
  issues are better dealt with during the 0.8.xx aplha test cycle)

* The code does not stop "going up the tree" when it gets a good answer
  from a nameserver.  Fix. (DONE 2001.07.03)

* When a CNAME record is added to the cache, we do not spit out a UDP packet
  with the good data.  Fix. (DONE 2001.06.25)

* There are cases where the nameserver goes in a loop until the kernel has to
  kill it.  Fix this by making sure that we only perform N queries or lookups
  from the cache. (Fix: I found the code that was causing the bad behavior,
  and fixed it.  Maybe I should doa "only N queries hack, but that feels like
  fixing the symptoms instead of the underlying problem, which was, in this
  case, incorrect code to handle a circular linked list.  DONE 2001.07.04)

* Make sure that the custodian can not delete root nameserver entries
  (DONE 2001.07.07)

* Make the cache size user-configurable (DONE)

Code maintainibility issues:

* Make all the non-recursive code be code from the 0.5.25 branch
  (DONE)

Security issues:

* ACL list which limits the source IP of someone sending us a recursive query
  (DONE 2001.06.19)

* check the query ID of the answer we receive (DONE)

* Make the Rijndael key for the source port and source query truly random
  (DONE 2001.06.20)

* Handling of cache starvation (DONE 2001.06.21)

* Have the program exit if it is ever unable to allocate memory (DONE, make
  localizable)

* Allow MaraDNS to change her GID (in addition to the UID) (DONE 2001.07.03)

Other critical issues:

* Allow recursion to be performed when the user asked for recursion, and
  we have, for the requested hostname in question, delegation NS records.
  (DONE 2001.06.20)

* Negative caching (DONE)

* Customizable root name servers (Sorta DONE, the user can select a single
  root nameserver to query, 2001.06.25)

* The first nameserver we query should be randomly selected (DONE 2001.07.01)

* Recursive RR_ANY requests do not work. (Update 2001.07.03: This one is
  going to be tricky to fix.  Four possible solutions: 1) Change the core 
  code which adds elements to the cache to allow the qtype of the answer 
  be different than the qtype of the question.  2) Write up code which 
  can take two different records in the cache, and "sew" them together in
  to one big record in the cache 3) Write up code (similiar to how the
  authoritative code does it) which "sew"s together a big answer from 
  multiple different elements in the cache 4) Look for a MX, give that answer
  if its there, otherwise look for A, otherwise give out a NXDOMAIN.
  DONE 2001.07.06: I elected for option number 3, since all I had to do
  was make some modest changes to the already existing udpany program)

* Make sure we properly expire negative cache entries. (DONE 2001.07.01)

* Tell the user what IP we are binding to (DONE 2001.06.25)

Issues not essential to make the branch stable:

* Ignore leading or trailing whitespace in an ip_alias or ip_acl label

* Make the port number range that we bind to customizable

* Solaris support

"Wouldn't that be nice" issues (potential 1.2 material):

* Ability to disable case-insensitivity for queries sent to the
  recursor.

* We may (or may not) need a way of checking to make sure two different
  threads do not bind to the same port at the same time

* Check to see if getzone is compatible with BIND 8.2.4

* Make the cache size user-configurable (DONE)

* Round robin rotates of data in the cache (This is 1.2 material)

* Customizable root name servers which allow people to use different
  alternate registries for differnet TLDs.

* The ability to pritorize name servers.  Servers which do not respond to 
  queries at put at the bottom of such a list, minimizing the slowdown 
  caused by unresponsive servers.

Long-term issues:

* SQL support (Important--I have gotten three requests for this)

* The ability to have different ips which query the DNS server get different
  responses.

* ipv6 support (but not for A6 records.  See 
  http://cr.yp.to/djbdns/killa6.html)

