recvfrom: fix the type of the fallthrough case
[tftp-hpa.git] / CHANGES
blobcdb9a2e3ac9830ba920d07a649eadf5ecb4dc475
1 Changes in 5.1:
2         Add -P option to write a PID file.  Patch by Ferenc Wagner.
4         Bounce the syslog socket in standalone mode, in case the
5         syslog daemon has been restarted.  Patch by Ferenc Wagner.
7         Build fixes.
10 Changes in 5.0:
11         Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
12         AI_CANONNAME.
14         Implement the "rollover" option, for clients which want block
15         number to rollover to anything other than zero.
17         Correctly disable PMTU in standalone mode.  Patch by Florian
18         Lohoff.
21 Changes in 0.49:
22         Add IPv6 support.  Patch by Karsten Keil.
24         Support systems with editline instead of readline.
26         Support long options in the server.
29 Changes in 0.48:
30         Unbreak -l -s in the server, which was broken in 0.47.
33 Changes in 0.47:
34         Add -L option to the server to run standalone without
35         detaching from the shell.
37         Parallel make fix.
40 Changes in 0.46:
41         Minor portability improvements.
44 Changes in 0.45:
45         Add -l (literal) option to the client, to override the special
46         treatment of the colon (:) character as a hostname separator.
49 Changes in 0.44:
50         Allow the client to specify a range of local port numbers,
51         just like the server can.
53         Fix sending SIGHUP to update the regular expression table.
56 Changes in 0.43:
57         Fix double-free error on ^c in client.
59         Try to deal with clients that send TFTP requests to broadcasts
60         (apparently some recent Sun boxes do this instead of using the
61         address told by DHCP.  Bad Sun!  Bad Sun!)
63         Portability fixes.
66 Changes in 0.42:
67         Try to disable path MTU discovery for TFTP connections (it's
68         useless anyway.)
70         Add a hack to allow the admin to specify a range of local port
71         numbers to use.
73         Fix local IP number handling on systems which present
74         IP_RECVDSTADDR in recvmsg().
77 Changes in 0.41:
78         Fix bug by which patterns of the form \U\1 weren't converted
79         correctly.
82 Changes in 0.40.1:
83         Solaris build fix.
86 Changes in 0.40:
87         Fix bug which would cause "r" remapping rules to be
88         incorrectly rejected.
91 Changes in 0.39:
92         Support Perl-style \U...\E and \L...\E, as well as allow
93         matching rules to be inverted (execute if rule *doesn't*
94         match.)
96         Fix a timeout bug.
98         Add an RPM spec file.
101 Changes in 0.38:
102         Portability fixes.
105 Changes in 0.37:
106         Fix a pathology where a client sending ACKs for the wrong
107         packet can prevent proper retransmission.
110 Changes in 0.36:
111         Portability fixes.
114 Changes in 0.35:
115         Add an option to control the maximum value of blksize
116         negotiated.
118         Removed workaround for obsolete Cygwin problem.
120         Don't use getopt() -- the -c option doesn't work correctly
121         since it depends on the ordering of arguments and options.  It
122         is now possible to do:
124         tftp -m binary hostname -c get filename
126         This was previous possible by doing:
128         tftp -m binary -c get hostname:filename
130         ... but it seemed that was counterintuitive to people.
132         Somewhat improved configure scripts.
135 Changes in 0.34:
136         Additional Solaris gcc compiler bug workarounds; these
137         actually make the code somewhat cleaner.
138         
140 Changes in 0.33:
141         Even better error messages.
143         Work around a suspect Solaris gcc bug.
145         Configuration fix: readline needs termcap.
147         Support running the tftp client from the command line.  For
148         example:
150                 tftp -m binary -c get hostname:file
153 Changes in 0.32:
154         Better error messages; including the capability to send a
155         custom error message to the client when hitting an "a" rule in
156         a remapping table.
159 Changes in 0.31:
160         Put in a check to make sure xinetd (in particular) doesn't
161         pass us an IPv6 socket.
163         Fix some problems related to timeout negotiation.
165         Allow the user to set the default timeout speed.
168 Changes in 0.30:
169         (Hopefully) better timeout algorithm.
171         Add a "utimeout" option; like "timeout" but in microseconds.
173         Change the log level of client-side errors to LOG_WARNING.
175         autoconf portability improvements.
177         Minor bugfixes.
180 Changes in 0.29:
181         Posixly correctness.
183         Now compiles and runs on Win32 systems using Cygwin
184         (http://www.cygwin.com/).
185         (<http://www.cygwin.com/>).
187         Fixed a bug which could cause a standalone server to exit with
188         a "recvfrom: Interrupted system call" log message if signals
189         arrive at a particularly inopportune moment.
191         Fix a macro substitution bug (thanks to Richard Nyberg.)
194 Changes in 0.28:
195         Fix stupid one-liner bug which broke standalone mode (-l).
198 Changes in 0.27:
199         Make the Digital Unix 4.0F platform work again.  Thanks to
200         Alan Sundell for helping out with this platform!
202         Make the AIX 4.3 platform work again.  Thanks to Josef Siemes
203         for helping out with this platform!
205         Allow replacement patterns to include the IP address of the
206         requesting host (\i).
208         Allow relying on Unix permissions rather than o+r magic if the
209         -p option is specified.  As part of this, set all groups if
210         initgroups() is specified on the platform.
212         Clean up race conditions inherited from the BSD source base.
215 Changes in 0.26:
216         Fix the configuration process so tftpd doesn't end up
217         depending on readline, which apparently could happen on some
218         platforms before.
220         Make parallel builds (make -j) work correctly.
222         Improve parsing of the "connect" command in the tftp client.
224         Add a -V option to both tftp and tftpd to print the version
225         number on stdout and immediately exit.
227         Add a -v option to tftp to start out in verbose mode.
228         
229         Rewrite the man pages using standard "man" troff macros.
231         Enable the (limited) use of readline on systems which don't
232         have readline/history.h.
234         Support compiling under MacOS X with fink (see
235         <http://fink.sourceforge.net/>).  Thanks for Justin Hallett
236         and Eric Eslinger for their help in getting this working!
239 Changes in 0.25:
240         Fixed Sorcerer's Apprentice bug in both the client and the
241         server.  These bugs were inherited from the original BSD code.
244 Changes in 0.24:
245         Fix bugs in both client and server dealing with block number
246         wraparound, usually manifesting themselves as failure to
247         handle files over 32 MB in size.
249         Officially make the client a part of the tftp-hpa project.
252 Changes in 0.23:
253         Correct memory overwrite bug in the tftp client when compiled
254         with readline.
257 Changes in 0.22:
258         Even more portability improvements: FreeBSD and
259         Tru64/Digital Unix.
261         Fix tsize option on systems on which off_t is "long long".
263         Support large files on systems which need _LARGE_FILE_BITS or
264         similar.
266         Some source cleanups; change to autoconf 2.52.
268         Add support for readline command-line editing in tftp.
271 Changes in 0.21:
272         Support running in standalone mode, without inetd.
274         Even more portability improvements.  Now known to compile and
275         run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
276         success or failure on other modern systems always appreciated.
278         Clean and modernize some really ugly old code.
280         Fix a potential illegal memory access when running in "totally
281         insecure mode" - no -s, no directories listed.
284 Changes in 0.20:
285         Portability improvements.  Now known to compile and run on
286         Solaris 8.
289 Changes in 0.19:
290         Fork before performing tcpwrappers check.
292         Don't rely on nonstandard bsd_signal() function, instead
293         require that the platform has sigaction().  This is 2001,
294         after all.  This may resolve some potential portability
295         problems.
297         Log a message if memory allocation fails, instead of dying
298         silently.
300         Clean up the main dispatch loop.
302         Use <sysexits.h> for exit codes, if it exists.
304         Add support for debugging remapping rulefiles; if logging with
305         -vvv tftpd will log all rules actions.
307         Correct the error code issued by an "abort" rule.
310 Changes in 0.18:
311         Support (almost) arbitrary filename remappings via regular
312         expression-based rulesets.
314         Added -v option for more verbose logging.
317 Changes in 0.17:
319         Add support for tcpwrapper checking (/etc/hosts.allow;
320         /etc/hosts.deny) in tftpd.
322         Compile correctly on glibc 2.1.2.
324         Add -u option to specify the user id to run as (default
325         "nobody".)
327         Operate in "daemon mode" as long as we keep getting requests.
328         This should speed up handling large amounts of requests at
329         once, as can happen when a client starts up, and avoids inetd
330         misconfiguration problems.
331         
333 Changes in 0.16:
335         Correct massive lossage from 0.15: apparently 0.15 was based
336         on an out-of-date CVS repository, somehow.
338         Fix for ACKs in TFTP PUT; patch by Roger Venning.
341 Changes in 0.15:
343         If the operating system allows, try to obtain the local
344         address used for the request packet, and reply using the same
345         local IP address.  Some embedded TFTP clients are (probably
346         incorrectly) picky about this.
349 Changes in 0.14:
351         Hacks to signal handling to avoid "zombie servers."
354 Changes in 0.13:
356         Added the non-standard option "blksize2".  The "blksize"
357         option is limited in its usability, since TFTP is designed to
358         be implemented in a ROM, and ROM code might find it painful to
359         deal with packets that don't meet certain alignment
360         restrictions.
362         The "blksize2" option tells the server that the block size
363         must be a power of 2 to be usable to the client.  The server
364         SHALL respond with a block size that is a power of two, up to
365         a maximum of 32768, or reject the option.  Furthermore, the
366         server SHALL grant a block size that is no smaller than 512
367         bytes unless the client explicitly requested a smaller block
368         size.  If the client request both options, the server MAY
369         accept one or the other, but not both.  At some point I will
370         probably write up an IETF draft for this option.
373 General information on the tftp-hpa series:
375 The core software was taken from OpenBSD (CVS source as of
376 1999-09-21).  I believe this was the most secure source base available
377 at the time I obtained this code, and it included support for the -s
378 and -c options.
380 The un-BSD-ized Makefiles and a lot of the configure macros were taken
381 from netkit-tftp-0.10 by David Holland; I also followed this example
382 and modernized the code style throughout.
384 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
385 option negotiation as well as the "blksize" and "tsize" option
386 support, although I made a fair amount of mostly stylistic changes to
387 their code.
389 Adding the -r option (disable a specific option), the "timeout"
390 option, converting to using autoconf for setup, and any additions
391 listed in the Changes list above, has all been my own code, as are any
392 bugs introduced in the merge.