Changes in 5.0:
	Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
	AI_CANONNAME.

	Implement the "rollover" option, for clients which want block
	number to rollover to anything other than zero.

	Correctly disable PMTU in standalone mode.  Patch by Florian
	Lohoff.


Changes in 0.49:
	Add IPv6 support.  Patch by Karsten Keil.

	Support systems with editline instead of readline.

	Support long options in the server.


Changes in 0.48:
	Unbreak -l -s in the server, which was broken in 0.47.


Changes in 0.47:
	Add -L option to the server to run standalone without
	detaching from the shell.

	Parallel make fix.


Changes in 0.46:
	Minor portability improvements.


Changes in 0.45:
	Add -l (literal) option to the client, to override the special
	treatment of the colon (:) character as a hostname separator.


Changes in 0.44:
	Allow the client to specify a range of local port numbers,
	just like the server can.

	Fix sending SIGHUP to update the regular expression table.


Changes in 0.43:
	Fix double-free error on ^c in client.

	Try to deal with clients that send TFTP requests to broadcasts
	(apparently some recent Sun boxes do this instead of using the
	address told by DHCP.  Bad Sun!  Bad Sun!)

	Portability fixes.


Changes in 0.42:
	Try to disable path MTU discovery for TFTP connections (it's
	useless anyway.)

	Add a hack to allow the admin to specify a range of local port
	numbers to use.

	Fix local IP number handling on systems which present
	IP_RECVDSTADDR in recvmsg().


Changes in 0.41:
	Fix bug by which patterns of the form \U\1 weren't converted
	correctly.


Changes in 0.40.1:
	Solaris build fix.


Changes in 0.40:
	Fix bug which would cause "r" remapping rules to be
	incorrectly rejected.


Changes in 0.39:
	Support Perl-style \U...\E and \L...\E, as well as allow
	matching rules to be inverted (execute if rule *doesn't*
	match.)

	Fix a timeout bug.

	Add an RPM spec file.


Changes in 0.38:
	Portability fixes.


Changes in 0.37:
	Fix a pathology where a client sending ACKs for the wrong
	packet can prevent proper retransmission.


Changes in 0.36:
	Portability fixes.


Changes in 0.35:
	Add an option to control the maximum value of blksize
	negotiated.

	Removed workaround for obsolete Cygwin problem.

	Don't use getopt() -- the -c option doesn't work correctly
	since it depends on the ordering of arguments and options.  It
	is now possible to do:

	tftp -m binary hostname -c get filename

	This was previous possible by doing:

	tftp -m binary -c get hostname:filename

	... but it seemed that was counterintuitive to people.

	Somewhat improved configure scripts.


Changes in 0.34:
	Additional Solaris gcc compiler bug workarounds; these
	actually make the code somewhat cleaner.
	

Changes in 0.33:
	Even better error messages.

	Work around a suspect Solaris gcc bug.

	Configuration fix: readline needs termcap.

	Support running the tftp client from the command line.  For
	example:

		tftp -m binary -c get hostname:file


Changes in 0.32:
	Better error messages; including the capability to send a
	custom error message to the client when hitting an "a" rule in
	a remapping table.


Changes in 0.31:
	Put in a check to make sure xinetd (in particular) doesn't
	pass us an IPv6 socket.

	Fix some problems related to timeout negotiation.

	Allow the user to set the default timeout speed.


Changes in 0.30:
	(Hopefully) better timeout algorithm.

	Add a "utimeout" option; like "timeout" but in microseconds.

	Change the log level of client-side errors to LOG_WARNING.

	autoconf portability improvements.

	Minor bugfixes.


