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