2 Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
7 Add IPv6 support. Patch by Karsten Keil.
9 Support systems with editline instead of readline.
11 Support long options in the server.
15 Unbreak -l -s in the server, which was broken in 0.47.
19 Add -L option to the server to run standalone without
20 detaching from the shell.
26 Minor portability improvements.
30 Add -l (literal) option to the client, to override the special
31 treatment of the colon (:) character as a hostname separator.
35 Allow the client to specify a range of local port numbers,
36 just like the server can.
38 Fix sending SIGHUP to update the regular expression table.
42 Fix double-free error on ^c in client.
44 Try to deal with clients that send TFTP requests to broadcasts
45 (apparently some recent Sun boxes do this instead of using the
46 address told by DHCP. Bad Sun! Bad Sun!)
52 Try to disable path MTU discovery for TFTP connections (it's
55 Add a hack to allow the admin to specify a range of local port
58 Fix local IP number handling on systems which present
59 IP_RECVDSTADDR in recvmsg().
63 Fix bug by which patterns of the form \U\1 weren't converted
72 Fix bug which would cause "r" remapping rules to be
77 Support Perl-style \U...\E and \L...\E, as well as allow
78 matching rules to be inverted (execute if rule *doesn't*
91 Fix a pathology where a client sending ACKs for the wrong
92 packet can prevent proper retransmission.
100 Add an option to control the maximum value of blksize
103 Removed workaround for obsolete Cygwin problem.
105 Don't use getopt() -- the -c option doesn't work correctly
106 since it depends on the ordering of arguments and options. It
107 is now possible to do:
109 tftp -m binary hostname -c get filename
111 This was previous possible by doing:
113 tftp -m binary -c get hostname:filename
115 ... but it seemed that was counterintuitive to people.
117 Somewhat improved configure scripts.
121 Additional Solaris gcc compiler bug workarounds; these
122 actually make the code somewhat cleaner.
126 Even better error messages.
128 Work around a suspect Solaris gcc bug.
130 Configuration fix: readline needs termcap.
132 Support running the tftp client from the command line. For
135 tftp -m binary -c get hostname:file
139 Better error messages; including the capability to send a
140 custom error message to the client when hitting an "a" rule in
145 Put in a check to make sure xinetd (in particular) doesn't
146 pass us an IPv6 socket.
148 Fix some problems related to timeout negotiation.
150 Allow the user to set the default timeout speed.
154 (Hopefully) better timeout algorithm.
156 Add a "utimeout" option; like "timeout" but in microseconds.
158 Change the log level of client-side errors to LOG_WARNING.
160 autoconf portability improvements.
168 Now compiles and runs on Win32 systems using Cygwin
169 (http://www.cygwin.com/).
170 (<http://www.cygwin.com/>).
172 Fixed a bug which could cause a standalone server to exit with
173 a "recvfrom: Interrupted system call" log message if signals
174 arrive at a particularly inopportune moment.
176 Fix a macro substitution bug (thanks to Richard Nyberg.)
180 Fix stupid one-liner bug which broke standalone mode (-l).
184 Make the Digital Unix 4.0F platform work again. Thanks to
185 Alan Sundell for helping out with this platform!
187 Make the AIX 4.3 platform work again. Thanks to Josef Siemes
188 for helping out with this platform!
190 Allow replacement patterns to include the IP address of the
191 requesting host (\i).
193 Allow relying on Unix permissions rather than o+r magic if the
194 -p option is specified. As part of this, set all groups if
195 initgroups() is specified on the platform.
197 Clean up race conditions inherited from the BSD source base.
201 Fix the configuration process so tftpd doesn't end up
202 depending on readline, which apparently could happen on some
205 Make parallel builds (make -j) work correctly.
207 Improve parsing of the "connect" command in the tftp client.
209 Add a -V option to both tftp and tftpd to print the version
210 number on stdout and immediately exit.
212 Add a -v option to tftp to start out in verbose mode.
214 Rewrite the man pages using standard "man" troff macros.
216 Enable the (limited) use of readline on systems which don't
217 have readline/history.h.
219 Support compiling under MacOS X with fink (see
220 <http://fink.sourceforge.net/>). Thanks for Justin Hallett
221 and Eric Eslinger for their help in getting this working!
225 Fixed Sorcerer's Apprentice bug in both the client and the
226 server. These bugs were inherited from the original BSD code.
230 Fix bugs in both client and server dealing with block number
231 wraparound, usually manifesting themselves as failure to
232 handle files over 32 MB in size.
234 Officially make the client a part of the tftp-hpa project.
238 Correct memory overwrite bug in the tftp client when compiled
243 Even more portability improvements: FreeBSD and
246 Fix tsize option on systems on which off_t is "long long".
248 Support large files on systems which need _LARGE_FILE_BITS or
251 Some source cleanups; change to autoconf 2.52.
253 Add support for readline command-line editing in tftp.
257 Support running in standalone mode, without inetd.
259 Even more portability improvements. Now known to compile and
260 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of
261 success or failure on other modern systems always appreciated.
263 Clean and modernize some really ugly old code.
265 Fix a potential illegal memory access when running in "totally
266 insecure mode" - no -s, no directories listed.
270 Portability improvements. Now known to compile and run on
275 Fork before performing tcpwrappers check.
277 Don't rely on nonstandard bsd_signal() function, instead
278 require that the platform has sigaction(). This is 2001,
279 after all. This may resolve some potential portability
282 Log a message if memory allocation fails, instead of dying
285 Clean up the main dispatch loop.
287 Use <sysexits.h> for exit codes, if it exists.
289 Add support for debugging remapping rulefiles; if logging with
290 -vvv tftpd will log all rules actions.
292 Correct the error code issued by an "abort" rule.
296 Support (almost) arbitrary filename remappings via regular
297 expression-based rulesets.
299 Added -v option for more verbose logging.
304 Add support for tcpwrapper checking (/etc/hosts.allow;
305 /etc/hosts.deny) in tftpd.
307 Compile correctly on glibc 2.1.2.
309 Add -u option to specify the user id to run as (default
312 Operate in "daemon mode" as long as we keep getting requests.
313 This should speed up handling large amounts of requests at
314 once, as can happen when a client starts up, and avoids inetd
315 misconfiguration problems.
320 Correct massive lossage from 0.15: apparently 0.15 was based
321 on an out-of-date CVS repository, somehow.
323 Fix for ACKs in TFTP PUT; patch by Roger Venning.
328 If the operating system allows, try to obtain the local
329 address used for the request packet, and reply using the same
330 local IP address. Some embedded TFTP clients are (probably
331 incorrectly) picky about this.
336 Hacks to signal handling to avoid "zombie servers."
341 Added the non-standard option "blksize2". The "blksize"
342 option is limited in its usability, since TFTP is designed to
343 be implemented in a ROM, and ROM code might find it painful to
344 deal with packets that don't meet certain alignment
347 The "blksize2" option tells the server that the block size
348 must be a power of 2 to be usable to the client. The server
349 SHALL respond with a block size that is a power of two, up to
350 a maximum of 32768, or reject the option. Furthermore, the
351 server SHALL grant a block size that is no smaller than 512
352 bytes unless the client explicitly requested a smaller block
353 size. If the client request both options, the server MAY
354 accept one or the other, but not both. At some point I will
355 probably write up an IETF draft for this option.
358 General information on the tftp-hpa series:
360 The core software was taken from OpenBSD (CVS source as of
361 1999-09-21). I believe this was the most secure source base available
362 at the time I obtained this code, and it included support for the -s
365 The un-BSD-ized Makefiles and a lot of the configure macros were taken
366 from netkit-tftp-0.10 by David Holland; I also followed this example
367 and modernized the code style throughout.
369 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
370 option negotiation as well as the "blksize" and "tsize" option
371 support, although I made a fair amount of mostly stylistic changes to
374 Adding the -r option (disable a specific option), the "timeout"
375 option, converting to using autoconf for setup, and any additions
376 listed in the Changes list above, has all been my own code, as are any
377 bugs introduced in the merge.