Changes in 0.29:
	Posixly correctness.

	Now compiles and runs on Win32 systems using Cygwin
	(http://www.cygwin.com/).
	(<http://www.cygwin.com/>).

	Fixed a bug which could cause a standalone server to exit with
	a "recvfrom: Interrupted system call" log message if signals
	arrive at a particularly inopportune moment.

	Fix a macro substitution bug (thanks to Richard Nyberg.)


Changes in 0.28:
	Fix stupid one-liner bug which broke standalone mode (-l).


Changes in 0.27:
	Make the Digital Unix 4.0F platform work again.  Thanks to
	Alan Sundell for helping out with this platform!

	Make the AIX 4.3 platform work again.  Thanks to Josef Siemes
	for helping out with this platform!

	Allow replacement patterns to include the IP address of the
	requesting host (\i).

	Allow relying on Unix permissions rather than o+r magic if the
	-p option is specified.  As part of this, set all groups if
	initgroups() is specified on the platform.

	Clean up race conditions inherited from the BSD source base.


Changes in 0.26:
	Fix the configuration process so tftpd doesn't end up
	depending on readline, which apparently could happen on some
	platforms before.

	Make parallel builds (make -j) work correctly.

	Improve parsing of the "connect" command in the tftp client.

	Add a -V option to both tftp and tftpd to print the version
	number on stdout and immediately exit.

	Add a -v option to tftp to start out in verbose mode.
	
	Rewrite the man pages using standard "man" troff macros.

	Enable the (limited) use of readline on systems which don't
	have readline/history.h.

	Support compiling under MacOS X with fink (see
	<http://fink.sourceforge.net/>).  Thanks for Justin Hallett
	and Eric Eslinger for their help in getting this working!


Changes in 0.25:
	Fixed Sorcerer's Apprentice bug in both the client and the
	server.  These bugs were inherited from the original BSD code.


Changes in 0.24:
	Fix bugs in both client and server dealing with block number
	wraparound, usually manifesting themselves as failure to
	handle files over 32 MB in size.

	Officially make the client a part of the tftp-hpa project.


Changes in 0.23:
	Correct memory overwrite bug in the tftp client when compiled
	with readline.


Changes in 0.22:
	Even more portability improvements: FreeBSD and
	Tru64/Digital Unix.

	Fix tsize option on systems on which off_t is "long long".

	Support large files on systems which need _LARGE_FILE_BITS or
	similar.

	Some source cleanups; change to autoconf 2.52.

	Add support for readline command-line editing in tftp.


Changes in 0.21:
	Support running in standalone mode, without inetd.

	Even more portability improvements.  Now known to compile and
	run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
	success or failure on other modern systems always appreciated.

	Clean and modernize some really ugly old code.

	Fix a potential illegal memory access when running in "totally
	insecure mode" - no -s, no directories listed.


Changes in 0.20:
	Portability improvements.  Now known to compile and run on
	Solaris 8.


Changes in 0.19:
	Fork before performing tcpwrappers check.

	Don't rely on nonstandard bsd_signal() function, instead
	require that the platform has sigaction().  This is 2001,
	after all.  This may resolve some potential portability
	problems.

	Log a message if memory allocation fails, instead of dying
	silently.

	Clean up the main dispatch loop.

	Use <sysexits.h> for exit codes, if it exists.

	Add support for debugging remapping rulefiles; if logging with
	-vvv tftpd will log all rules actions.

	Correct the error code issued by an "abort" rule.


Changes in 0.18:
	Support (almost) arbitrary filename remappings via regular
	expression-based rulesets.

	Added -v option for more verbose logging.


Changes in 0.17:

	Add support for tcpwrapper checking (/etc/hosts.allow;
	/etc/hosts.deny) in tftpd.

	Compile correctly on glibc 2.1.2.

	Add -u option to specify the user id to run as (default
	"nobody".)

	Operate in "daemon mode" as long as we keep getting requests.
	This should speed up handling large amounts of requests at
	once, as can happen when a client starts up, and avoids inetd
	misconfiguration problems.
	

Changes in 0.16:

	Correct massive lossage from 0.15: apparently 0.15 was based
	on an out-of-date CVS repository, somehow.

	Fix for ACKs in TFTP PUT; patch by Roger Venning.


Changes in 0.15:

	If the operating system allows, try to obtain the local
	address used for the request packet, and reply using the same
	local IP address.  Some embedded TFTP clients are (probably
	incorrectly) picky about this.


Changes in 0.14:

	Hacks to signal handling to avoid "zombie servers."


Changes in 0.13:

	Added the non-standard option "blksize2".  The "blksize"
	option is limited in its usability, since TFTP is designed to
	be implemented in a ROM, and ROM code might find it painful to
	deal with packets that don't meet certain alignment
	restrictions.

	The "blksize2" option tells the server that the block size
	must be a power of 2 to be usable to the client.  The server
	SHALL respond with a block size that is a power of two, up to
	a maximum of 32768, or reject the option.  Furthermore, the
	server SHALL grant a block size that is no smaller than 512
	bytes unless the client explicitly requested a smaller block
	size.  If the client request both options, the server MAY
	accept one or the other, but not both.  At some point I will
	probably write up an IETF draft for this option.


General information on the tftp-hpa series:

The core software was taken from OpenBSD (CVS source as of
1999-09-21).  I believe this was the most secure source base available
at the time I obtained this code, and it included support for the -s
and -c options.

The un-BSD-ized Makefiles and a lot of the configure macros were taken
from netkit-tftp-0.10 by David Holland; I also followed this example
and modernized the code style throughout.

Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
option negotiation as well as the "blksize" and "tsize" option
support, although I made a fair amount of mostly stylistic changes to
their code.

Adding the -r option (disable a specific option), the "timeout"
option, converting to using autoconf for setup, and any additions
listed in the Changes list above, has all been my own code, as are any
bugs introduced in the merge.
