Larry J. Blunk Merit Network, Inc. / University of Michigan ljb@merit.edu MacPPP Revision History: 10/28/93 2.0.1 Release Fixes: -code to check for "AT" in modem init string was broken (oops). It now sends the string when the "AT" is present. -Think C 6.0.1 was having problems evaluating a particular inline asm construct (a bug in Think C). The offending line was modified so that it now compiles without errors. -PPP was not looping back IP packets addressed to itself. This is now done correctly. 10/22/93 2.0 Release Fixes: -Check for InitWindows was wrong which caused problems when MacPPP was started at init time or by certain applications. -Writes were done synchronously when dialing/connecting. This seemed to cause problems on certain machines. All writes are now async. A timeout was added for the writes. -Logic in control panel was goofy when adding new "servers". Moved "New" and "Delete" buttons to the main control panel dialog. -Code would not compile with type checking enabled. Cleaned it up so that it now compiles. -After a link timeout, control panel didn't update link status. -bug which could cause problems with > 1 active TCP sessions with VJ header compression enabled. Features: -Added support for DTR (InsideMacspeak, RTS in real world) flow control. This helps prevent hardware overruns on certain Macs (PowerBook 180's for sure) and with virtual mem. enabled. Also helps prevent software overruns on the slow Macs when running at high speeds. Thanks to Amanda Walker for the tip. -Added Deferred Task Manager support. Prevents losing timer/VBL interrupts when running at high speeds (transmitting in particular). -Added ShutDown Manager support. Will now hangup modem on restart or shutdown. -Now sends a Teminate Request before disconnecting. It should also now behave correctly when a Terminate Request is received. 7/19/93 1.1.3 Release Fixes: -Fixed bug introduced in the 1.1.1 so that PPP would work with Serial Drivers with names greater than 15 bytes (increased driver name arrays from 16 to 128 bytes). 7/9/93 1.1.2 Release Fixes: -Added "Hard Close" and "Soft Close" to get around MacTCP opening the link after extended idle periods. Clicking "Hard Close" will prevent MacTCP from re-opening the link on its own. The only way to re-open is via the "Open" button after a "Hard Close". Features: -Added a "quiet mode" button to disable notification of PAP messages (if successful) and "Idle Timeout" conditions. 6/28/93 1.1.1 Release This release has up-to-date documentation and a few bugfixes (see below). Fixes: -PPP Server names were not being properly added to the Menu causing problems when they contained the Menu Manager's special chars. -Added a hack so that IPRemoteAT could work when using the Printer Port for PPP. -The control panel was not updating the user items in certain cases. -The control panel edittext fields did not allow chars > 127. 6/15/93 1.1 Release MacPPP 1.1 is being released without new documentation as I did not want to delay it any longer. Updated documentation will be released when ready. In the interim, see below for fixes and new features. The Copyright notice disclaimer in the docs needs to be ammended to read: "... an unlimited license for use and redistribution of the executable program provided that it is not sold, either as-is or as part of another product, for profit. Charges to recover the cost of duplication and distribution are permitted." Fixes: -The Open/Close logic in the Control Panel was too confusing. You may now open/close PPP independently of an application. -PPP was not properly NAKing the Authentication option (when CHAP was requested). Now correctly NAK's with PAP. -Calling CloseDriver during interrupt time was causing problems. The Close routine now closes immediately (rather than sending a Terminate Request) during system time. -Requiring users to not use AT in Modem Init was too confusing. The code now checks if the AT is already there. -Much of the text was stored as literals in the source. These have now been moved to resources. -Increased the serial driver receive buffer to 1536 bytes to reduce software overruns on slow machines. -Added a delay before attempting to redial when busy. -Bug in state machine caused interoperability problems with PPP implentations using the old state machine. (i.e. KA9Q) New Features: -A number of routines have been re-written to improve their speed and reduce the code. -A Hangup (+++ ATH) can now be initiated on Close by selecting the "Hangup on Close" checkbox in the Control Panel. -The CommToolBox is now used to get the names of serial ports and their associated drivers. The code will work without the CommToolBox, but only refers to the Modem and Printer ports by default. -An idle timer is now provided in the Control Panel. -An LCP echo request mechanism is provided to detect dead sessions. This is also configurable via the Control Panel. -timeout and number of retries may be configured for LCP, IPCP, and PAP. -Both PAP id and password may now be configured. Password is blanked, but stored as cleared text. If password is left empty, it will be prompted for at connect time. -Multiple PPP server definitions are supported. -modem connect and string wait timeouts are configurable. -The code does TCP window size limiting to improve TCP performance and get around MacTCP's re-transmit timer. -The connect script now treats the `\` character as special. These are somewhat C-like in convention, but note that it is a subset and that some characters have been redefined for other functions. \r - carriage return (13) \^ - the literal '^' character \\ - the literal '\' character \nnn - an 8-bit octal value Additionally, for "out" strings the following have significance: \b - send a break ( 100 milliseconds) \d - delay for 1 second \t - invoke the terminal emulator 4/14/93 This is still MacPPP 1.0 (same code) but now with new-and-improved documentation from Susan R. Harris. The documentation and get info fields now have the officially sanctioned copyrights. I also got rid of the scammed icon and changed it to be an original design. Its supposed to be two phones if you can't tell (so much for my artistic talents). I'm still working on the code when I have time, but I'm not sure when I'll be coming out with the next release. 1/5/93 1.0 final release Fixes: -30 second timeout for modem connect was causing problems. -Bumped the timeout up to 90 seconds. Also increased timeout on waiting for dialog strings from 20 to 40 seconds. -Lower case AT commands causes problems on certain brain-dead modems. Switched to upper case commands. -File locking on System 6 machines caused problems when trying to start PPP while the control panel was open. -Insufficient input buffer for serial driver caused rx overruns when running above 19200 on slow Macs (SE's, Plus's, etc.). Increasing buffer size from 384 to 1024 solved problem. -Netmask was always set to 255.255.255.0. This caused problems when assigned a Class A or Class B address with a last octet of 0. (MacTCP assumed it was a broadcast address and thus invalid). -IPCP Config Requests with the old style VJ option were dropped rather than rejected. May add support in next release for the old style option. New Features: -Added the current states of PPP options to the Statistics window in the control panel. -Changed buffering scheme to reduce system heap space required by about 5K ( now allocates ~16K at startup). 12/2/92 1.0beta Release 1 Fixes: -Problem in LCP which caused the data field of all options in config requests to be FF's. -IPCP did not do option rejects correctly ( did not duplicate option contents ). -phone num, modem init, and dialog strings could overrun stack when parsed. -terminal emulation did not handle backspace characters. -Control Panel did not save value of "Default id" field in LCP options dialog. -Open/Close button events could put PPP in unexpected states. New Features: -added check boxes to Connect Config dialog.