2 Add -l (literal) option to the client, to override the special
3 treatment of the colon (:) character as a hostname separator.
7 Allow the client to specify a range of local port numbers,
8 just like the server can.
10 Fix sending SIGHUP to update the regular expression table.
14 Fix double-free error on ^c in client.
16 Try to deal with clients that send TFTP requests to broadcasts
17 (apparently some recent Sun boxes do this instead of using the
18 address told by DHCP. Bad Sun! Bad Sun!)
24 Try to disable path MTU discovery for TFTP connections (it's
27 Add a hack to allow the admin to specify a range of local port
30 Fix local IP number handling on systems which present
31 IP_RECVDSTADDR in recvmsg().
35 Fix bug by which patterns of the form \U\1 weren't converted
44 Fix bug which would cause "r" remapping rules to be
49 Support Perl-style \U...\E and \L...\E, as well as allow
50 matching rules to be inverted (execute if rule *doesn't*
63 Fix a pathology where a client sending ACKs for the wrong
64 packet can prevent proper retransmission.
72 Add an option to control the maximum value of blksize
75 Removed workaround for obsolete Cygwin problem.
77 Don't use getopt() -- the -c option doesn't work correctly
78 since it depends on the ordering of arguments and options. It
79 is now possible to do:
81 tftp -m binary hostname -c get filename
83 This was previous possible by doing:
85 tftp -m binary -c get hostname:filename
87 ... but it seemed that was counterintuitive to people.
89 Somewhat improved configure scripts.
93 Additional Solaris gcc compiler bug workarounds; these
94 actually make the code somewhat cleaner.
98 Even better error messages.
100 Work around a suspect Solaris gcc bug.
102 Configuration fix: readline needs termcap.
104 Support running the tftp client from the command line. For
107 tftp -m binary -c get hostname:file
111 Better error messages; including the capability to send a
112 custom error message to the client when hitting an "a" rule in
117 Put in a check to make sure xinetd (in particular) doesn't
118 pass us an IPv6 socket.
120 Fix some problems related to timeout negotiation.
122 Allow the user to set the default timeout speed.
126 (Hopefully) better timeout algorithm.
128 Add a "utimeout" option; like "timeout" but in microseconds.
130 Change the log level of client-side errors to LOG_WARNING.
132 autoconf portability improvements.
140 Now compiles and runs on Win32 systems using Cygwin
141 (http://www.cygwin.com/).
142 (<http://www.cygwin.com/>).
144 Fixed a bug which could cause a standalone server to exit with
145 a "recvfrom: Interrupted system call" log message if signals
146 arrive at a particularly inopportune moment.
148 Fix a macro substitution bug (thanks to Richard Nyberg.)
152 Fix stupid one-liner bug which broke standalone mode (-l).
156 Make the Digital Unix 4.0F platform work again. Thanks to
157 Alan Sundell for helping out with this platform!
159 Make the AIX 4.3 platform work again. Thanks to Josef Siemes
160 for helping out with this platform!
162 Allow replacement patterns to include the IP address of the
163 requesting host (\i).
165 Allow relying on Unix permissions rather than o+r magic if the
166 -p option is specified. As part of this, set all groups if
167 initgroups() is specified on the platform.
169 Clean up race conditions inherited from the BSD source base.
173 Fix the configuration process so tftpd doesn't end up
174 depending on readline, which apparently could happen on some
177 Make parallel builds (make -j) work correctly.
179 Improve parsing of the "connect" command in the tftp client.
181 Add a -V option to both tftp and tftpd to print the version
182 number on stdout and immediately exit.
184 Add a -v option to tftp to start out in verbose mode.
186 Rewrite the man pages using standard "man" troff macros.
188 Enable the (limited) use of readline on systems which don't
189 have readline/history.h.
191 Support compiling under MacOS X with fink (see
192 <http://fink.sourceforge.net/>). Thanks for Justin Hallett
193 and Eric Eslinger for their help in getting this working!
197 Fixed Sorcerer's Apprentice bug in both the client and the
198 server. These bugs were inherited from the original BSD code.
202 Fix bugs in both client and server dealing with block number
203 wraparound, usually manifesting themselves as failure to
204 handle files over 32 MB in size.
206 Officially make the client a part of the tftp-hpa project.
210 Correct memory overwrite bug in the tftp client when compiled
215 Even more portability improvements: FreeBSD and
218 Fix tsize option on systems on which off_t is "long long".
220 Support large files on systems which need _LARGE_FILE_BITS or
223 Some source cleanups; change to autoconf 2.52.
225 Add support for readline command-line editing in tftp.
229 Support running in standalone mode, without inetd.
231 Even more portability improvements. Now known to compile and
232 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of
233 success or failure on other modern systems always appreciated.
235 Clean and modernize some really ugly old code.
237 Fix a potential illegal memory access when running in "totally
238 insecure mode" - no -s, no directories listed.
242 Portability improvements. Now known to compile and run on
247 Fork before performing tcpwrappers check.
249 Don't rely on nonstandard bsd_signal() function, instead
250 require that the platform has sigaction(). This is 2001,
251 after all. This may resolve some potential portability
254 Log a message if memory allocation fails, instead of dying
257 Clean up the main dispatch loop.
259 Use <sysexits.h> for exit codes, if it exists.
261 Add support for debugging remapping rulefiles; if logging with
262 -vvv tftpd will log all rules actions.
264 Correct the error code issued by an "abort" rule.
268 Support (almost) arbitrary filename remappings via regular
269 expression-based rulesets.
271 Added -v option for more verbose logging.
276 Add support for tcpwrapper checking (/etc/hosts.allow;
277 /etc/hosts.deny) in tftpd.
279 Compile correctly on glibc 2.1.2.
281 Add -u option to specify the user id to run as (default
284 Operate in "daemon mode" as long as we keep getting requests.
285 This should speed up handling large amounts of requests at
286 once, as can happen when a client starts up, and avoids inetd
287 misconfiguration problems.
292 Correct massive lossage from 0.15: apparently 0.15 was based
293 on an out-of-date CVS repository, somehow.
295 Fix for ACKs in TFTP PUT; patch by Roger Venning.
300 If the operating system allows, try to obtain the local
301 address used for the request packet, and reply using the same
302 local IP address. Some embedded TFTP clients are (probably
303 incorrectly) picky about this.
308 Hacks to signal handling to avoid "zombie servers."
313 Added the non-standard option "blksize2". The "blksize"
314 option is limited in its usability, since TFTP is designed to
315 be implemented in a ROM, and ROM code might find it painful to
316 deal with packets that don't meet certain alignment
319 The "blksize2" option tells the server that the block size
320 must be a power of 2 to be usable to the client. The server
321 SHALL respond with a block size that is a power of two, up to
322 a maximum of 32768, or reject the option. Furthermore, the
323 server SHALL grant a block size that is no smaller than 512
324 bytes unless the client explicitly requested a smaller block
325 size. If the client request both options, the server MAY
326 accept one or the other, but not both. At some point I will
327 probably write up an IETF draft for this option.
330 General information on the tftp-hpa series:
332 The core software was taken from OpenBSD (CVS source as of
333 1999-09-21). I believe this was the most secure source base available
334 at the time I obtained this code, and it included support for the -s
337 The un-BSD-ized Makefiles and a lot of the configure macros were taken
338 from netkit-tftp-0.10 by David Holland; I also followed this example
339 and modernized the code style throughout.
341 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
342 option negotiation as well as the "blksize" and "tsize" option
343 support, although I made a fair amount of mostly stylistic changes to
346 Adding the -r option (disable a specific option), the "timeout"
347 option, converting to using autoconf for setup, and any additions
348 listed in the Changes list above, has all been my own code, as are any
349 bugs introduced in the merge.