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