More error message improvements; work around a suspect Solaris compiler bug
[tftp-hpa.git] / CHANGES
blobb29eaeb7a32d198f914c3773276cb0ea05093f91
1 $Id$
3 Changes in 0.32:
4         Better error messages; including the capability to send a
5         custom error message to the client when hitting an "a" rule in
6         a remapping table.
9 Changes in 0.31:
10         Put in a check to make sure xinetd (in particular) doesn't
11         pass us an IPv6 socket.
13         Fix some problems related to timeout negotiation.
15         Allow the user to set the default timeout speed.
18 Changes in 0.30:
19         (Hopefully) better timeout algorithm.
21         Add a "utimeout" option; like "timeout" but in microseconds.
23         Change the log level of client-side errors to LOG_WARNING.
25         autoconf portability improvements.
27         Minor bugfixes.
30 Changes in 0.29:
31         Posixly correctness.
33         Now compiles and runs on Win32 systems using Cygwin
34         (http://www.cygwin.com/).
35         (<http://www.cygwin.com/>).
37         Fixed a bug which could cause a standalone server to exit with
38         a "recvfrom: Interrupted system call" log message if signals
39         arrive at a particularly inopportune moment.
41         Fix a macro substitution bug (thanks to Richard Nyberg.)
44 Changes in 0.28:
45         Fix stupid one-liner bug which broke standalone mode (-l).
48 Changes in 0.27:
49         Make the Digital Unix 4.0F platform work again.  Thanks to
50         Alan Sundell for helping out with this platform!
52         Make the AIX 4.3 platform work again.  Thanks to Josef Siemes
53         for helping out with this platform!
55         Allow replacement patterns to include the IP address of the
56         requesting host (\i).
58         Allow relying on Unix permissions rather than o+r magic if the
59         -p option is specified.  As part of this, set all groups if
60         initgroups() is specified on the platform.
62         Clean up race conditions inherited from the BSD source base.
65 Changes in 0.26:
66         Fix the configuration process so tftpd doesn't end up
67         depending on readline, which apparently could happen on some
68         platforms before.
70         Make parallel builds (make -j) work correctly.
72         Improve parsing of the "connect" command in the tftp client.
74         Add a -V option to both tftp and tftpd to print the version
75         number on stdout and immediately exit.
77         Add a -v option to tftp to start out in verbose mode.
78         
79         Rewrite the man pages using standard "man" troff macros.
81         Enable the (limited) use of readline on systems which don't
82         have readline/history.h.
84         Support compiling under MacOS X with fink (see
85         <http://fink.sourceforge.net/>).  Thanks for Justin Hallett
86         and Eric Eslinger for their help in getting this working!
89 Changes in 0.25:
90         Fixed Sorcerer's Apprentice bug in both the client and the
91         server.  These bugs were inherited from the original BSD code.
94 Changes in 0.24:
95         Fix bugs in both client and server dealing with block number
96         wraparound, usually manifesting themselves as failure to
97         handle files over 32 MB in size.
99         Officially make the client a part of the tftp-hpa project.
102 Changes in 0.23:
103         Correct memory overwrite bug in the tftp client when compiled
104         with readline.
107 Changes in 0.22:
108         Even more portability improvements: FreeBSD and
109         Tru64/Digital Unix.
111         Fix tsize option on systems on which off_t is "long long".
113         Support large files on systems which need _LARGE_FILE_BITS or
114         similar.
116         Some source cleanups; change to autoconf 2.52.
118         Add support for readline command-line editing in tftp.
121 Changes in 0.21:
122         Support running in standalone mode, without inetd.
124         Even more portability improvements.  Now known to compile and
125         run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
126         success or failure on other modern systems always appreciated.
128         Clean and modernize some really ugly old code.
130         Fix a potential illegal memory access when running in "totally
131         insecure mode" - no -s, no directories listed.
134 Changes in 0.20:
135         Portability improvements.  Now known to compile and run on
136         Solaris 8.
139 Changes in 0.19:
140         Fork before performing tcpwrappers check.
142         Don't rely on nonstandard bsd_signal() function, instead
143         require that the platform has sigaction().  This is 2001,
144         after all.  This may resolve some potential portability
145         problems.
147         Log a message if memory allocation fails, instead of dying
148         silently.
150         Clean up the main dispatch loop.
152         Use <sysexits.h> for exit codes, if it exists.
154         Add support for debugging remapping rulefiles; if logging with
155         -vvv tftpd will log all rules actions.
157         Correct the error code issued by an "abort" rule.
160 Changes in 0.18:
161         Support (almost) arbitrary filename remappings via regular
162         expression-based rulesets.
164         Added -v option for more verbose logging.
167 Changes in 0.17:
169         Add support for tcpwrapper checking (/etc/hosts.allow;
170         /etc/hosts.deny) in tftpd.
172         Compile correctly on glibc 2.1.2.
174         Add -u option to specify the user id to run as (default
175         "nobody".)
177         Operate in "daemon mode" as long as we keep getting requests.
178         This should speed up handling large amounts of requests at
179         once, as can happen when a client starts up, and avoids inetd
180         misconfiguration problems.
181         
183 Changes in 0.16:
185         Correct massive lossage from 0.15: apparently 0.15 was based
186         on an out-of-date CVS repository, somehow.
188         Fix for ACKs in TFTP PUT; patch by Roger Venning.
191 Changes in 0.15:
193         If the operating system allows, try to obtain the local
194         address used for the request packet, and reply using the same
195         local IP address.  Some embedded TFTP clients are (probably
196         incorrectly) picky about this.
199 Changes in 0.14:
201         Hacks to signal handling to avoid "zombie servers."
204 Changes in 0.13:
206         Added the non-standard option "blksize2".  The "blksize"
207         option is limited in its usability, since TFTP is designed to
208         be implemented in a ROM, and ROM code might find it painful to
209         deal with packets that don't meet certain alignment
210         restrictions.
212         The "blksize2" option tells the server that the block size
213         must be a power of 2 to be usable to the client.  The server
214         SHALL respond with a block size that is a power of two, up to
215         a maximum of 32768, or reject the option.  Furthermore, the
216         server SHALL grant a block size that is no smaller than 512
217         bytes unless the client explicitly requested a smaller block
218         size.  If the client request both options, the server MAY
219         accept one or the other, but not both.  At some point I will
220         probably write up an IETF draft for this option.
223 General information on the tftp-hpa series:
225 The core software was taken from OpenBSD (CVS source as of
226 1999-09-21).  I believe this was the most secure source base available
227 at the time I obtained this code, and it included support for the -s
228 and -c options.
230 The un-BSD-ized Makefiles and a lot of the configure macros were taken
231 from netkit-tftp-0.10 by David Holland; I also followed this example
232 and modernized the code style throughout.
234 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
235 option negotiation as well as the "blksize" and "tsize" option
236 support, although I made a fair amount of mostly stylistic changes to
237 their code.
239 Adding the -r option (disable a specific option), the "timeout"
240 option, converting to using autoconf for setup, and any additions
241 listed in the Changes list above, has all been my own code, as are any
242 bugs introduced in the merge.