FLEXFAX CHANGE INFORMATION

Current Version: v2.3beta036
Previous Version: Release v2.2.2
Master FTP Site: sgi.com (192.48.153.1), directory sgi/fax

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned (but just about everything is mentioned). The following information are located here:

- General changes.
- Changes in the "top of the tree".
- Changes in the prototype config files.
- Changes to faxd.
- Changes to faxaddmodem.
- Changes to faxstat.
- Changes to faxmail.
- Changes to faxcover.
- Changes to fax2ps.
- Changes to faxd.recv.
- Changes in the utility code.
- Changes in the InterViews code.
- Changes to the manual pages.

GENERAL CHANGES:

- regular expression support is now based on Henry Spencer's POSIX 1003.2-compliant routines; this effectively extends the syntax of the dialstring rules, TSI access control list, etc. NB: THERE ARE INCOMPATIBILITES BETWEEN THE PREVIOUS REGEX SYNTAX AND THE POSIX 1003.2 SYNTAX; consult the manual page that describes the POSIX syntax: util/regex/re_format.7
- the faxaddmodem program has been moved from the client applications directory (${BIN}) to the spooling area to be consistent with all other the server-related software
- the server now does copy quality checking on received pages, with line regeneration applied to rows received in error (when copy quality checking is done in the host and not in the modem); note that this is done only in the cases where a modem does not directly support (or is configured to support) copy quality checking in the modem; see the documentation for help on configuring this support.
- the server can be configured to image a "tag line" across the top of each page of an outbound job; see the documentation for help on configuring this support.
- receive operations may now be aborted
- the server now tracks the consecutive number of "bad calls" and if a threshold is exceeded (MaxBadCalls), it invokes a shell script to permit site-specific actions (such as shutting down the server and/or notifying administrators)
- support for the Abaton 24/96 modem has been dropped
- the maximum number of pages that may be sent in a single job can now be constrained
- the maximum number of pages that will be received in a single call can now be constrained
- the TSI access control mechanism has been extended to support both inclusion and exclusion
- the server may be configured to generate a "continuation cover page" when a job fails and no longer has a cover page included in its retransmission
- the server now disconnects and re-images jobs when a mismatch is recognized in in the session capabilities
- the adaptive answer and answer rotary facilities have been generalized to permit adaptive answer to be done in a configurable order (e.g. data then fax, or fax then data)
- the server now times out PostScript imaging requests according to the PostScriptTimeout configuration parameter
- prototype modem config files are now located in a separate config subdirectory in the spooling area
- all client applications now fallback to using TCP port 4557 if no "`fax`" service entry exists on the machine

CHANGES IN THE "TOP OF THE TREE":

- the `configure` script disables non-POSIX extensions in the GNU shell utilities (the extensions broke the script)
- the `configure` script will not rebuild the port.h file if it finds an existing one with created with the same target machine and compiler
- the `configure` script now sets up the default host bit order based on the system defs file and user input

CHANGES IN THE PROTOTYPE CONFIG FILES:

- there is a new file for the AT&T DataPort with Class 2.0 firmware
- there is a new file for Class 1 modems based on the Rockwell RC32ACL
- there is a new file for the Tricom Tornado28/42
- config.mt-1432 no longer has the "@" in the dialing string

CHANGES TO FAXD:

- the server now checks if a modem supports polling and rejects polling requests immediately if no support is present
- the server now does copy quality checking on received pages, with line regeneration applied to rows received in error (when copy quality checking is done in the host and not in the modem); note that this is done only in the cases where a modem does not directly support copy quality checking in the modem
- the server can be configured to image a "tag line" across the top of each page of an outbound job
- receipt of PIN/PIP during a transmission now causes a job to aborted instead of retried
- receive operations may now be aborted
- outgoing calls that reach data modems are now recognized and treated differently
- the server now tracks the consecutive number of "bad calls" and if a threshold is exceeded (MaxBadCalls), it invokes a shell script to permit site-specific actions (such as shutting down the server and/or notifying administrators)
- the host-modem flow control can now be setup for "no flow control"
- the AT-command escape codes have been extended to include the no flow control setting
- support for the Abaton 24/96 modem has been dropped
- there is a new configuration parameter ModemSendBeginCmd that is interpreted after an outbound call has been established; this can be used, for example, to setup RTS/CTS flow control on systems that are not capable of doing this w/o having DCD raised
- a bug was fixed that caused dialing status strings with a "`RING`" prefix to be incorrectly handled
- the maximum number of pages that may be sent in a single job can now be constrained
- the maximum number of pages that will be received in a single call can now be constrained
- the TSI access control mechanism has been extended to support both inclusion and exclusion
- the server may be configured to generate a "continuation cover page" when a job fails and may no longer have a cover page included in its retransmission
- the server now disconnects and reimages jobs when a mismatch is recognized in in the session capabilities
- a bug was corrected that resulted in truncated status information being returned to users when a PostScript imaging oepration failed
- a new `-p` option was added to stop the server from changing its priority during normal operation; this is for use in debugging servers that go into infinite loops at non-preemptible scheduling priority
- whether or not the server supports aborting send jobs is now based on the `SERVERABORTBUG` #define emitted by the `configure` script (it used to be directly controlled by the type of host the code was being compiled on)
- the adaptive answer and answer rotary facilities have been generalized to permit adaptive answer to be done in a configurable order (e.g. data then fax, or fax then data)
- the server now properly resets all its state when rereading a configuration file
- the server now times out PostScript imaging requests according to the PostScriptTimeout configuration parameter
- the tracing messages concering XON/XOFF handling have been improved
- there is a new tracing control bit for copy quality checking
- TSI+CSI can now arbitrary ASCII; this is setup with the new LocalIdentifier config parameter
- the server-modem interface used to return dialing result codes has been expanded to permit more intelligent decisions to be made for failed calls

  Class 1 driver:

