TNOS Release Notes - Release 2.30 Brian A. Lantz, brian@lantz.com v1.00, 14 September 1997 These are the FINAL Release Notes for release 2.30 of TNOS. Hope- fully, this list of changes will give you an idea of the scope of work that has occured since the release of TNOS 2.22. ______________________________________________________________________ Table of Contents: 1. Important Notes 2. Bug Fixes 3. Improvements and Enhancements 4. Minor Changes 5. Remaining Known Bugs 6. To-Do List 7. Known Quirks ______________________________________________________________________ 1. Important Notes The following are important notes that you CANNOT afford to ignore: o The 'ftpusers' file has been renamed to 'security' While still located in the 'etc' directory off of your TNOS root directory, the name has been changed to better describe its usage and to prevent newbies from believing that it is just important to the FTP server. o The statistics files now are stored in binary format If you have NOT been using the 'stats' commands or you do not have the 'STATS' flag compiled into your TNOS, you can ignore the rest of this item. If you do not need to preserve your existing statistics, you can simply delete all of the files in the 'spool/stats' directory before starting up Release 2.30 for the first time, or you can leave the files there, though they will never be used by TNOS 2.30 and greater. The new binary stats files are named the same, except that they have a '.dat' file extension added. To convert existing ASCII statistics files to binary ones, use the new 'statconv' utility. Do the following commands in your 'spool/stats' directory: statconv import area area area.dat statconv import forward forward forward.dat statconv import message message message.dat statconv import traffic traffic traffic.dat statconv import usage usage usage.dat o The '>' character is now a special character in command lines This only applies to commands entered from the Command Session, those commands in your 'autoexec.nos' file, and commands you might have in optional script files that you 'source' in. Since the '>' is now used for output redirection, you must change the '>'s in these commands to '\>', to 'escape' the '>', and prevent it from being interpreted as a special character. Also, the parameter that contains the '\>' should either be enclosed in quotes or {}'s, o Either follow the 'readme', or do a 'build-make.inc' If you are building your own TNOS under Unix, you MUST have a new 'make.inc' file. Running the 'build-make.inc' script will create the new one for you, and will name any existing 'make.inc' file to 'make.inc.old', in case you have customizations that you'd like to add to the generated 'make.inc' file. This set also creates the new 'system.h' file. 2. Bug Fixes The following bugs have been squashed. o Fixed a very obscure bug with XFWDing Only affected XFWDing connections with areas using the 'rewrite address' functionality for the area. A rare combination. Released a quick patchkit.1 to release 2.22 to fix this, just in case others needed it. o Fix for MSDOS packet driver for short packets o Fixes for FBB/X forwarding to prevent rare looping If an FBB forwarding session was active, and all messages in the queue were deferred by the remote side, the code would re-loop continually. While this is a rare condition, it was nonetheless annoying when it occurred. o Fixed an inconsistency with 'if' command when expression is false o Fixed MSDOS FTP 'pwd' buglet o Fixed MSDOS FTP 'lcd' buglet (also affected 'cd' command) o The above included in 2.22pl2 o Fixed problem where areas files required space even w/out description o Fixed problem preventing FBB telnet hack from working o Fixed problem w/overly aggressive chopping of haddresses when forwarding o Fixed a remaining problem w/MSDOS packet driver and short packets o Fixed incorrect number of lines in command session flowmode o Fixed a RARE buffer overflow on MBL-style forwarding and long haddresses o Fixed (??) the 'Invalid Gateway' entries and PBBS users exceeding tdisc o Changed few remaining C++-style comments to C-style o Fixed occasional crash if HTTP received from unresolvable address o Fixed a bug where ping responses to the console where not displayed o Fix for preventing attempted forwarding of messages w/out BID/MID o Fixed occasional false pings of negative rtt These were only observed in TNOS/DOS under the Linux DosEmu, but could have occurred in other environments as well. o Fixed problem with smtp mqueue parsing in Win95 Dosbox This would cause a 'smtp list' display to scroll continually, and a 'smtp kick' to not work. Seems that DJGPP is close but not exact on their implementation of the findfirst/findnext functions (at least the release of DJGPP that I use; later release may have fixed this). While the return value is supposed to be zero for success, and -1 for failure, the DJGPP version uses 0 for success and non-zero for failure. The existing code looked for -1, and otherwise assumed success. This has been changed, and seems to fix the problem. This was hard to find, because the DJGPP library was not consistent in its return values, and under DosEmu and pure MSDOS, it worked as expected. In a Win95 Dosbox, though, it was broken. This same bug would also cause the Command Session 'copy' and 'delete' commands to not work properly. While many pieces of code use the findfirst/findnext functions, only these needed changing. o Fixed TNOS/DOS bug with session flow control o Fixed assorted conditionals that prevented not setting ALLSERV o Fixed where the '-S' and '-T' command line parameters were getting trashed o Fixed HTTP problem where directory contents not properly displayed o Fixed HTTP problem where sub-directory listed as files in directory listings o Fixed HTTP problem where directory files were always converted to lowercase o Fixed several potential domain lookup problems This was due to several places not checking the return value from the getpeername and getsockname functions. o Long-standing problem identified (and fixed?) There has been a mysterious problem where TNOS has at times 'lost' active processes. This has mainly been noticed by occasionally having the statusline daemon go inactive. There seems to be some problem with the handling of the process tables, when a processes is in 'waiting' state. The changes made here will hopefully fix the problem. Only time will tell... o Added code to detect/prevent corrupted process table entries o Added code to prevent race condition adding Converse users/groups o Fixed truncated names of built-in fingerd 'users' o Fixed bug with PBBS 'sf' and no header data o Fixed XFWD bug when all incoming msg in a proposal are refused o Fixed XFWD bug with handling the reject.dat file This was obscure, as it only occurred with BIDS starting with 'S' or 'F'. o All the above included in 2.30b1 o Fixed output redirection '>' to be ignore in comment lines o Fixed bug where AXUI would not receive frames w/remaining digi's o Fixed command parser to ignore special characters in comment lines This includes quotes, braces, backslash, and semi-colon. Now, a comment line (starting with a '#') cause the rest of the line to be discarded and not interpreted specially. You can place a comment at the end of a command (preceeded by a semi-colon), but NOT the reverse. Once a comment is started, no processing is done of the rest of the line. o Fixed an obscure bug with 'pbbs nosubjbell' o Changed some of the timer code to prevent possible problems o Fixed problem w/'repeat' command not clearing screen each pass o Fixed problem w/look command and the 'chat' subcommand o Fixed a typo in config.chk, which caused contention between POP/POP3 Only happened if you didn't define POP3CLIENT. o Fixed problem where PBBS users could access Converse server, even when it was off o Fixed assorted potential buffer overflow sections of code o Fixed added after remote messages received in Converse Server o Fixed Converse problem where channel 32767 was always treated correct o Killed one gremlin ;-) Now delete all timers owned processes when killed Previously, only the alarm timer was stopped (i.e. deleted from the queue), which was (I am SURE) at times causing occasional weirdness, as the process started by the expired timer (and the data it pointed to) were no longer what/where it was when the old process was alive. This would have previously left a 'loaded gun' timer each time that a user of the PBBS was gateway'ed out to a remote site, and they timed out due to their inactivity. While the inactivity timer was removed from the timer queue when it expired, the separate timer on the gateway was NOT removed. Timers for AX25/TCP links may also have (at times) fell through the cracks and been left enabled long after the process that started it completed. Doubtless not the LAST gremlin, but definitely this one was a player ;-) o Changed the internal way that processes are added to process tables This, in addition to being faster will prevent the possibility of getting tied up in a loop trying to add a process to a process table. Now, in addition to a pointer to the head of the linked list, we now also keep a pointer to the tail of the list. Adding to the end of the list is a simple, quick event, now. o Fixed minor problem with PBBS 'sr' command and some mini-editor commands o All the above included in 2.30b2 o Fixed problem with 'review' command not saving area changes o Fixed minor compilation combinations with certain features disabled o Fixed a minor problem with 'pbbs strictcall' and MBL forwarding o Fixed a minor cosmetic problem with buildcat o A fix for an obscure 'ax25 smartroute' problem o Fixed case where FBB forwarding would report false protocol errors This would happen when you had an outbound FBB proposal which the other side rejected all of the messages from, and then the other side had data to send to you. At times, the first line of the remote's proposal was getting improperly eaten, causing the proposal's checksum to be bad. o Minor fix to build-make.inc script for older ncurses o Fixed problem with 'look' not always seeing disconnected user o Fixed two problems by checking for catalog file in startup o Fixed a problem with setting the 'wp clientcall' o Fixed 80 column 3rd status line with >80 column displays o All the above included in 2.30b3 o Fixed a timer bug, added in earlier beta code o Fixed new 132 column 3rd status line bug o All the above included in 2.30b4 o Fix for backspace (and column 0) with displays > 80 columns o Fixed a problem with scripted forwarding sessions Don't know when this one crept in, but the first line of a forwarding script would (at times) be sent twice, and cause difficulties at the AX.25 level. This probably is related to the timer changes in this release, but it may have existed in pre-2.30 releases. 3. Improvements and Enhancements The following optimizations and improvements have occurred. o Converted statistics files from ascii to binary This increases loading/saving speed, reduces the chance of corruption, and uses less disk space. o Added new 'statconv' executable This executable can be used to import existing ascii statistics files, converting to the new binary format. It can also be used to export a binary file into the old ascii format, which is only useful for debugging purposes. o Added a 'AH' PBBS sysop command, to display only areas with held messages o Added a command session 'pbbs holdsummary' command This gives the same output as the PBBS 'AH' command, without requiring the sysop to logon to get this information. o Added a 'review' PBBS sysop command for reviewing of held messages This command displays all held messages, then area-by-area, message-by-message allows you to list the message, view the message with headers, release the message from hold, skip the message (retaining the hold), kill the message, skip to the next area, mark all messages in this area available, or quit the review process. The '?' command displays command summary. o Added a 'pbbs scan ' command This is the same as logging into the PBBS as 'username', and then doing a 'quickscan' command. Simply added for the convenience of the sysop. o Added a 'smtp rewritecheck' command This allows you to easily check the rewrite rules for a given address. The 'smtp rewritetrace' flag is forced to on (regardless of its current setting) during the resolution of this rewrite tracing, and returned to its original setting once complete. Note, that if this command is accessed remotely that the rewritetrace intermediate info will not be displayed, as this is always displayed on the Console. o Changes, as needed, for compilation on Solaris 2.5 and IRIX 6.2 Now TNOS compiles off the shelf for SGI's Irix (tested with 6.2) and for Sun's Solaris (tested with 2.5). It will use the native OS's curses, but it is NOT as full-featured as NCURSES, so not all curses-related features work unless you use NCURSES. Highly functional, though.... The IRIX 6.2 compile was tested on 5.3 and 6.4 and runs fine. The Solaris 2.5 compile was tested on 2.3 and it also runs fine. Other versions of both Solaris and IRIX will probably also compile TNOS now without modification, but only the above listed configurations have been tested. o Extensive improvements on self-configuration for Unix The build-make.inc script (which creates the default make.inc file) has been extensively enhanced to automatically setup TNOS for most any Unix. Several source files have had minor changes made to them to support this enhanced capability. o Changed nearly ALL Unix/OS-specific code to feature-driven code o Removed the need for TNOS/DOS users to find/install a DPMI manager From now on, the TNOS/DOS executables distributed from lantz.com will have a build-in DPMI manager. This DPMI manager (PMODE) does NOT support virtual memory, but does allow you to use all of the available physical memory in the machine. No special considerations need to be made. Just run the executable. If these executables are run in the presence of an existing DPMI manager, the PMODE code steps aside, using the better DPMI manager. Those who need to use virtual memory will want to use a DPMI manager that supports virtual memory. o Added a Command Session command, 'timers' Primary will be used by the author as a diagnostic tool, this command displays the current contents of the timer queue, showing the process owning the timer, the timer's state and duration, and the time that the timer should next 'kick'. o Added a 'http ftpdir' command This command sets the default FTP directory to use with URL's starting with '/ftp/'. If this is undefined (the default), then URL's starting with '/ftp/' will refer to a subdirectory within the normal http directory, using the normal methods of access. If the 'http ftpdir' is defined (or given on the 'start http' command line) then all URL's starting with '/ftp/' will be based out of the directory given. In addition, all files served within a defined ftpdir will display directory listings without the need of a 'welcome.html' file, bypassing this normal security step in the HTTP server. o Added ability to attach 'dummy' interfaces This is useful for allowing TNOS to assume multiple IP addresses. The command is 'attach dummy