2 Add -P option to write a PID file. Patch by Ferenc Wagner.
4 Bounce the syslog socket in standalone mode, in case the
5 syslog daemon has been restarted. Patch by Ferenc Wagner.
11 Try to on platforms with getaddrinfo() without AI_ADDRCONFIG or
14 Implement the "rollover" option, for clients which want block
15 number to rollover to anything other than zero.
17 Correctly disable PMTU in standalone mode. Patch by Florian
22 Add IPv6 support. Patch by Karsten Keil.
24 Support systems with editline instead of readline.
26 Support long options in the server.
30 Unbreak -l -s in the server, which was broken in 0.47.
34 Add -L option to the server to run standalone without
35 detaching from the shell.
41 Minor portability improvements.
45 Add -l (literal) option to the client, to override the special
46 treatment of the colon (:) character as a hostname separator.
50 Allow the client to specify a range of local port numbers,
51 just like the server can.
53 Fix sending SIGHUP to update the regular expression table.
57 Fix double-free error on ^c in client.
59 Try to deal with clients that send TFTP requests to broadcasts
60 (apparently some recent Sun boxes do this instead of using the
61 address told by DHCP. Bad Sun! Bad Sun!)
67 Try to disable path MTU discovery for TFTP connections (it's
70 Add a hack to allow the admin to specify a range of local port
73 Fix local IP number handling on systems which present
74 IP_RECVDSTADDR in recvmsg().
78 Fix bug by which patterns of the form \U\1 weren't converted
87 Fix bug which would cause "r" remapping rules to be
92 Support Perl-style \U...\E and \L...\E, as well as allow
93 matching rules to be inverted (execute if rule *doesn't*
106 Fix a pathology where a client sending ACKs for the wrong
107 packet can prevent proper retransmission.
115 Add an option to control the maximum value of blksize
118 Removed workaround for obsolete Cygwin problem.
120 Don't use getopt() -- the -c option doesn't work correctly
121 since it depends on the ordering of arguments and options. It
122 is now possible to do:
124 tftp -m binary hostname -c get filename
126 This was previous possible by doing:
128 tftp -m binary -c get hostname:filename
130 ... but it seemed that was counterintuitive to people.
132 Somewhat improved configure scripts.
136 Additional Solaris gcc compiler bug workarounds; these
137 actually make the code somewhat cleaner.
141 Even better error messages.
143 Work around a suspect Solaris gcc bug.
145 Configuration fix: readline needs termcap.
147 Support running the tftp client from the command line. For
150 tftp -m binary -c get hostname:file
154 Better error messages; including the capability to send a
155 custom error message to the client when hitting an "a" rule in
160 Put in a check to make sure xinetd (in particular) doesn't
161 pass us an IPv6 socket.
163 Fix some problems related to timeout negotiation.
165 Allow the user to set the default timeout speed.
169 (Hopefully) better timeout algorithm.
171 Add a "utimeout" option; like "timeout" but in microseconds.
173 Change the log level of client-side errors to LOG_WARNING.
175 autoconf portability improvements.
183 Now compiles and runs on Win32 systems using Cygwin
184 (http://www.cygwin.com/).
185 (<http://www.cygwin.com/>).
187 Fixed a bug which could cause a standalone server to exit with
188 a "recvfrom: Interrupted system call" log message if signals
189 arrive at a particularly inopportune moment.
191 Fix a macro substitution bug (thanks to Richard Nyberg.)
195 Fix stupid one-liner bug which broke standalone mode (-l).
199 Make the Digital Unix 4.0F platform work again. Thanks to
200 Alan Sundell for helping out with this platform!
202 Make the AIX 4.3 platform work again. Thanks to Josef Siemes
203 for helping out with this platform!
205 Allow replacement patterns to include the IP address of the
206 requesting host (\i).
208 Allow relying on Unix permissions rather than o+r magic if the
209 -p option is specified. As part of this, set all groups if
210 initgroups() is specified on the platform.
212 Clean up race conditions inherited from the BSD source base.
216 Fix the configuration process so tftpd doesn't end up
217 depending on readline, which apparently could happen on some
220 Make parallel builds (make -j) work correctly.
222 Improve parsing of the "connect" command in the tftp client.
224 Add a -V option to both tftp and tftpd to print the version
225 number on stdout and immediately exit.
227 Add a -v option to tftp to start out in verbose mode.
229 Rewrite the man pages using standard "man" troff macros.
231 Enable the (limited) use of readline on systems which don't
232 have readline/history.h.
234 Support compiling under MacOS X with fink (see
235 <http://fink.sourceforge.net/>). Thanks for Justin Hallett
236 and Eric Eslinger for their help in getting this working!
240 Fixed Sorcerer's Apprentice bug in both the client and the
241 server. These bugs were inherited from the original BSD code.
245 Fix bugs in both client and server dealing with block number
246 wraparound, usually manifesting themselves as failure to
247 handle files over 32 MB in size.
249 Officially make the client a part of the tftp-hpa project.
253 Correct memory overwrite bug in the tftp client when compiled
258 Even more portability improvements: FreeBSD and
261 Fix tsize option on systems on which off_t is "long long".
263 Support large files on systems which need _LARGE_FILE_BITS or
266 Some source cleanups; change to autoconf 2.52.
268 Add support for readline command-line editing in tftp.
272 Support running in standalone mode, without inetd.
274 Even more portability improvements. Now known to compile and
275 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of
276 success or failure on other modern systems always appreciated.
278 Clean and modernize some really ugly old code.
280 Fix a potential illegal memory access when running in "totally
281 insecure mode" - no -s, no directories listed.
285 Portability improvements. Now known to compile and run on
290 Fork before performing tcpwrappers check.
292 Don't rely on nonstandard bsd_signal() function, instead
293 require that the platform has sigaction(). This is 2001,
294 after all. This may resolve some potential portability
297 Log a message if memory allocation fails, instead of dying
300 Clean up the main dispatch loop.
302 Use <sysexits.h> for exit codes, if it exists.
304 Add support for debugging remapping rulefiles; if logging with
305 -vvv tftpd will log all rules actions.
307 Correct the error code issued by an "abort" rule.
311 Support (almost) arbitrary filename remappings via regular
312 expression-based rulesets.
314 Added -v option for more verbose logging.
319 Add support for tcpwrapper checking (/etc/hosts.allow;
320 /etc/hosts.deny) in tftpd.
322 Compile correctly on glibc 2.1.2.
324 Add -u option to specify the user id to run as (default
327 Operate in "daemon mode" as long as we keep getting requests.
328 This should speed up handling large amounts of requests at
329 once, as can happen when a client starts up, and avoids inetd
330 misconfiguration problems.
335 Correct massive lossage from 0.15: apparently 0.15 was based
336 on an out-of-date CVS repository, somehow.
338 Fix for ACKs in TFTP PUT; patch by Roger Venning.
343 If the operating system allows, try to obtain the local
344 address used for the request packet, and reply using the same
345 local IP address. Some embedded TFTP clients are (probably
346 incorrectly) picky about this.
351 Hacks to signal handling to avoid "zombie servers."
356 Added the non-standard option "blksize2". The "blksize"
357 option is limited in its usability, since TFTP is designed to
358 be implemented in a ROM, and ROM code might find it painful to
359 deal with packets that don't meet certain alignment
362 The "blksize2" option tells the server that the block size
363 must be a power of 2 to be usable to the client. The server
364 SHALL respond with a block size that is a power of two, up to
365 a maximum of 32768, or reject the option. Furthermore, the
366 server SHALL grant a block size that is no smaller than 512
367 bytes unless the client explicitly requested a smaller block
368 size. If the client request both options, the server MAY
369 accept one or the other, but not both. At some point I will
370 probably write up an IETF draft for this option.
373 General information on the tftp-hpa series:
375 The core software was taken from OpenBSD (CVS source as of
376 1999-09-21). I believe this was the most secure source base available
377 at the time I obtained this code, and it included support for the -s
380 The un-BSD-ized Makefiles and a lot of the configure macros were taken
381 from netkit-tftp-0.10 by David Holland; I also followed this example
382 and modernized the code style throughout.
384 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
385 option negotiation as well as the "blksize" and "tsize" option
386 support, although I made a fair amount of mostly stylistic changes to
389 Adding the -r option (disable a specific option), the "timeout"
390 option, converting to using autoconf for setup, and any additions
391 listed in the Changes list above, has all been my own code, as are any
392 bugs introduced in the merge.