Document changes since 0.41
[tftp-hpa.git] / CHANGES
blob3fb99b85e819a2d61bd70ff5ce1d6698e10bddc3
1 Changes in 0.42:
2         Try to disable path MTU discovery for TFTP connections (it's
3         useless anyway.)
5         Add a hack to allow the admin to specify a range of local port
6         numbers to use.
8         Fix local IP number handling on systems which present
9         IP_RECVDSTADDR in recvmsg().
12 Changes in 0.41:
13         Fix bug by which patterns of the form \U\1 weren't converted
14         correctly.
17 Changes in 0.40.1:
18         Solaris build fix.
21 Changes in 0.40:
22         Fix bug which would cause "r" remapping rules to be
23         incorrectly rejected.
26 Changes in 0.39:
27         Support Perl-style \U...\E and \L...\E, as well as allow
28         matching rules to be inverted (execute if rule *doesn't*
29         match.)
31         Fix a timeout bug.
33         Add an RPM spec file.
36 Changes in 0.38:
37         Portability fixes.
40 Changes in 0.37:
41         Fix a pathology where a client sending ACKs for the wrong
42         packet can prevent proper retransmission.
45 Changes in 0.36:
46         Portability fixes.
49 Changes in 0.35:
50         Add an option to control the maximum value of blksize
51         negotiated.
53         Removed workaround for obsolete Cygwin problem.
55         Don't use getopt() -- the -c option doesn't work correctly
56         since it depends on the ordering of arguments and options.  It
57         is now possible to do:
59         tftp -m binary hostname -c get filename
61         This was previous possible by doing:
63         tftp -m binary -c get hostname:filename
65         ... but it seemed that was counterintuitive to people.
67         Somewhat improved configure scripts.
70 Changes in 0.34:
71         Additional Solaris gcc compiler bug workarounds; these
72         actually make the code somewhat cleaner.
73         
75 Changes in 0.33:
76         Even better error messages.
78         Work around a suspect Solaris gcc bug.
80         Configuration fix: readline needs termcap.
82         Support running the tftp client from the command line.  For
83         example:
85                 tftp -m binary -c get hostname:file
88 Changes in 0.32:
89         Better error messages; including the capability to send a
90         custom error message to the client when hitting an "a" rule in
91         a remapping table.
94 Changes in 0.31:
95         Put in a check to make sure xinetd (in particular) doesn't
96         pass us an IPv6 socket.
98         Fix some problems related to timeout negotiation.
100         Allow the user to set the default timeout speed.
103 Changes in 0.30:
104         (Hopefully) better timeout algorithm.
106         Add a "utimeout" option; like "timeout" but in microseconds.
108         Change the log level of client-side errors to LOG_WARNING.
110         autoconf portability improvements.
112         Minor bugfixes.
115 Changes in 0.29:
116         Posixly correctness.
118         Now compiles and runs on Win32 systems using Cygwin
119         (http://www.cygwin.com/).
120         (<http://www.cygwin.com/>).
122         Fixed a bug which could cause a standalone server to exit with
123         a "recvfrom: Interrupted system call" log message if signals
124         arrive at a particularly inopportune moment.
126         Fix a macro substitution bug (thanks to Richard Nyberg.)
129 Changes in 0.28:
130         Fix stupid one-liner bug which broke standalone mode (-l).
133 Changes in 0.27:
134         Make the Digital Unix 4.0F platform work again.  Thanks to
135         Alan Sundell for helping out with this platform!
137         Make the AIX 4.3 platform work again.  Thanks to Josef Siemes
138         for helping out with this platform!
140         Allow replacement patterns to include the IP address of the
141         requesting host (\i).
143         Allow relying on Unix permissions rather than o+r magic if the
144         -p option is specified.  As part of this, set all groups if
145         initgroups() is specified on the platform.
147         Clean up race conditions inherited from the BSD source base.
150 Changes in 0.26:
151         Fix the configuration process so tftpd doesn't end up
152         depending on readline, which apparently could happen on some
153         platforms before.
155         Make parallel builds (make -j) work correctly.
157         Improve parsing of the "connect" command in the tftp client.
159         Add a -V option to both tftp and tftpd to print the version
160         number on stdout and immediately exit.
162         Add a -v option to tftp to start out in verbose mode.
163         
164         Rewrite the man pages using standard "man" troff macros.
166         Enable the (limited) use of readline on systems which don't
167         have readline/history.h.
169         Support compiling under MacOS X with fink (see
170         <http://fink.sourceforge.net/>).  Thanks for Justin Hallett
171         and Eric Eslinger for their help in getting this working!
174 Changes in 0.25:
175         Fixed Sorcerer's Apprentice bug in both the client and the
176         server.  These bugs were inherited from the original BSD code.
179 Changes in 0.24:
180         Fix bugs in both client and server dealing with block number
181         wraparound, usually manifesting themselves as failure to
182         handle files over 32 MB in size.
184         Officially make the client a part of the tftp-hpa project.
187 Changes in 0.23:
188         Correct memory overwrite bug in the tftp client when compiled
189         with readline.
192 Changes in 0.22:
193         Even more portability improvements: FreeBSD and
194         Tru64/Digital Unix.
196         Fix tsize option on systems on which off_t is "long long".
198         Support large files on systems which need _LARGE_FILE_BITS or
199         similar.
201         Some source cleanups; change to autoconf 2.52.
203         Add support for readline command-line editing in tftp.
206 Changes in 0.21:
207         Support running in standalone mode, without inetd.
209         Even more portability improvements.  Now known to compile and
210         run on Linux, Solaris 5, 5.1, 6, 7 and 8, and AIX.  Reports of
211         success or failure on other modern systems always appreciated.
213         Clean and modernize some really ugly old code.
215         Fix a potential illegal memory access when running in "totally
216         insecure mode" - no -s, no directories listed.
219 Changes in 0.20:
220         Portability improvements.  Now known to compile and run on
221         Solaris 8.
224 Changes in 0.19:
225         Fork before performing tcpwrappers check.
227         Don't rely on nonstandard bsd_signal() function, instead
228         require that the platform has sigaction().  This is 2001,
229         after all.  This may resolve some potential portability
230         problems.
232         Log a message if memory allocation fails, instead of dying
233         silently.
235         Clean up the main dispatch loop.
237         Use <sysexits.h> for exit codes, if it exists.
239         Add support for debugging remapping rulefiles; if logging with
240         -vvv tftpd will log all rules actions.
242         Correct the error code issued by an "abort" rule.
245 Changes in 0.18:
246         Support (almost) arbitrary filename remappings via regular
247         expression-based rulesets.
249         Added -v option for more verbose logging.
252 Changes in 0.17:
254         Add support for tcpwrapper checking (/etc/hosts.allow;
255         /etc/hosts.deny) in tftpd.
257         Compile correctly on glibc 2.1.2.
259         Add -u option to specify the user id to run as (default
260         "nobody".)
262         Operate in "daemon mode" as long as we keep getting requests.
263         This should speed up handling large amounts of requests at
264         once, as can happen when a client starts up, and avoids inetd
265         misconfiguration problems.
266         
268 Changes in 0.16:
270         Correct massive lossage from 0.15: apparently 0.15 was based
271         on an out-of-date CVS repository, somehow.
273         Fix for ACKs in TFTP PUT; patch by Roger Venning.
276 Changes in 0.15:
278         If the operating system allows, try to obtain the local
279         address used for the request packet, and reply using the same
280         local IP address.  Some embedded TFTP clients are (probably
281         incorrectly) picky about this.
284 Changes in 0.14:
286         Hacks to signal handling to avoid "zombie servers."
289 Changes in 0.13:
291         Added the non-standard option "blksize2".  The "blksize"
292         option is limited in its usability, since TFTP is designed to
293         be implemented in a ROM, and ROM code might find it painful to
294         deal with packets that don't meet certain alignment
295         restrictions.
297         The "blksize2" option tells the server that the block size
298         must be a power of 2 to be usable to the client.  The server
299         SHALL respond with a block size that is a power of two, up to
300         a maximum of 32768, or reject the option.  Furthermore, the
301         server SHALL grant a block size that is no smaller than 512
302         bytes unless the client explicitly requested a smaller block
303         size.  If the client request both options, the server MAY
304         accept one or the other, but not both.  At some point I will
305         probably write up an IETF draft for this option.
308 General information on the tftp-hpa series:
310 The core software was taken from OpenBSD (CVS source as of
311 1999-09-21).  I believe this was the most secure source base available
312 at the time I obtained this code, and it included support for the -s
313 and -c options.
315 The un-BSD-ized Makefiles and a lot of the configure macros were taken
316 from netkit-tftp-0.10 by David Holland; I also followed this example
317 and modernized the code style throughout.
319 Patches by Markus Gutschke and Gero Kuhlmann were the basis for the
320 option negotiation as well as the "blksize" and "tsize" option
321 support, although I made a fair amount of mostly stylistic changes to
322 their code.
324 Adding the -r option (disable a specific option), the "timeout"
325 option, converting to using autoconf for setup, and any additions
326 listed in the Changes list above, has all been my own code, as are any
327 bugs introduced in the merge.