--- /dev/null
-NB that NO VERSIONS of this file from this branch have been released,
-and I do not intend yet to publish this version. If you get an old
-version of this file from my CVS repository definitely do not intend
-the licence exceptions in it to apply - these too were drafts, as you
-should know if you know what retreiving old CVS versions means !
-
- - Ian Jackson, 9th March 2004.
-
-DRAFT - DRAFT - DRAFT - DRAFT - DRAFT - DRAFT - DRAFT - DRAFT - DRAFT
-
+ GPL vs LGPL, in the context of adns
+ -----------------------------------
+
-Several people have asked me to release adns under the GNU Lesser
++Several people have asked me to release GNU adns under the GNU Lesser
+ General Public Licence (LGPL, formerly the Library GPL) instead of the
+ `stronger' GPL. This file is intended to answer most of these
+ questions. If you still have questions or comments, please mail me at
+ <adns-maint@chiark.greenend.org.uk>.
+
+ Typically there are two or three kinds of situation where people make
+ this request: the first is where someone is developing a proprietary
+ program and wishes to make use of adns but doesn't wish to make their
+ program free software. The second case is where a free software
-project is currently using an MIT-like licence and fear `GPL
-infection'. The third case, which often overlaps with the second, is
-where another free software project currently using a GPL-incompatible
-licence, wishes to use adns.
++project is currently using an MIT-like licence or the LGPL and fear
++`GPL infection'. The third case, which often overlaps with the
++second, is where another free software project currently using a
++GPL-incompatible licence, wishes to use adns.
+
+
+ 1. Proprietary applications of adns
+ -----------------------------------
+
-This section applies if you are developing a proprietary program, by
-which I mean that you will not be distributing source code and not
-allowing users to modify and share your software; in most cases you
-will be doing this for (personal or corporate) financial gain.
++So, let me get this straight. You're writing a proprietary
++program, by which I mean that you will not be distributing source code
++and not allowing users to modify and share your software; most likely
++you are doing this for your own (personal or corporate) financial
++gain.
+
-In these cases I may be prepared to issue you a special `LGPL' for
-adns (ie, allow you to use adns in your application according to the
-terms of the LGPL). I will of course expect a significant licensing
-fee.
++However, you want to take advantage of adns, software which I have
++spent my time and effort on, and which I release as free software so
++that everyone can improve, share and use it.
+
-If you are interested I would be happy to negotiate with you. Please
-contact me with your serious initial offer, or if alternatively we can
-first discuss your detailed requirements.
++Don't you think that is a little hypocritical ? I'm sorry, but I
++don't want you to just take my nice convenient software, without
++giving something back to the free software community or giving the
++same rights to your users as I do to you.
+
-The fee for proprietary applications of adns without prior approval is
-US$1,000,000 per annum (or part thereof), per proprietary product, per
-100,000 installed systems (or part thereof), plus any administration,
-collection and legal fees required to recover the licence fee. Of
-course, this does not apply to commercial Free software applications
-whose use of adns is compatible with the GNU GPL v2.
++If you really aren't the nasty kind of person I've described here, for
++example if you have a good reason other than your own selfishness for
++wanting to restrict distribution of your program, then perhaps you
++should contact me to discuss it.
+
+
+ 2. GPL-avoiding projects (MIT licence, et al)
+ ---------------------------------------------
+
+ Some free software projects prefer to avoid the GPL and other licences
+ which force the software always to be free. Instead they use
+ something like the MIT X licence, which allows proprietary versions of
-their software. I have to say that I don't understand why they do
-this, and think they are misguided, but that doesn't mean that they
-don't have a perfect right to.
++their software, or the in the case of some free libraries, the LGPL,
++which allows proprietary applications. I have to say that I think
++these people are misguided, but that doesn't mean that they don't have
++a perfect right to do that.
+
+ Some of these people think that merely writing to an interface
+ provided by GPL'd software will cause their program to become GPL'd
+ too, even if they don't distribute the GPL'd software. I don't think
-this is the case. I'm perfectly happy for non-GPL'd software to refer
-to adns in its source code or executables (eg, dynamic linking).
-However, if you distribute adns yourself then whether a program which
-uses it needs also to be GPL'd depends on the interpretation of the
-`work as a whole' and `mere aggregation' parts of the GPL.
-
-Whether you are distributing a `work as a whole' might depend on many
-things, but they key one to me is what the appearance is to a user.
-If the user knows that they are getting a collection of software
-rather than a single product, then it's probably an aggregation which
-works together. So, you can distribute both your (i) non-GPLd program
-source and/or binaries and (ii) adns source code or even binaries
-(provided the adns source is available as per the GPL), eg from your
-website, provided the user can tell that these are separate works and
-can tell which parts are which.
-
-But, if you package your program and adns together so that the user is
-no longer aware of adns as a separate work, then I think you are
-distributing a `work as a whole', and the whole work including adns
-and your software which depends on it must be GPL'd. This is of
-course not a problem if your non-GPL licence is GPL-compatible (see
-the next section): it just means that _when the whole lot is shipped
-together as one work_ it is covered by the GPL. People who wish to
-make proprietary works based on just your code can do so, provided
-they (or you) arrange for something to fill the hole left by the lack
-of adns.
++this is the case. I'm perfectly happy for non-GPL'd but
++GPL-compatible software to refer to adns in its source code. However,
++I think that exectuables (or compiled libraries) which contain or are
++dynamically linked against adns must be GPL'd; likewise executable
++programs (whether compiled or in an interpreted language) which
++require utilities from adns to function properly must be GPL'd.
++
++So, you can distribute your non-GPL'd program source which needs adns
++to compile (provided it's under a GPL-compatible licence), but people
++who wish to distribute binaries must do so under the terms of the GNU
++GPL. This may make sense for some GPL-avoiding free software
++projects; people can still make proprietary programs from your code,
++provided that they make some provision to replace adns with something
++whose copyright allows proprietary versions.
++
++However, this doesn't make much sense for the authors of LGPL'd
++libraries. All I can say to them is to ask which is more important:
++that their library be well-constructed and use all the best technology
++available as free software, or whether it is worth degrading quality
++of their library in order to allow proprietary programs to use it !
++
++To help the case of LGPL'd libraries for which adns is not a vital
++component - for example, a library which provides access to other
++libraries so that programs which use it need only use certain parts,
++I have released adns.h (just the public header file) under the LGPL as
++well as the GPL. See the copyright notice in adns.h for details.
++Note that this will not help you if it adns is essential to the
++functioning of your library, because all programs using your library
++must link against both your library and adns and so must be GPL'd.
++
++
++For some information and views from the Free Software Foundation on
++free software licensing, visit:
++
++ Various licenses and comments about them
++ at http://www.fsf.org/philosophy/license-list.html
++
++ Why you shouldn't use the Library GPL for your next library
++ at http://www.fsf.org/philosophy/why-not-lgpl.html
+
+
+ 3. GPL-incompatible free software licences
+ ------------------------------------------
+
+ Regrettably, there are a number of free software licences (and
+ semi-free licences) in existence which are not compatible with the
+ GPL. That is, they impose restrictions which are not present in the
-GPL, and therefore distributing a whole work which contains such a
-program and a GPL'd program is not possible: either the work would
-have to be distributed under the GPL (violating the restrictions made
-by the original author), or under the GPL-incompatible licence
++GPL, and therefore distributing a whole work which contains both such
++a program and a GPL'd program is not possible: either the combination
++would have to be distributed under the GPL (violating the restrictions
++made by the original author), or under the GPL-incompatible licence
+ (violating the GPL).
+
+ I may be prepared to make exceptions for such a licence. Please
+ contact me at <adns-maint@chiark.greenend.org.uk> with the full text
-of the GPL-incompatible licence. However, I would prefer it if you
-could use a GPL-compatible licence for your project instead.
-
-There are a couple of common extra restrictions, and I make some
-specific extensions to my licence for adns below.
-
-
-3.1. BSD advertising clause, endorsement restriction, etc.
-
-The most notable and common extra restriction found in free software
-licences is the `obnoxious BSD advertising clause' (see Richard
-Stallman's article on the subject, available from www.gnu.org) and the
-endorsement restriction.
-
-The problem with the advertising clause isn't that the sentence
-required, referring the the Regents of the UC Berkeley, is awkward.
-The problem is that if everyone contributing to a large project gets
-such a mention the number of sentences required becomes very large;
-however, it is unfair for some people to get credit and others not to.
-
-I disapprove of these clause, but I recognise that it may be difficult
-for some people to get them removed from particular programs. The
-other clauses are also arguable.
-
-
-3.2. `Hosting service' restriction (eg, Affero GPL)
-
-The additional restriction in the AGPL v1 (section 2d) seems
-reasonable to me, in the circumstances.
-
-
-3.3. Licence extension
-
-So, I hereby make an extension to my licence for adns (`the Original
-Work' in the text below).
-
-
- LICENCE DEROGATION
- ------------------
-
- (A) Introduction:
-
- (i) The GNU GPL version 2, section 2b, and the later parts of
- section 2, require that certain works be licenced to all
- third parties under the terms of the GPL.
-
- (ii) As special relaxations of this requirement, described in
- detail below, the terms of this onward licence to third
- parties need not be (though they may be) exactly the terms of
- the GPLv2.
-
- (B) Preconditions:
-
- (i) There is a work (the `Original Work') which is licensed under
- the GNU GPL v2.
-
- (ii) There is a work (the `GPL'd Work'), either the same work as
- the Original Work, or derived work of the Original Work,
- which is licensed uner the GNU GPL v2.
-
- (iii) All of the copyright holders of the GPL'd Work state that
- this Licence Derogation is to apply, and what the Original
- Work is. (They may limit the Derogation to only some of the
- Allowable Extra Provisions.)
-
- (iv) The GPL'd Work is combined with another work (the Other
- Work) to make a `work as a whole', the Combined Work.
-
- (x) The Other Work is licenced free of charge to third parties;
- under the terms of a licence henceforth known as the Other
- Licence.
-
- (xi) The Other Licence is Free.
-
- (v) It would be an infringement of the copyright in the Other
- Work for you to distribute the Combined Work under the terms
- of the GNU GPL v2.
-
- (vi) There is a Resulting Licence which is the GNU GPL v2 amended
- by the addition of Extra Provisions and the relevant
- conditions from this Licence Derogation, where
-
- (viii) the Extra Provisions are some or all of the Allowable Extra
- Provisions (see below), and
-
- (x) the Extra Provisions are provisions of the Other Licence.
-
-
- (C) Permission:
-
- (i) Provided that the the conditions in this Licence Derogation
- are met, you may distribute the Combined Work under the terms
- of the Resulting Licence.
-
- (ii) When the Combined Work is distributed under the terms of the
- Resulting Licence, references to `this licence' in the text
- of the GPL v2 may be read as references to the Resulting
- Licence, or as references to the GPL v2, at your option.
-
- (D) Further Conditions:
-
- (i) All parts of the Combined Work which are (identical to, parts
- of, or derived from) the GPL'd Work can be easily separated
- out from the Whole Work's source code to form once more a
- Re-separated Work.
-
- (ii) The Re-separated Work is a version of the Original Work which
- is similar or superior in all respects (including
- completeness, functionality, quality etc.) to the Original
- Work.
-
- (iii) The Re-separated Work is licensed to third parties under
- terms identical to those under which the GPL'd Work is
- licenced to those same third parties.
-
- (iv) Copyright licences and notices which would appear to the
- reader to cover the Combined Work contain the following
- statement or an equivalent:
- Different parts of this software may be covered by
- different copying conditions. See individual source code
- files or copyright statements for details.
-
-
- (E) The Allowable Extra Provision Kinds:
-
- (i) In each of the following Kinds (`(1)' onwards), the nature of
- the Extra Provisions which are made Allowable, and the
- further conditions which must be satisfied (and which
- therefore form part of the Resulting Licence) are stated.
-
- (ii) All of the paragraphs (`(i)' onwards) stated in each Kind
- must be satisfied, for Extra Provisions to be Allowable.
-
- (1) `Obnoxious advertising clause':
-
- (i) The Extra Provisions are those of the form:
- All advertising materials mentioning features or use of
- this software must display the following acknowledgement:
- This product includes software developed by DEVELOPERS.
- and re-wordings with similar effect, where DEVELOPERS is a
- person or group associated with the development of the Other
- Work.
-
- (ii) All advertising materials mentioning features or use of the
- Combined Work must display a similar acknowledgement for
- every Identifiable Author.
-
- (iii) All distributions of the Combined Work must contain a list of
- the Identifiable Authors.
-
- (2) `Endorsement restriction':
-
- (i) The Extra Provisions are ones which restrict the use of the
- authors', copyright holders' and/or contributors' names for
- endorsement or promotion of products.
-
- (ii) The endorsement restriction(s) must benefit all of the
- natural persons and organisations with an interest in the
- Whole Work, unless those people wish otherwise.
-
- (3) `Liability limitation':
-
- (i) The Extra Provisions are ones which claim to exclude or limit
- in any way the liability, for malfunctions, failures etc. of
- the Whole Work or parts thereof, of any contributors,
- distributors, copyright holders, authors, etc. of the
- software. Provisions which seek to deny warranties, even
- implied warranties, or which otherwise seek to limit similar
- exposure(s) to risk(s), count.
-
- (ii) The protections of the Extra Provisions must be extended to
- all of the authors and distributors of the Whole Work, unless
- those people wish otherwise.
-
-
- (4) `Pointless restatements':
-
- (i) The Extra Provisions are ones which require distributions of
- the Whole Work to contain notices in source and/or binary
- distributions, and/or in the documentation and/or other
- materials provided with the distributions.
-
- (ii) The required notices must be simple truths, or restatements
- of licence provisions which actually apply to the Combined
- Work.
-
- (iii) (The author of this Licence Derogation believes that
- `pointless restatement requirements' are compatible with the
- GPLv2, since they seem to fall under the heading of an
- `appropriate copyright notice and disclaimer of warranty',
- which is already required by the GPLv2. However, this
- relaxation is provided in case of doubt.)
-
-
- (5) `Service provision - source code to users' (eg AGPL):
-
- (i) The Extra Provisions apply only
- (a) when the Other Work or Combined Work is intended to
- interact with people (`Users') through a computer network,
- or
- (b) when the Other Work or Combined Work is executed on behalf
- of a third party (the `User'),
- (or when both (a) and (b) apply).
-
- (ii) There exists a Sensible Publication Mechanism such that the
- Extra Provisions are satisfied when:
- (a) the Combined Work is made available free of charge to the
- public, by that Sensible Publication Mechanism, and
- (b) the existence and details of the Sensible Publication
- Mechanism are made known in appropriate ways to each
- User.
-
- (iii) A Sensible Publication Mechanism is a reasonable and
- convenient means for allowing members of the public
- (`Downloaders') to obtain the source code in machine-readable
- form.
-
- (iv) A Sensible Publication Mechanism is not more onerous to
- provide than a public-facing World Wide Web server.
-
-
- (F) Additional definitions:
-
- (i) A Free software licence is one which is approved both
- (a) as a Free Software licence by the Free Software
- Foundation, and
- (b) as an Open Source Licence by the Open Source Initiative.
-
- (ii) A Combining Participant includes any person:
- (a) who makes a modification to the Other Work, which is
- now included in the Combined Work, with a view to the
- creation of any work which might be a Combined Work
- according to this Licence Derogation; or
- (b) who obtains the Other Work and GPL'd work separately and
- distributes the Combined Work.
-
- (iii) An Identifiable Author is
- (a) a natural person
- (b) who contributed to the Combined Work (including without
- limitation as a work for hire)
- (c) whose identity or proper form of acknowledgement it
- reasonably practical to determine by inspection of the
- Authorship Documentation,
- (d) and who has not stated publicly that they do not wish such
- acknowledgements to be displayed.
-
- (iv) The Authorship Documentation includes all copyright notices,
- authorship notices, credits files, change logs,
- acknowledgements, and similar documentation, in the source
- code for the Original Work, the GPL'd Work, the Other Work
- and the Combined Work.
-
- (v) The Authorship Documentation also includes any communications
- received by a Combining Participant regarding authorship of
- any part of the Combined Work.
-
-
-
-
-
- (iv) A Sensible Publication Mechanism does not require any
- Downloader to provide any identification or authorisation
- other than that inherently required by the underlying
- technical mechanisms.
-
- (v) A Sensible Publication Mechanism is free of charge.
-
- (vi) A Sensible Publication Mechanism does not make any efforts to
- trace, track, cross-reference, or otherwise gain information
- about Downloaders, other than the minimum data required for
- direct technical fault-finding; any data collected shall be
- used only for direct technical fault-finding.
-
- (vii) Where a Sensible Publication Mechanism involves
- implementation of a technical communications protocol, the
- Mechanism must permit the use by Downloaders of the widest
- feasible range of standards-compliant software.
-
- (vii) For example, for download via the public World Wide Web to
- satisfy this paragraph, the HTTP server must permit downloads
- from any IP address, and it may not have any access controls,
- cookies, reverse DNS requirements, registration forms, adult
- checks, authorisation codes, email confirmations, URL
- session-ids, browser restrictions, JavaScript, Java, Flash,
- and must use the most conservative possible HTML, and the
- webserver logs must contain the least possible information
- and be expired quickly.
-
-DRAFT
-
-, or to pay anyone any
- money.
-
-
-
-which there is a
- Sensible Mechanism can be
-
-(to the Other Work publicly and freely available.
++of the GPL-incompatible licence. However, I would usually prefer it
++if you could use a GPL-compatible licence for your project instead.
+
- (a) (from `AGPL version 1')
- If the Program as you received it is intended to
- interact with users through a computer network and if,
- in the version you received, any user interacting with
- the Program was given the opportunity to request
- transmission to that user of the Program's complete
- source code, you must not remove that facility from
- your modified version of the Program or work based on
- the Program, and must offer an equivalent opportunity
- for all users interacting with your Program through a
- computer network to request immediate transmission by
- HTTP of the complete source code of your modified
- version or other derivative work.
+
++-- Ian Jackson 17.9.2000
+
-DRAFT --- Ian Jackson 10.5.1999
+
+ Local variables:
+ mode: text
+ End:
-adns (0.2) experimental; urgency=low
+adns (0.10) unstable; urgency=low
+
+ Bugfixes:
+ * Fix incorrect `compressed datagram contains loop' error.
+ * Actually compile shared libraries by default !
+ * Fix adnsresfilter usage message to include correct default timeout.
+
+ General improvements:
+ * adnshost, adnslogres, adnsresfilter have options for config override.
+ * adnsresfilter has --debug option.
+ * Improvements to adnslogres (incl. new -c option) from Tony Finch.
+ * adnslogres has --help option.
- * Documentation improved somewhat.
++ * Documentation improved somewhat, including new GPL-vs-LGPL file.
+ * Do not install adnstest test utility.
+
+ Regression test improvements:
+ * Tests now include adnshost, adnslogres and adnsresfilter.
+ * Test cancellation both before and after query completion.
+
+ Portability fixes and cleanups:
+ * adnstest: setvbuf(stdout,...) before we do first output.
+ * Cope with compilers that don't do `inline'.
+ * Add and fix various missing system #includes.
+ * Find install-sh properly when we need to use it, and chmod it +x.
+ * Do not use variadic macro, use stdarg instead (adnslogres.c).
+ * Regression tests work even if some syscalls are already macros.
+ * #include "config.h" before "adns.h".
+ * Cast a sizeof(...) in src/event.c to unsigned long before printing.
+ * Add pre-generated versions of m4-generated files in regress/.
+ * Kill bogus warning, adh-main.c: `arg2' might be used uninitialized ...
+ * Add extra {...} near adnslogres.c:167 to kill spurious warning.
+ * Use `printf' instead of `echo -n'.
+ * Add list of tested platforms in INSTALL file.
+
+ --
+
+adns (0.9) unstable; urgency=high
+
+ Bug fixes:
+ * Don't make _processany always kill the TCP connection with the message
+ `TCP connection failed: poll/select: exceptional condition detected'.
+ * Call MEM_ROUND in __transfer_interim (avoids assert fail
+ `qu->interim_allocd>=0' on some platforms eg 64 bit).
+ * adnsresfilter doesn't resolve textual prefixes of addresses (eg,
+ 10.0.0.1 out of 10.0.0.123) if input happens to block at that point.
+ * Do not spin if TCP connection blocks for writing (and add test case).
+ * Fail queries if TCP dies repeatedly, rather than retrying many times.
+ * Do not abort in a couple of places if TCP unexpectedly broken.
+ * Do not free something twice if query fails and is then cancelled.
+
+ Portability/compilation fixes:
+ * Move `extern "C" {' to after #include <...>'s.
+ * Pass LDFLAGS from configure on to ld via settings.make.in.
+ * make clean deletes *.so and *.so.* files.
+ * New --disable-dynamic configure option for non-ELF systems.
+ * Use AC_PROG_INSTALL (=> perhaps install-sh), to avoid bad `install'.
+
+ Minor improvements:
+ * Do not print warning if sendto() gives EAGAIN.
+ * adnsresfilter default timeout changed to 1000ms.
+ * m1test script can invoke `hrecord' differently.
+ * regress/output-<case>.report file contains more useful info.
+ * TODO list and other docs updated slightly.
+ * Referrals with RD+RA set, or RCODE=Refused, don't generate warnings,
+ just debug messages. BIND does this kind of thing all the time.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Wed, 9 Aug 2000 16:59:28 +0100
+
+adns (0.8) BETA; urgency=medium
+
+ Bugfixes:
+ * Race near adns_beforeselect which could cause infinite timeout fixed
+ (it's now less agressive, and will more often return a zero timeout.)
+ * Fixed infrequent race causing assertion failure in adns__tcp_broken
+ `ads->tcpstate == server_connecting || ads->tcpstate == server_ok'.
+ * Spurious `server failure on unidentifiable query' warning suppressed.
+ * If we get a referral, don't also always complain falsely about RD==0.
+ * adnslogres: cast chars to unsigned char before using ctype.h macros.
+ * In _beforeselect, global failure now means zero timeout, and in
+ tcp_events, really never try to do anything with the TCP connection if
+ act is zero. This might possibly cause an infinite delay (ie, lockup)
+ if things go badly wrong *and* a really unlikely race happens.
+ * Test suite `lines of syscall left' value is correct; !0 is failure.
Portability fixes:
+ * install-sh (from autoconf 2.12 Debian r13) included.
+ * adnslogres: do not call equivalent of printf("%.*s",0,(char*)0).
+
+ Documentation improvements:
+ * Security/performance note added, about local nameservers and DNSSEC.
+ * Documented that adns_rr_info _rr_hostaddr ( ) for address list
+ means permanent failure, and ? means temporary failure.
+ * Typo (*now for now in _beforeselect description) in adns.h fixed.
+ * Copyright notices updated.
+
+ Changes to produce more defensive code:
+ * In adns_wait, assert that the timeout is not infinite.
+ * Make qu->id start out as -2 when initially allocated.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Sun, 7 May 2000 23:37:13 +0100
+
+adns (0.7) BETA; urgency=medium
+
+ * New adns_submit_reverse_any for eg RBL lookups, and corresponding
+ option to adnshost.
+ * README updated (from www home page).
+
+ * In answers, quote all except alphanums and - _ / + (and document).
+ * Don't reject specials in cnames even without adns_qf_quotefail_cname.
+ * Better checking of long domain names and labels in queries.
+ * answer->owner may be null on error. Documented, and adnshost copes.
+ * Better reporting of unexpected or weird replies from nameserver.
+ * Add test case for recursion (infinite loop) domain compression.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Thu, 2 Mar 2000 01:55:53 +0000
+
+adns (0.6) BETA; urgency=high
+
+ Core library bugfixes:
+ * Avoid infinite timeouts, causing lockup, when they should be zero !
+ * TCP handling revamped (avoids undefined behaviour due to reentrancy).
+ * Do not fail assertion if _qf_owner, _qf_search, domain ends in `.'.
+ * Many memory leaks fixed.
+
+ Cool new utility:
+ * adnsresfilter is like `cat' but converts addresses to names without
+ delaying the output. Pipe `netstat -n', `tcpdump -ln', etc. into it.
+
+ Test and client program bug and portability fixes:
+ * Dynamic library building works properly.
+ * adnshost prints somewhat better messages about some wrong usages.
+ * Include <stdlib.h> and <sys/types.h> in adnshost.h.
+ * adnslogres: parsing and error checking improved (Tony Finch).
+ * Regression tests can cope with zero-length reads.
+ * Regression tests check for memory leaks.
+ * adnstest copes with empty query type list.
+ * adnstest uninitialised memory bug fixed.
+
+ General improvements
+ * Better control of adnshost output and error messages (new -F options).
+ * New adns_if_logpid option (functionality suggested by Tony Finch).
+ * New fanftest test program from Tony Finch (ignored by `make install').
+ * Reads /etc/resolv-adns.conf if it exists.
+ * Declare flags parameters as enums again, not ints.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Wed, 24 Nov 1999 17:13:03 +0000
+
+adns (0.5) unstable; urgency=high
+
+ New features:
+ * adnslogres, ~100x faster replacement for Apache logresolve;
+ Thanks to Tony Finch for the program and the performance figure.
+ * Internal consistency checking with assert if right options set.
+ * adns_wait_poll function like adns_wait but uses poll, not select.
+ * adns_reverse_submit function for easy in-addr queries.
+ * adns_errtypeabbrev funcion for getting eg "permfail" from _s_nodata.
+ * adnshost utility for scripts and the like (rather alpha).
+
+ Incompatible changes:
+ * RRs with mailboxes never rejected due to strange chars if _raw.
+ * Lack of a mailbox produces `.' not `<>'.
+ * Better usage messages (and no default query domain) for adnstest.
+ * Return EAGAIN from _check instead of EWOULDBLOCK.
+ * adns_rr_info on _r_mx etc. shows status type abbrev and status number.
+
+ Bugfixes:
+ * Do not invoke __autosys indirectly from __procdgram (result: coredump
+ usually in memmove, unless adns_if_noautosys was used).
+ * Do not scramble innards when a query on the output queue is cancelled.
+ * Do not close tcp socket twice.
+ * Mailboxes containing spaces in their names are quoted.
+ * Give ESRCH, not EAGAIN, if _check called with no queries outstanding.
+ * adns_rr_hostaddr naddrs is -1 on temporary failure (as documented).
+ * Reject TXT RRs with no strings.
+ * Correct error messages for qname CNAME foo, foo CNAME bar.
+ * adns_processany actually does something.
+ * Fixed typos in adns.h.
+
+ General improvements:
+ * Promise not to change fds in adns_beforepoll (if now is specified).
+ * Improved textual error string for _s_prohibitedcname.
+ * New comment in adns_processany and return 0 (not r which is 0).
+ * Documentation of resolv.conf directives and options, and of environment
+ variables understood, in adns.h
+ * Regression test scripts set EF_DISABLE_BANNER (for Electric Fence).
+
+ Portability and build improvements:
+ * Give install the '-c' flag (otherwise some delete the original !).
+ * Do not remove top-level Makefile on `make clean'.
+ * Don't complain so much about poll(2) tests if not available.
+ * Do not give -u 0 -g 0 options to install.
+ * Remove trailing , from some enums in adns.h.
+ * Dynamically linked clients now made with -l, so as to avoid rpath.
+ * Do not use $^ in make rules (should help with non-GNU make).
+ * Declare flags parameters as ints not enums because C++ is crap.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Wed, 13 Oct 1999 02:24:35 +0100
+
+adns (0.4) unstable; urgency=high
+
+ General important bugfixes:
+ * make _qf_owner work if _qf_search not specified, and test it (oops!)
+ * ads->configerrno now initialised (in setup.c).
+ * timercmp(,,<=) doesn't work - use !timercmp(,,>).
+ * Changed memory semantics of internal queries to fix bugs.
+ * Restarting a TCP-using query (eg due to CNAME) doesn't abort.
+
+ Fixes for handling of broken kinds of reply:
+ * Only accept a reply from the subset of servers we sent the query.
+ * Ignore CNAME(s) in answer after RR(s) (and test).
+
+ Other bugfixes and improvements:
+ * adns_s_systemfail is in table of errors (for eg adns_strerror).
+ * Do not ship config.cache, Makefile, etc.
+ * Improvements to install instructions, TODO, etc.
+ * Regression tests compile on systems without poll(2).
+ * Do not install adnstest_s.
+ * _submit returns ENOSYS, not adns_s_unknownquery; documented, tested.
+ * <adns.h> includes <sys/types.h>, <sys/time.h>, <unistd.h>.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Thu, 5 Aug 1999 01:17:38 +0100
+
+adns (0.3) unstable; urgency=low
+
+ Incompatible changes:
+ * Low adns_status values (below adns_s_max_tempfail) renumbered to make
+ room for future locally-induced and locally-detected errors.
+ * Event loop functions for use by select(2) renamed and tidied up.
+
+ Features / improvements:
+ * New adns_errabbrev() for getting status abbreviation strings.
+ * regress/checkall prints summary list of failed tests, if any.
+ * Event loop functions for poll(2), and some raw variants.
+ * adnstest has ability to use poll(2), and user can set initflags.
+ * checkall prints passed list as well as failed list, if any failed.
+ * You can iterate over outstanding queries (but only once at a time).
+
+ Bugfixes:
+ * Non-RFC822 mailbox `domain' formatting now works, and clarified.
+ * Rejection of bad characters in domains (without quoteok) works.
+ * Clean up parents from adns->childw (otherwise would abort/segfault).
+ * In adnstest, allocate enough space for, and terminate, query types.
+ * In adnstest, don't print errno values as adns_status values.
+
+ * Added TODO file.
+ * Made adnstest.c test context pointers.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Thu, 15 Jul 1999 00:23:12 +0100
+
+adns (0.2) experimental; urgency=low
+
+ Portability fixes for compilation on various platforms:
* Include <sys/socket.h> and <netinet/in.h> in files with <arpa/inet.h>.
* Don't use GCC union assignment feature (.rrs=0 => .rrs.untyped=0).
* Explictly cast things to [const] struct sockaddr* in syscall args.