NEWS
User-visible changes in udns library.  Recent changes on top.

0.4 (Jan 2014)

 - bugfix: fix a bug in new list code introduced in 0.3
 - portability: use $(LD)/$(LDFLAGS)/$(LIBS)

0.3 (Jan 2014)

 - bugfix: refactor double-linked list implementation in udns_resolver.c
   (internal to the library) to be more strict-aliasing-friendly, because
   old code were miscompiled by gcc.

 - bugfix: forgotten strdup() in rblcheck

0.2 (Dec 2011)

 - bugfix: SRV RR handling: fix domain name parsing and crash in case
   if no port is specified on input for SRV record query

 - (trivial api) dns_set_opts() now returns number of unrecognized 
   options instead of always returning 0

 - dnsget: combine -f and -o options in dnsget (and stop documenting -f),
   and report unknown/invalid -o options (and error out)

 - dnsget: pretty-print SSHFP RRs

 0.1 (Dec 2010)

 - bugfix: udns_new(old) - when actually cloning another context -
   makes the new context referencing memory from old, which leads
   to crashes when old is modified later

 - use random queue IDs (the 16bit qID) in queries instead of sequentional
   ones, based on simple pseudo-random RNG by Bob Jenkins (udns_jran.[ch]).
   Some people believe that this improves security (CVE-2008-1447).  I'm
   still not convinced (see comments in udns_resolver.c), but it isn't
   difficult to add after all.

 - deprecate dns_random16() function which was declared in udns.h
   (not anymore) but never documented.  In order to keep ABI compatible
   it is still exported.

 - library has a way now to set query flags (DNS_SET_DO; DNS_SET_CD).

 - dnsget now prints non-printable chars in all strings in DNS RRs using
   decimal escape sequences (\%03u) instead of hexadecimal (\%02x) when
   before - other DNS software does it like this.

 - recognize a few more record types in dnsget, notable some DNSSEC RRs;
   add -f option for dnsget to set query flags.

 - udns is not a Debian native package anymore (was a wrong idea)

0.0.9 (16 Jan 2007)

 - incompat: minor API changes in dns_init() &friends.  dns_init()
   now requires extra `struct dns_ctx *' argument.  Not bumped
   soversion yet - I only expect one "release" with this change.

 - many small bugfixes, here and there

 - more robust FORMERR replies handling - not only such replies are now
   recognized, but udns retries queries without EDNS0 extensions if tried
   with, but server reported FORMERR

 - portability changes, udns now includes getopt() implementation fo
   the systems lacking it (mostly windows), and dns_ntop()&dns_pton(),
   which are either just wrappers for system functions or reimplementations.

 - build is now based on autoconf-like configuration

 - NAPTR (RFC3403) RR decoding support

 - new file NOTES which complements TODO somewhat, and includes some
   important shortcomings

 - many internal cleanups, including some preparations for better error
   recovery, security and robustness (and thus API changes)

 - removed some #defines which are now unused (like DNS_MAXSRCH)

 - changed WIN32 to WINDOWS everywhere in preprocessor tests,
   to be able to build it on win64 as well

0.0.8 (12 Sep 2005)

 - added SRV records (rfc2782) parsing,
   thanks to Thadeu Lima de Souza Cascardo for implementation.

 - bugfixes:
   o use uninitialized value when no reply, library died with assertion:
     assert((status < 0 && result == 0) || (status >= 0 && result != 0)).
   o on some OSes, struct sockaddr_in has additional fields, so
     memcmp'ing two sockaddresses does not work.

 - rblcheck(.1)

0.0.7 (20 Apr 2005)

 - dnsget.1 manpage and several enhancements to dnsget.

 - allow nameserver names for -n option of dnsget.

 - API change: all dns_submit*() routines now does not expect
   last `now' argument, since requests aren't sent immediately
   anymore.

 - API change: different application timer callback mechanism.
   Udns now uses single per-context timer instead of per-query.

 - don't assume DNS replies only contain backward DN pointers,
   allow forward pointers too.  Change parsing API.

 - debianize

0.0.6 (08 Apr 2005)

 - use double sorted list for requests (sorted by deadline).
   This should significantly speed up timeout processing for
   large number of requests.

 - changed debugging interface, so it is finally useable
   (still not documented).

 - dnsget routine is now Officially Useable, and sometimes
   even more useable than `host' from BIND distribution
   (and sometimes not - dnsget does not have -C option
   and TCP mode)

 - Debian packaging in debian/ -- udns is now maintained as a
   native Debian package.

 - alot (and I really mean alot) of code cleanups all over.
