BetaFTPD is now becoming more and more mature, with almost full RFC compliance. The few small things that it lacks (see below) are simply not a problem, so for all practical uses, BetaFTPD should be considered RFC959- and RFC1123- compliant. --- These commands are believed to be fully compliant with RFC959 and RFC1123: PORT, PASV, USER, PASS, CWD, CDUP, QUIT, DELE, PWD, SYST, NOOP, STOR, APPE, ABOR, RNFR, RNTO, MKD, RMD, ALLO, REIN, ACCT, HELP, STAT and MODE. These commands are not implemented at all: SMNT, STOU and SITE. The rest of the commands are implemented, but have minor quirks or problems -- see below. Telnet signals are ignored, to the best of my knowledge. BetaFTPD does not speak Telnet, although RFC959 seems to require it. Note that you can still use Telnet to connect to the FTP port (to do a manual debugging session, e.a.) and speak raw FTP, but BetaFTPD does not follow _all_ the rules about, say, Telnet IP and Synch signals, and it doesn't refuse Telnet commands, like RFC1123 requires. The reason for this is that I don't see how this could be a problem in today's FTP world, and an implementation of this would thus be considered as plure bloat. TYPE: The TYPE command is included, but it ignores its argument and always uses binary mode. RFC959 violation, but RFC1123 excuses the missing ASCII mode. (If you enable ASCII mode (--enable-ascii to configure), it's RFC959- and RFC1123-compliant.) STRU: The STRU command is included, but only file structure is supported (all other modes are refused; if you really need record structure, mail me; when I'm done laughing, I will consider implementing it). RFC959 violation, but RFC1123 excuses the missing record structure. LIST/NLST: The LIST and NLST commands ignore some flags (like `-1') given to them. (This is much better than it was before, though, even recursive listings should work now.) The RFCs say nothing about directory listing formats anyway, but I guess this is a violation of GNU ls :-) REST: The REST command is implemented, but it doesn't check that its argument really is an integer. REST does not work in ASCII mode. SIZE: The SIZE command (not in any RFC at the moment) does not work in ASCII mode. This is in compliance with the ftpext documents. If we were to enable it in ASCII mode, a possible attacker could just enable ASCII mode, do a SIZE on a big file and thus effectively halt a server for a shorter or longer period of time.