2 Fix double-free error on ^c in client.
6 Try to disable path MTU discovery for TFTP connections (it's
9 Add a hack to allow the admin to specify a range of local port
12 Fix local IP number handling on systems which present
13 IP_RECVDSTADDR in recvmsg().
17 Fix bug by which patterns of the form \U\1 weren't converted
26 Fix bug which would cause "r" remapping rules to be
31 Support Perl-style \U...\E and \L...\E, as well as allow
32 matching rules to be inverted (execute if rule *doesn't*
45 Fix a pathology where a client sending ACKs for the wrong
46 packet can prevent proper retransmission.
54 Add an option to control the maximum value of blksize
57 Removed workaround for obsolete Cygwin problem.
59 Don't use getopt() -- the -c option doesn't work correctly
60 since it depends on the ordering of arguments and options. It
61 is now possible to do:
63 tftp -m binary hostname -c get filename
65 This was previous possible by doing:
67 tftp -m binary -c get hostname:filename
69 ... but it seemed that was counterintuitive to people.
71 Somewhat improved configure scripts.
75 Additional Solaris gcc compiler bug workarounds; these
76 actually make the code somewhat cleaner.
80 Even better error messages.
82 Work around a suspect Solaris gcc bug.
84 Configuration fix: readline needs termcap.
86 Support running the tftp client from the command line. For
89 tftp -m binary -c get hostname:file
93 Better error messages; including the capability to send a
94 custom error message to the client when hitting an "a" rule in
99 Put in a check to make sure xinetd (in particular) doesn't
100 pass us an IPv6 socket.
102 Fix some problems related to timeout negotiation.
104 Allow the user to set the default timeout speed.
108 (Hopefully) better timeout algorithm.
110 Add a "utimeout" option; like "timeout" but in microseconds.
112 Change the log level of client-side errors to LOG_WARNING.
114 autoconf portability improvements.
122 Now compiles and runs on Win32 systems using Cygwin
123 (http://www.cygwin.com/).
124 (<http://www.cygwin.com/>).
126 Fixed a bug which could cause a standalone server to exit with
127 a "recvfrom: Interrupted system call" log message if signals
128 arrive at a particularly inopportune moment.
130 Fix a macro substitution bug (thanks to Richard Nyberg.)
134 Fix stupid one-liner bug which broke standalone mode (-l).
138 Make the Digital Unix 4.0F platform work again. Thanks to
139 Alan Sundell for helping out with this platform!
141 Make the AIX 4.3 platform work again. Thanks to Josef Siemes
142 for helping out with this platform!
144 Allow replacement patterns to include the IP address of the
145 requesting host (\i).
147 Allow relying on Unix permissions rather than o+r magic if the
148 -p option is specified. As part of this, set all groups if
149 initgroups() is specified on the platform.
151 Clean up race conditions inherited from the BSD source base.
155 Fix the configuration process so tftpd doesn't end up
156 depending on readline, which apparently could happen on some
159 Make parallel builds (make -j) work correctly.
161 Improve parsing of the "connect" command in the tftp client.
163 Add a -V option to both tftp and tftpd to print the version
164 number on stdout and immediately exit.
166 Add a -v option to tftp to start out in verbose mode.
168 Rewrite the man pages using standard "man" troff macros.
170 Enable the (limited) use of readline on systems which don't
171 have readline/history.h.
173 Support compiling under MacOS X with fink (see
174 <http://fink.sourceforge.net/>). Thanks for Justin Hallett
175 and Eric Eslinger for their help in getting this working!
179 Fixed Sorcerer's Apprentice bug in both the client and the
180 server. These bugs were inherited from the original BSD code.
184 Fix bugs in both client and server dealing with block number
185 wraparound, usually manifesting themselves as failure to
186 handle files over 32 MB in size.
188 Officially make the client a part of the tftp-hpa project.
192 Correct memory overwrite bug in the tftp client when compiled
197 Even more portability improvements: FreeBSD and
200 Fix tsize option on systems on which off_t is "long long".
202 Support large files on systems which need _LARGE_FILE_BITS or
205 Some source cleanups; change to autoconf 2.52.
207 Add support for readline command-line editing in tftp.
211 Support running in standalone mode, without inetd.
213 Even more portability improvements. Now known to compile and
214 run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX. Reports of
215 success or failure on other modern systems always appreciated.
217 Clean and modernize some really ugly old code.
219 Fix a potential illegal memory access when running in "totally
220 insecure mode" - no -s, no directories listed.
224 Portability improvements. Now known to compile and run on
229 Fork before performing tcpwrappers check.
231 Don't rely on nonstandard bsd_signal() function, instead
232 require that the platform has sigaction(). This is 2001,
233 after all. This may resolve some potential portability
236 Log a message if memory allocation fails, instead of dying
239 Clean up the main dispatch loop.
241 Use <sysexits.h> for exit codes, if it exists.
243 Add support for debugging remapping rulefiles; if logging with
244 -vvv tftpd will log all rules actions.
246 Correct the error code issued by an "abort" rule.
250 Support (almost) arbitrary filename remappings via regular
251 expression-based rulesets.
253 Added -v option for more verbose logging.
258 Add support for tcpwrapper checking (/etc/hosts.allow;
259 /etc/hosts.deny) in tftpd.
261 Compile correctly on glibc 2.1.2.
263 Add -u option to specify the user id to run as (default
266 Operate in "daemon mode" as long as we keep getting requests.
267 This should speed up handling large amounts of requests at
268 once, as can happen when a client starts up, and avoids inetd
269 misconfiguration problems.
274 Correct massive lossage from 0.15: apparently 0.15 was based
275 on an out-of-date CVS repository, somehow.
277 Fix for ACKs in TFTP PUT; patch by Roger Venning.
282 If the operating system allows, try to obtain the local
283 address used for the request packet, and reply using the same
284 local IP address. Some embedded TFTP clients are (probably
285 incorrectly) picky about this.
290 Hacks to signal handling to avoid "zombie servers."
295 Added the non-standard option "blksize2". The "blksize"
296 option is limited in its usability, since TFTP is designed to
297 be implemented in a ROM, and ROM code might find it painful to
298 deal with packets that don't meet certain alignment
301 The "blksize2" option tells the server that the block size
302 must be a power of 2 to be usable to the client. The server
303 SHALL respond with a block size that is a power of two, up to
304 a maximum of 32768, or reject the option. Furthermore, the
305 server SHALL grant a block size that is no smaller than 512
306 bytes unless the client explicitly requested a smaller block
307 size. If the client request both options, the server MAY
308 accept one or the other, but not both. At some point I will
309 probably write up an IETF draft for this option.
312 General information on the tftp-hpa series:
314 The core software was taken from OpenBSD (CVS source as of
315 1999-09-21). I believe this was the most secure source base available
316 at the time I obtained this code, and it included support for the -s
319 The un-BSD-ized Makefiles and a lot of the configure macros were taken
320 from netkit-tftp-0.10 by David Holland; I also followed this example
321 and modernized the code style throughout.
323 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
324 option negotiation as well as the "blksize" and "tsize" option
325 support, although I made a fair amount of mostly stylistic changes to
328 Adding the -r option (disable a specific option), the "timeout"
329 option, converting to using autoconf for setup, and any additions
330 listed in the Changes list above, has all been my own code, as are any
331 bugs introduced in the merge.