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