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