1 Version 0.0.8 (the Try-to-do-way-too-much-in-one-release Release, originally the
4 0.0.8 has been through a lot of preview/beta releases, and is a _totally_
5 different beast from 0.0.7. As a consequence, there have been many minor
6 changes from release to release, which are uninteresting in the big picture
7 and thus has been removed from the list. For a complete list, see the file
10 - Support for not running as root. This implies using its own database of
11 rights and users. Give --enable-nonroot to configure to enable it. Users
12 running BetaFTPD as root are not affected by this support in any way.
13 BetaFTPD is still small with this feature, expect about 1 kB (6%) extra
14 for database routines and hooks in the main code.
16 This is still very experimental. Do not expect this to be better until
18 - Fixed a LOT of bugs, some segfaulting, some minor.
19 - MAJOR performance improvements in almost all areas. One of the main
20 contributors in this area has been Dan Kegel (see the CREDITS file).
21 - Some changes to compile better under Debian GNU/Linux. A .deb-file was ready,
22 but due to lost access of a Debian-system, this was discontinued :-(
23 - BetaFTPD will now try to install itself (wow! (not)) in the same directory as
24 the file called `ftpd', if you have that file.
25 - Support for non-Linux platforms! For now, only SunOS/SVR4 and FreeBSD. SunOS
26 just barely works, and FreeBSD lacks sendfile() support. Both are generally
28 - Gave the version its own name, like Samba does :-)
29 - If you have mmap(), BetaFTPD will no longer generate temporary files for
30 directory listings, but generate them in-place in memory.
31 - Completely restructured the internal listing functions, to make them more
32 standards-compliant and smaller. (-l and -F flags now supported, but not -R.)
33 - Make an EXIT command (must be manually enabled -- NEVER use it on a
34 production machine, ANYONE will be able to halt your server!) to stop the
35 server -- useful for profiling, which requires an exit() to generate profile
36 data. (Be aware that gmon.out will be where the server last did a chdir() to,
37 though. In a debugging server, you'll know where that is anyway...)
38 - strip-exec now has a warning. In addition, it gives -D__OPTIMIZE_SIZE__ to
39 keep glibc2 (libc6) from adding some inlines. It also kills
40 -fomit-frame-pointer. So now strip-exec gives a 20 kB executable instead of 21
41 kB (one extra kB goes to new functionality) :-)
42 - Now strips out any non-ASCII chars from the commands (not any parameters), to
43 fix the ABOR problems.
44 - Documentation changes.
45 - Commented all the functions in cmds.c and ftpd.c, to make it easier to get
47 - Implemented the APPE, DELE, MKD, RMD, ABOR, REIN, ACCT, HELP and STAT
49 - Added makefile dependencies.
50 - BetaFTPD can now handle non-DES crypt()s, thanks to Beau Kuiper
51 <ekuiperba@cc.curtin.edu.au>.
52 - ASCII mode added, once again thanks to Beau Kuiper
53 <ekuiperba@cc.curtin.edu.au>.
54 - Linux sendfile() support (only for mmap()-able machines -- I don't think any
55 machine has sendfile() but not mmap()). Other systems will be added later.
56 - Moved all documentation (except README) into a separate doc/ directory. Added
58 - The internal ls now can cache the listings (--enable-dcache to configure).
59 Please see the README file for some problems that still exist. This option
60 requires quite a bit of code (1028 bytes compiled, on my system), and some RAM
61 for the directory listings and support structure. I think, however, that the
62 increased performance is worth it.
63 - BetaFTPD can now use poll() if you have it. This removes the old 1024- socket
64 limit, as well as reducing the code size by 496 bytes (on my system).
65 - Added renaming support. (Whee! Almost full RFC1123 compliance!)
66 - Changed all copyright strings to say `1999-2000' (well, it only got to May
67 2000 before I remembered it...) instead of just `1999'.
68 - A new option, --enable-message, makes the server show info about README
69 files, as well as printing any .message or welcome.msg files that may be
70 available. (This is a quite standard function in other ftpds.)
71 - Made a simple FTP server test suite (not included, since it's really not good
72 enough to live its own life as a standalone product), used in testing.
73 - BetaFTPD now listens on port 21.
74 - Homepage moved to SourceForge (http://betaftpd.sourceforge.net/)
75 - root (or any other user with uid=0) can't FTP anymore.
78 - Shadow support. (Give --enable-shadow to configure to enable it.)
79 - No longer ships with precompiled binary -- there are way too many
80 configurations to take care of now (shadow, fork, etc.).
81 - Cleans up a connection if no file transfer has been done in 15 minutes.
82 - More checks in configure script.
83 - Made README file a bit nicer.
87 - Added upload support! (Give --enable-upload to configure to enable it.)
88 Not 100% tried and tested yet, and requires extra code a lot of places.
89 Amazingly enough, it only gives 700 bytes (uncompressed) extra executable
90 size, and requires about 4 bytes per new connection.
91 - Fixed cosmetic bug in configure script.
92 - All .c files now depend on config.h.
93 - Cleaned up some minor problems in building in a directory different from
95 - Added metalab as a mirror site. (The official one is still at my homepage,
96 but I can't offer FTP from there.)
98 - Removed bug that prevented the user from sending _anything_ (including
99 a re-login) if he/she hadn't opened with USER/PASS.
100 - Fixed some problems with compiling on mmap-less machines.
103 - Fixed problem in tarfile (aargh!), it should (forever) unpack into its own
105 - Made handler_table[] const and static (that means minor advantages in speed
106 and executable size).
107 - Added autoconf support. Still not perfect, but much better than nothing.
108 - Re-added support for mmap-less machines as well.
109 - Now only licensed under GPL v2 (_not_ any later or earlier version).
112 - Fixed problem where Netscape 4.5 would give double slashes after directory
114 - Specifying a non-existant user would make the server segfault ;-)
115 - Implemented non-RFC MDTM command.
116 - Changed prompt for anonymous users to "Login OK, send password (your e-mail)."
117 (added 'your' so people won't begin to send their mail passwords :-)
118 - Fixed a bug where anybody could send a fake user name, and access to a
119 random uid. (Don't worry, it was unexploitable -- the server crashed due
121 - Made the command prototypes in cmds.h a single macro, to reduce source size
122 and improve readability (?).
123 - KNOWN-BUGS file added.
124 - Fixed a problem where the server could segfault (due to writing to free()'d
126 - Stripped some sections from the precompiled binary, to reduce size a little
127 more... (Added a script named `strip-exec' which does just that.)
128 - Fixed a problem where doing a `CWD /' followed by a `PWD' would raise some
130 - Fixed a _possible_ (I couldn't exploit it) problem if a REST was sent,
131 greater than the size of the file downloaded, and libc would have some
132 kind of problem with negative sizes.
133 - Added some #define's in ftp.h for those who don't need xferlogs and/or
134 fullscreen. The precompiled binary is supposed to be _small_, so it
136 - Removed all alignment from the precompiled binary (hooray! we're back
138 - Compressed precompiled binary with UPX (10k isn't bad...)
139 - Fixed some bugs, problems with NcFTP etc. (This file got lost, and I
140 had to restore from a slightly older backup.)
141 - Started on an RFC-COMPLIANCE file.
142 - Support for nice, full-screen display (not in precompiled binary).
143 - Now uses mmap() instead of read() and write().
144 - Lots of _real_ testing, in a production environment! That sure fixed
145 a lot of problems :-)
148 - CHANGES file added...
149 - Fixed a bug that prevented lynx and IE (?) from getting dir listings.
150 - Added VERY crude logging (only to /var/log/xferlog for now). It fakes
151 some of the traditional xferlog fields. (Note: this alone was almost
153 - Accepts "ftp" as well as "anonymous".
154 - NLST command partly implemented (errr...).
155 - Cleaned up some error numbers, shortened some messages.
156 - Added pseudo-commands MODE and STRU.
157 - Can recognize other home dirs than /home/ftp/ for anonymous users.
158 - Made FTP port a #define in ftpd.h.
159 - Ignores information on stdin (libc workaround).
160 - Globbing support! (ie. you can do things like LIST *.dat)