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