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