2 Add IPv6 support. Patch by Karsten Keil.
6 Unbreak -l -s in the server, which was broken in 0.47.
10 Add -L option to the server to run standalone without
11 detaching from the shell.
17 Minor portability improvements.
21 Add -l (literal) option to the client, to override the special
22 treatment of the colon (:) character as a hostname separator.
26 Allow the client to specify a range of local port numbers,
27 just like the server can.
29 Fix sending SIGHUP to update the regular expression table.
33 Fix double-free error on ^c in client.
35 Try to deal with clients that send TFTP requests to broadcasts
36 (apparently some recent Sun boxes do this instead of using the
37 address told by DHCP. Bad Sun! Bad Sun!)
43 Try to disable path MTU discovery for TFTP connections (it's
46 Add a hack to allow the admin to specify a range of local port
49 Fix local IP number handling on systems which present
50 IP_RECVDSTADDR in recvmsg().
54 Fix bug by which patterns of the form \U\1 weren't converted
63 Fix bug which would cause "r" remapping rules to be
68 Support Perl-style \U...\E and \L...\E, as well as allow
69 matching rules to be inverted (execute if rule *doesn't*
82 Fix a pathology where a client sending ACKs for the wrong
83 packet can prevent proper retransmission.
91 Add an option to control the maximum value of blksize
94 Removed workaround for obsolete Cygwin problem.
96 Don't use getopt() -- the -c option doesn't work correctly
97 since it depends on the ordering of arguments and options. It
98 is now possible to do:
100 tftp -m binary hostname -c get filename
102 This was previous possible by doing:
104 tftp -m binary -c get hostname:filename
106 ... but it seemed that was counterintuitive to people.
108 Somewhat improved configure scripts.
112 Additional Solaris gcc compiler bug workarounds; these
113 actually make the code somewhat cleaner.
117 Even better error messages.
119 Work around a suspect Solaris gcc bug.
121 Configuration fix: readline needs termcap.
123 Support running the tftp client from the command line. For
126 tftp -m binary -c get hostname:file
130 Better error messages; including the capability to send a
131 custom error message to the client when hitting an "a" rule in
136 Put in a check to make sure xinetd (in particular) doesn't
137 pass us an IPv6 socket.
139 Fix some problems related to timeout negotiation.
141 Allow the user to set the default timeout speed.
145 (Hopefully) better timeout algorithm.
147 Add a "utimeout" option; like "timeout" but in microseconds.
149 Change the log level of client-side errors to LOG_WARNING.
151 autoconf portability improvements.
159 Now compiles and runs on Win32 systems using Cygwin
160 (http://www.cygwin.com/).
161 (<http://www.cygwin.com/>).
163 Fixed a bug which could cause a standalone server to exit with
164 a "recvfrom: Interrupted system call" log message if signals
165 arrive at a particularly inopportune moment.
167 Fix a macro substitution bug (thanks to Richard Nyberg.)
171 Fix stupid one-liner bug which broke standalone mode (-l).
175 Make the Digital Unix 4.0F platform work again. Thanks to
176 Alan Sundell for helping out with this platform!
178 Make the AIX 4.3 platform work again. Thanks to Josef Siemes
179 for helping out with this platform!
181 Allow replacement patterns to include the IP address of the
182 requesting host (\i).
184 Allow relying on Unix permissions rather than o+r magic if the
185 -p option is specified. As part of this, set all groups if
186 initgroups() is specified on the platform.
188 Clean up race conditions inherited from the BSD source base.
192 Fix the configuration process so tftpd doesn't end up
193 depending on readline, which apparently could happen on some
196 Make parallel builds (make -j) work correctly.
198 Improve parsing of the "connect" command in the tftp client.
200 Add a -V option to both tftp and tftpd to print the version
201 number on stdout and immediately exit.
203 Add a -v option to tftp to start out in verbose mode.
205 Rewrite the man pages using standard "man" troff macros.
207 Enable the (limited) use of readline on systems which don't
208 have readline/history.h.
210 Support compiling under MacOS X with fink (see
211 <http://fink.sourceforge.net/>). Thanks for Justin Hallett
212 and Eric Eslinger for their help in getting this working!
216 Fixed Sorcerer's Apprentice bug in both the client and the
217 server. These bugs were inherited from the original BSD code.
221 Fix bugs in both client and server dealing with block number
222 wraparound, usually manifesting themselves as failure to
223 handle files over 32 MB in size.
225 Officially make the client a part of the tftp-hpa project.
229 Correct memory overwrite bug in the tftp client when compiled
234 Even more portability improvements: FreeBSD and
237 Fix tsize option on systems on which off_t is "long long".
239 Support large files on systems which need _LARGE_FILE_BITS or
242 Some source cleanups; change to autoconf 2.52.
244 Add support for readline command-line editing in tftp.
248 Support running in standalone mode, without inetd.
250 Even more portability improvements. Now known to compile and
251 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of
252 success or failure on other modern systems always appreciated.
254 Clean and modernize some really ugly old code.
256 Fix a potential illegal memory access when running in "totally
257 insecure mode" - no -s, no directories listed.
261 Portability improvements. Now known to compile and run on
266 Fork before performing tcpwrappers check.
268 Don't rely on nonstandard bsd_signal() function, instead
269 require that the platform has sigaction(). This is 2001,
270 after all. This may resolve some potential portability
273 Log a message if memory allocation fails, instead of dying
276 Clean up the main dispatch loop.
278 Use <sysexits.h> for exit codes, if it exists.
280 Add support for debugging remapping rulefiles; if logging with
281 -vvv tftpd will log all rules actions.
283 Correct the error code issued by an "abort" rule.
287 Support (almost) arbitrary filename remappings via regular
288 expression-based rulesets.
290 Added -v option for more verbose logging.
295 Add support for tcpwrapper checking (/etc/hosts.allow;
296 /etc/hosts.deny) in tftpd.
298 Compile correctly on glibc 2.1.2.
300 Add -u option to specify the user id to run as (default
303 Operate in "daemon mode" as long as we keep getting requests.
304 This should speed up handling large amounts of requests at
305 once, as can happen when a client starts up, and avoids inetd
306 misconfiguration problems.
311 Correct massive lossage from 0.15: apparently 0.15 was based
312 on an out-of-date CVS repository, somehow.
314 Fix for ACKs in TFTP PUT; patch by Roger Venning.
319 If the operating system allows, try to obtain the local
320 address used for the request packet, and reply using the same
321 local IP address. Some embedded TFTP clients are (probably
322 incorrectly) picky about this.
327 Hacks to signal handling to avoid "zombie servers."
332 Added the non-standard option "blksize2". The "blksize"
333 option is limited in its usability, since TFTP is designed to
334 be implemented in a ROM, and ROM code might find it painful to
335 deal with packets that don't meet certain alignment
338 The "blksize2" option tells the server that the block size
339 must be a power of 2 to be usable to the client. The server
340 SHALL respond with a block size that is a power of two, up to
341 a maximum of 32768, or reject the option. Furthermore, the
342 server SHALL grant a block size that is no smaller than 512
343 bytes unless the client explicitly requested a smaller block
344 size. If the client request both options, the server MAY
345 accept one or the other, but not both. At some point I will
346 probably write up an IETF draft for this option.
349 General information on the tftp-hpa series:
351 The core software was taken from OpenBSD (CVS source as of
352 1999-09-21). I believe this was the most secure source base available
353 at the time I obtained this code, and it included support for the -s
356 The un-BSD-ized Makefiles and a lot of the configure macros were taken
357 from netkit-tftp-0.10 by David Holland; I also followed this example
358 and modernized the code style throughout.
360 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
361 option negotiation as well as the "blksize" and "tsize" option
362 support, although I made a fair amount of mostly stylistic changes to
365 Adding the -r option (disable a specific option), the "timeout"
366 option, converting to using autoconf for setup, and any additions
367 listed in the Changes list above, has all been my own code, as are any
368 bugs introduced in the merge.