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