- bit order handling has been corrected for LSB-order CPUs
- a bug that caused FCS errors in received frames to not be properly reported was fixed
- the driver now does a better job of shutting down transmit jobs that terminate prematurely due to receipt of DCN
- a bug in the state machine used to decided whether to look for page carrier or control carrier was corrected
- the driver no longer requires that received HDLC frames strictly conform to the T.30 protocol; specifically some senders transmit frames without FCF_SNDR set after receiving valid DCS
- the algorithm used to analyze TCF received during training now skips any initial non-zero data; this change helps to ignore flag bits received during the short training sequence before the message carrier is established
- the parameters that control whether or not a received TCF is acceptable are now configurable (Class1TCFMaxNonZero and Class1TCFMinRun)
- a bug was corrected in the transmit logic where the initial identification information was not being properly retransmitted
- there is a new configuration parameter, Class2CQQueryCmd, that is used to identify the copy quality capabilities of a Class 2/2.0 modem
- UUCP lock filenames are now munged on SCO systems to reflect local requirements (SCO requires that upper case device names be locked under their lower case equivalents)
- the server no longer checks the effective uid against the "`fax`" user name; it now checks it against the "`fax`" user's uid
- the `faxrcvd` and `pollrcvd` scripts are now passed the modem device id on the command line
- the `etc/xferfaxlog` accounting now includes the job identification number in each record

  Class 2 driver:

- when transmitting, the driver now reliably waits for <XON> from the modem before sending page data (it used to not do this when hardware flow control was being used)
- a workaround has been added for modems that do not properly implement the +FDIS command; the Class2DDISCmd configuration parameter can be setup to cause the driver to work better with such modems

  Class 2.0 driver:

- the driver no longer queries for page status after each transmitted page, instead using the `OK`/`ERROR` result string from the `AT+FDT` command; this works around problems with modems that drop DCD immediately after the last page and/or do not accept `AT+FPS?` commands after carrier is dropped

CHANGES TO FAXADDMODEM:

- additions for the new configuration parameters

CHANGES TO FAXSTAT:

- a new `-i` option returns additional server information
- System V-specific junk in the GECOS field of passwd file entries is now properly stripped

CHANGES TO FAXMAIL:

- now generates ISO 8859-1 character encoding (controlled by a new `-D` option)

CHANGES TO FAXCOVER:

- /to is now set to a null string instead of "<unknown>" when the to user name is not unspecified

CHANGES TO FAX2PS:

- portability modifications

CHANGES TO FAXD.RECV:

- a new protocol command, serverInfo, was added to request static per-server information (such as the identity of an administrator)
- job submission may now be shutdown by creating a file status/<dev>.shut in the spooling area; this causes requests to submit a job to be rejected with the contents of <dev>.shut returned to the client

CHANGES IN THE UTILITY CODE:

- compiler portability problems have been corrected in serveral of the data structures classes
- a new shell script `wedged.sh` is invoked when a fax server thinks a modem is wedged
- a new shell script `mkcover.sh` is invoked to create the PostScript continuation cover page for jobs being retried after a protocol failure; `cover.templ` is the associated cover page template file
- the `faxquit` program is no longer installed setuid fax and is no longer installed in the directory where client applications reside
- the `faxanswer`, `faxquit`, and (new) `faxabort` programs are all links to a new `faxmsg` program
- `faxabort` is a new program that sends a message to a fax server telling it to abort the current phone call (either sending or receiving)
- the default number of retries for a sent job now comes from `config.h`; it used to just be `-1` (i.e. infinite)
- the set of ``trusted users'' is now specified in `config.h`
- the `notify.awk` script now gives more information in the Subject line
- `xferfaxstats.sh` and `recvstats.sh` handle the new accounting file record format
- a bug in `transcript.sh` was fixed ("`cut -f1`" is not accepted on some systems; it must be "`cut -f 1`")
- a new program, `tagtest`, is used to test out the tag line support
- a new program, `tsitest`, is used to test out the TSI access control support
- `FaxClient::sendLine` checks parameters to catch potential protocol botches
- the regular expression support is now based on Henry Spencer's POSIX 1003.2-compliant code

CHANGES IN THE iNTERvIEWS CODE:

- the two remaining InterViews classes have been merged into the utility code

CHANGES TO THE MANUAL PAGES:

- the scheme for building and installing the manual pages has been changed to handle filename conflicts and to be more general
- intro(4F) has been renamed flexfax(4F) to avoid name conflicts

FlexFAX table of contents.