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