Update version for release
[tftp-hpa.git] / CHANGES
blobc5daef11dce226e7716c68028ccc2cc8c8fc92e4
1 Changes in 0.48:
2         Unbreak -l -s in the server, which was broken in 0.47.
5 Changes in 0.47:
6         Add -L option to the server to run standalone without
7         detaching from the shell.
9         Parallel make fix.
12 Changes in 0.46:
13         Minor portability improvements.
16 Changes in 0.45:
17         Add -l (literal) option to the client, to override the special
18         treatment of the colon (:) character as a hostname separator.
21 Changes in 0.44:
22         Allow the client to specify a range of local port numbers,
23         just like the server can.
25         Fix sending SIGHUP to update the regular expression table.
28 Changes in 0.43:
29         Fix double-free error on ^c in client.
31         Try to deal with clients that send TFTP requests to broadcasts
32         (apparently some recent Sun boxes do this instead of using the
33         address told by DHCP.  Bad Sun!  Bad Sun!)
35         Portability fixes.
38 Changes in 0.42:
39         Try to disable path MTU discovery for TFTP connections (it's
40         useless anyway.)
42         Add a hack to allow the admin to specify a range of local port
43         numbers to use.
45         Fix local IP number handling on systems which present
46         IP_RECVDSTADDR in recvmsg().
49 Changes in 0.41:
50         Fix bug by which patterns of the form \U\1 weren't converted
51         correctly.
54 Changes in 0.40.1:
55         Solaris build fix.
58 Changes in 0.40:
59         Fix bug which would cause "r" remapping rules to be
60         incorrectly rejected.
63 Changes in 0.39:
64         Support Perl-style \U...\E and \L...\E, as well as allow
65         matching rules to be inverted (execute if rule *doesn't*
66         match.)
68         Fix a timeout bug.
70         Add an RPM spec file.
73 Changes in 0.38:
74         Portability fixes.
77 Changes in 0.37:
78         Fix a pathology where a client sending ACKs for the wrong
79         packet can prevent proper retransmission.
82 Changes in 0.36:
83         Portability fixes.
86 Changes in 0.35:
87         Add an option to control the maximum value of blksize
88         negotiated.
90         Removed workaround for obsolete Cygwin problem.
92         Don't use getopt() -- the -c option doesn't work correctly
93         since it depends on the ordering of arguments and options.  It
94         is now possible to do:
96         tftp -m binary hostname -c get filename
98         This was previous possible by doing:
100         tftp -m binary -c get hostname:filename
102         ... but it seemed that was counterintuitive to people.
104         Somewhat improved configure scripts.
107 Changes in 0.34:
108         Additional Solaris gcc compiler bug workarounds; these
109         actually make the code somewhat cleaner.
110         
112 Changes in 0.33:
113         Even better error messages.
115         Work around a suspect Solaris gcc bug.
117         Configuration fix: readline needs termcap.
119         Support running the tftp client from the command line.  For
120         example:
122                 tftp -m binary -c get hostname:file
125 Changes in 0.32:
126         Better error messages; including the capability to send a
127         custom error message to the client when hitting an "a" rule in
128         a remapping table.
131 Changes in 0.31:
132         Put in a check to make sure xinetd (in particular) doesn't
133         pass us an IPv6 socket.
135         Fix some problems related to timeout negotiation.
137         Allow the user to set the default timeout speed.
140 Changes in 0.30:
141         (Hopefully) better timeout algorithm.
143         Add a "utimeout" option; like "timeout" but in microseconds.
145         Change the log level of client-side errors to LOG_WARNING.
147         autoconf portability improvements.
149         Minor bugfixes.
152 Changes in 0.29:
153         Posixly correctness.
155         Now compiles and runs on Win32 systems using Cygwin
156         (http://www.cygwin.com/).
157         (<http://www.cygwin.com/>).
159         Fixed a bug which could cause a standalone server to exit with
160         a "recvfrom: Interrupted system call" log message if signals
161         arrive at a particularly inopportune moment.
163         Fix a macro substitution bug (thanks to Richard Nyberg.)
166 Changes in 0.28:
167         Fix stupid one-liner bug which broke standalone mode (-l).
170 Changes in 0.27:
171         Make the Digital Unix 4.0F platform work again.  Thanks to
172         Alan Sundell for helping out with this platform!
174         Make the AIX 4.3 platform work again.  Thanks to Josef Siemes
175         for helping out with this platform!
177         Allow replacement patterns to include the IP address of the
178         requesting host (\i).
180         Allow relying on Unix permissions rather than o+r magic if the
181         -p option is specified.  As part of this, set all groups if
182         initgroups() is specified on the platform.
184         Clean up race conditions inherited from the BSD source base.
187 Changes in 0.26:
188         Fix the configuration process so tftpd doesn't end up
189         depending on readline, which apparently could happen on some
190         platforms before.
192         Make parallel builds (make -j) work correctly.
194         Improve parsing of the "connect" command in the tftp client.
196         Add a -V option to both tftp and tftpd to print the version
197         number on stdout and immediately exit.
199         Add a -v option to tftp to start out in verbose mode.
200         
201         Rewrite the man pages using standard "man" troff macros.
203         Enable the (limited) use of readline on systems which don't
204         have readline/history.h.
206         Support compiling under MacOS X with fink (see
207         <http://fink.sourceforge.net/>).  Thanks for Justin Hallett
208         and Eric Eslinger for their help in getting this working!
211 Changes in 0.25:
212         Fixed Sorcerer's Apprentice bug in both the client and the
213         server.  These bugs were inherited from the original BSD code.
216 Changes in 0.24:
217         Fix bugs in both client and server dealing with block number
218         wraparound, usually manifesting themselves as failure to
219         handle files over 32 MB in size.
221         Officially make the client a part of the tftp-hpa project.
224 Changes in 0.23:
225         Correct memory overwrite bug in the tftp client when compiled
226         with readline.
229 Changes in 0.22:
230         Even more portability improvements: FreeBSD and
231         Tru64/Digital Unix.
233         Fix tsize option on systems on which off_t is "long long".
235         Support large files on systems which need _LARGE_FILE_BITS or
236         similar.
238         Some source cleanups; change to autoconf 2.52.
240         Add support for readline command-line editing in tftp.
243 Changes in 0.21:
244         Support running in standalone mode, without inetd.
246         Even more portability improvements.  Now known to compile and
247         run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
248         success or failure on other modern systems always appreciated.
250         Clean and modernize some really ugly old code.
252         Fix a potential illegal memory access when running in "totally
253         insecure mode" - no -s, no directories listed.
256 Changes in 0.20:
257         Portability improvements.  Now known to compile and run on
258         Solaris 8.
261 Changes in 0.19:
262         Fork before performing tcpwrappers check.
264         Don't rely on nonstandard bsd_signal() function, instead
265         require that the platform has sigaction().  This is 2001,
266         after all.  This may resolve some potential portability
267         problems.
269         Log a message if memory allocation fails, instead of dying
270         silently.
272         Clean up the main dispatch loop.
274         Use <sysexits.h> for exit codes, if it exists.
276         Add support for debugging remapping rulefiles; if logging with
277         -vvv tftpd will log all rules actions.
279         Correct the error code issued by an "abort" rule.
282 Changes in 0.18:
283         Support (almost) arbitrary filename remappings via regular
284         expression-based rulesets.
286         Added -v option for more verbose logging.
289 Changes in 0.17:
291         Add support for tcpwrapper checking (/etc/hosts.allow;
292         /etc/hosts.deny) in tftpd.
294         Compile correctly on glibc 2.1.2.
296         Add -u option to specify the user id to run as (default
297         "nobody".)
299         Operate in "daemon mode" as long as we keep getting requests.
300         This should speed up handling large amounts of requests at
301         once, as can happen when a client starts up, and avoids inetd
302         misconfiguration problems.
303         
305 Changes in 0.16:
307         Correct massive lossage from 0.15: apparently 0.15 was based
308         on an out-of-date CVS repository, somehow.
310         Fix for ACKs in TFTP PUT; patch by Roger Venning.
313 Changes in 0.15:
315         If the operating system allows, try to obtain the local
316         address used for the request packet, and reply using the same
317         local IP address.  Some embedded TFTP clients are (probably
318         incorrectly) picky about this.
321 Changes in 0.14:
323         Hacks to signal handling to avoid "zombie servers."
326 Changes in 0.13:
328         Added the non-standard option "blksize2".  The "blksize"
329         option is limited in its usability, since TFTP is designed to
330         be implemented in a ROM, and ROM code might find it painful to
331         deal with packets that don't meet certain alignment
332         restrictions.
334         The "blksize2" option tells the server that the block size
335         must be a power of 2 to be usable to the client.  The server
336         SHALL respond with a block size that is a power of two, up to
337         a maximum of 32768, or reject the option.  Furthermore, the
338         server SHALL grant a block size that is no smaller than 512
339         bytes unless the client explicitly requested a smaller block
340         size.  If the client request both options, the server MAY
341         accept one or the other, but not both.  At some point I will
342         probably write up an IETF draft for this option.
345 General information on the tftp-hpa series:
347 The core software was taken from OpenBSD (CVS source as of
348 1999-09-21).  I believe this was the most secure source base available
349 at the time I obtained this code, and it included support for the -s
350 and -c options.
352 The un-BSD-ized Makefiles and a lot of the configure macros were taken
353 from netkit-tftp-0.10 by David Holland; I also followed this example
354 and modernized the code style throughout.
356 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
357 option negotiation as well as the "blksize" and "tsize" option
358 support, although I made a fair amount of mostly stylistic changes to
359 their code.
361 Adding the -r option (disable a specific option), the "timeout"
362 option, converting to using autoconf for setup, and any additions
363 listed in the Changes list above, has all been my own code, as are any
364 bugs introduced in the merge.