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