Push for version 0.43
[tftp-hpa.git] / CHANGES
bloba2e7aad9a88ba7dff1080e1c8871f36e2fd91077
1 Changes in 0.43:
2         Fix double-free error on ^c in client.
5 Changes in 0.42:
6         Try to disable path MTU discovery for TFTP connections (it's
7         useless anyway.)
9         Add a hack to allow the admin to specify a range of local port
10         numbers to use.
12         Fix local IP number handling on systems which present
13         IP_RECVDSTADDR in recvmsg().
16 Changes in 0.41:
17         Fix bug by which patterns of the form \U\1 weren't converted
18         correctly.
21 Changes in 0.40.1:
22         Solaris build fix.
25 Changes in 0.40:
26         Fix bug which would cause "r" remapping rules to be
27         incorrectly rejected.
30 Changes in 0.39:
31         Support Perl-style \U...\E and \L...\E, as well as allow
32         matching rules to be inverted (execute if rule *doesn't*
33         match.)
35         Fix a timeout bug.
37         Add an RPM spec file.
40 Changes in 0.38:
41         Portability fixes.
44 Changes in 0.37:
45         Fix a pathology where a client sending ACKs for the wrong
46         packet can prevent proper retransmission.
49 Changes in 0.36:
50         Portability fixes.
53 Changes in 0.35:
54         Add an option to control the maximum value of blksize
55         negotiated.
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.
74 Changes in 0.34:
75         Additional Solaris gcc compiler bug workarounds; these
76         actually make the code somewhat cleaner.
77         
79 Changes in 0.33:
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
87         example:
89                 tftp -m binary -c get hostname:file
92 Changes in 0.32:
93         Better error messages; including the capability to send a
94         custom error message to the client when hitting an "a" rule in
95         a remapping table.
98 Changes in 0.31:
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.
107 Changes in 0.30:
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.
116         Minor bugfixes.
119 Changes in 0.29:
120         Posixly correctness.
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.)
133 Changes in 0.28:
134         Fix stupid one-liner bug which broke standalone mode (-l).
137 Changes in 0.27:
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.
154 Changes in 0.26:
155         Fix the configuration process so tftpd doesn't end up
156         depending on readline, which apparently could happen on some
157         platforms before.
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.
167         
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!
178 Changes in 0.25:
179         Fixed Sorcerer's Apprentice bug in both the client and the
180         server.  These bugs were inherited from the original BSD code.
183 Changes in 0.24:
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.
191 Changes in 0.23:
192         Correct memory overwrite bug in the tftp client when compiled
193         with readline.
196 Changes in 0.22:
197         Even more portability improvements: FreeBSD and
198         Tru64/Digital Unix.
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
203         similar.
205         Some source cleanups; change to autoconf 2.52.
207         Add support for readline command-line editing in tftp.
210 Changes in 0.21:
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.
223 Changes in 0.20:
224         Portability improvements.  Now known to compile and run on
225         Solaris 8.
228 Changes in 0.19:
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
234         problems.
236         Log a message if memory allocation fails, instead of dying
237         silently.
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.
249 Changes in 0.18:
250         Support (almost) arbitrary filename remappings via regular
251         expression-based rulesets.
253         Added -v option for more verbose logging.
256 Changes in 0.17:
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
264         "nobody".)
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.
270         
272 Changes in 0.16:
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.
280 Changes in 0.15:
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.
288 Changes in 0.14:
290         Hacks to signal handling to avoid "zombie servers."
293 Changes in 0.13:
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
299         restrictions.
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
317 and -c options.
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
326 their code.
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.