Changes in HylaFAX v4.0beta005

HYLAFAX CHANGE INFORMATION

Current Version: v4.0beta005
Previous Version: v3.0pl1
Master FTP Site: sgi.com (192.48.153.1), directory sgi/fax

Note that this is a major new distribution and lots of things have changed. Consult the general overview for a high-level description of the new functionality provided in the v4.0 software.

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. The following information is located here:

- General changes in the software
- New programs
- Changes in the software configuration
- Changes in the modem config files
- Changes to faxq
- Changes to faxsend
- Changes to faxgetty
- Changes to pagesend
- Changes to sendfax
- Changes to sendpage
- Changes to faxstat
- Changes to faxalter
- Changes to faxrm
- Changes to faxcover
- Changes in the support library
- Changes in the HTML materials

GENERAL CHANGES IN THE SOFTWARE:

- the TIFF library and related tools are no longer included in the distribution; you must obtain the latest TIFF distribution from ftp://ftp.sgi.com/graphics/tiff, build and install it (both library and tools) before building this software
- the client-server protocol used to submit outbound facsimile jobs, query server status, control job operation, etc. has been completely rewritten; client applications are mostly compatible on the command-line with previous versions, but there are some differences (noted below)
- the default port for the client-server protocol has moved from 4557 to 4558; the new port service name is ``hylafax'' (as opposed to the old ``fax'' service name)
- the syntax for specifying a destination service has changed slightly; the old <host>:<modem> syntax is no longer supported, only the syntax [<modem>@]<host>[:<port>] is supported
- client access to servers may now be controlled with passwords; the GECOS user identity information from the password file is no longer used for client identification or authentication
- many administrative operations can now be accomplished directly through the new client-server protocol
- users no longer get documents returned by electronic mail when an outbound job fails; the documents are instead left on the server and may be reused directly in resubmissions
- the queueing model used by the software has changed; jobs that complete (with success or failure) no longer are automatically purged from the system; instead such jobs are moved to a ``done queue'' from which they, and their associated state, can be used to prepare new jobs
- a new faxqclean program is provided for removing unused and orphaned documents and jobs from the spooling area; it is also intended to do job archiving (not currently implemented)
- the default job queueing parameters have changed; in particular jobs are now retried more quickly (check config.h.in and/or config(4F) for details)
- IXO/TAP message paging support is temporarily broken except when supporting the old client-server protocol; a future distribution is intended to provide paging support through the Simple Network Paging Protocol (SNPP) described in RFC 1861
- outbound jobs are now considered to be in a particular ``state'' that reflects the treatment they are receiving from the scheduler; this state may be displayed with the faxstat program
- the server model for handling inbound and outbound documents has changed; fax servers now act as a repository for documents and jobs may be created that reference long-lived documents that reside in the ``document queue'' or the ``receive queue''
- client applications now support system-wide as well as per-user configuration files
- the client software has been redesigned to support multiple transport protocols; the current distribution includes working support only for TCP/IP using BSD-style socket calls
- the server software supports transcoding of inbound and outbound TIFF
- the server software supports automatic truncation of trailing whitespace in pages of an outbound document
- the server software supports ``realtime notification'' of events that take place within programs running on a server machine
- the `ModemMaxPacketSize` and `ModemInterPacketDelay` configuration parameters, used to throttle the host software for slow modems, has been replaced by a new mechanism whereby a delay may be inserted prior to each AT command sent to the modem
- the number of times a server program tries to initialize a modem is now controllable
- a new modem command escape code has been added to force server software to wait for a specific modem response (this was added specifically for Motorola Lifestyle modems that require the host wait for `CONNECT` after issuing `ATO` when an inbound data call is recognized with adaptive answer)
- the T.4 decoder has been rewritten to use a superior algorithm (both faster and more space efficient)
- communication between faxq and other processes on the server machine is now ``reliable'' (i.e. each message to faxq should elicit a response); this fixes problems whereby clients would be told an operation had completed successfully when in fact it was queued waiting for faxq to process it
- support has been added for modem classes; a modem class is a pseudo-device that a user can specify when submitting a job--the job will be processed by any modem in the class
- support has been added for sending and receiving SUB, SEP, and PWD frames through the Class 1 driver (the Class 2 driver has support based on the proposed ITU T.Class 2 standard, but no modems currently support it); the following configuration parameters were added for this functionality: Class2APQueryCmd, Class2APCmd, Class2SACmd, Class2PACmd, Class2PWCmd

NEW PROGRAMS:

- hfaxd is a new program that implements the server-side of the new client-server protocol; it replaces the old faxd.recv program which is no longer included (and should not be used)
- faxstate is a new program that is used to control whether or not faxq will assign a modem for use in processing an outbound job
- faxconfig is a new program to be used to alter configuration parameters used by faxq and/or faxgetty
- cqtest is a new program for testing the copy quality checking support
- choptest is a new program for testing the automatic whitespace truncation support
- faxwatch is a new program for testing the realtime event notification support

CHANGES IN THE SOFTWARE CONFIGURATION:

- the configure script has been significantly reworked to record more information about its work in the config.log file
- the configure script provides more extensive information about tests that fail
- the TIFF library is no longer included in the distribution; you define the location for the include files and library using the `LIBTIFF` and `TIFFINC` configuration macros (see the config.site file)
- a new macro `CONFIG_TIOCMBISBYREF` has been added to control whether or not the software assumes the target system passed arguments by reference or by value in a `TIOCMBIS` ioctl system call
- a new macro `CONFIG_NOREOPEN` has been added to control whether or not the server software re-opens devices during the normal modem setup/reset procedure (disabling this can speedup modem reset and/or help with modems connected to terminal servers)
- a bug was fixed in the logic used to identify if `-liberty` was needed
- `-lgen` is now recognized as a potential container for the `openlog` and `pututxline` functions
- emulation code is now included for the `getopt` and `strtoul` functions

CHANGES IN THE MODEM CONFIG FILES:

- new config file for the ZyXEL 2864
- the USR Class 2.0 configuration file has been changed to override the copy quality query command so that the host does copy quality checking of received facsimile; this works around the fact that some firmware revisions incorrectly report support for copy quality checking that does not exist
- the USR Class 1 configuration files has been updated to include the new product ID code returned by modems running firmware that supports data signalling rates >28.8 bps
- support for adaptive-answer was added for Motorola 28.8 modems
- all prototype configuration files now use an (obviously) invalid `FAXNumber` and `LocalIdentifier`

CHANGES TO FAXQ:

- setup of a send-only server is done differently; rather than specify modems on the command line a new faxmodem program is used to dynamically inform faxq that a modem is available (this mimics the way that faxgetty works and permits proper setup of modem capabilities)
- arbitrary arguments to programs invoked by faxq can now be specified in the `DestControls` file; this is useful, for example, for controlling fax session parameters based on the destination phone number (e.g. restricting signalling rate to 9600 bps for overseas phone calls)
- users can control, on a per-job basis, the time to use when rescheduling retries of outbound jobs that fail due to a communication problem
- a bug was fixed whereby notification messages included garbage information (the following line in the job queue file was incorrectly appended to the last line of status information)
- faxq no longer recursively locks a queue file when a job is submitted whose kill time has already expired; this avoids a deadlock situation on systems that improperly emulate `flock`
- faxq now processes jobs in an order that guarantees the highest priority job will always be scheduled first
- the configuration file is automatically reread, if it has changed, each time the job scheduler is entered to process a ready-to-run job
- the `-m` option has been removed; the new faxmodem program should be used instead to specify modems that are to be used in a send-only configuration
- hooks have been added for supporting the submission of PCL documents (a PCL RIP is required for operational support and such a program is not included)
- TIFF documents that need reformatting are now handled on the server through a tiff2fax command script; the default script uses a new program tiffcheck and tools from the TIFF software distribution to handle many flavors of TIFF (although this area needs more work)
- support was added for the automatic truncation of trailing whitespace from document pages; this can be done on each page, on the last page of each document, or not at all and users can control the work that is done on a per-job basis
- programs (such as faxsend or ps2fax) specified through configuration parameters can now be passed arguments by specifying them in the configuration parameter strings
- a bug was fixed where the reason for certain failures in document preparation were not correctly recognized (the exit status from ps2fax was being incorrectly interpreted)
- malformed jobs are now processed more carefully with the result that more meaningful notification messages are returned to users
- all linear searches in the scheduler have been eliminated; this can result in a noticeable performance improvement on systems that process high volumes of outbound jobs
- the algorithms used to manage shared document files has changed to support the functionality defined by the new client-server protocol
- new trace flags were added to trace messages sent and received via FIFO special files, modem state transitions, the parsing and application of dialstring rules, and document reference handling

CHANGES TO FAXSEND:

- the Class 1 driver now properly handles modems and remote devices that support only v.27ter signalling
- the Class 1 driver now sends only the minimum required pieces of the DIS and DCS frames (i.e. no option bytes will be sent unless meaningful information is present)
- the Class 1 driver now supports the transmission and reception of PWD (Password), SEP (Selective Polling), and SUB (Sub Address) frames
- the Class 2 driver has support for the proposed ITU T.Class2 extensions to support PWD, SEP, and SUB frames
- support was added to control the minimum speed to use in sending page data
- a bug was fixed whereby page data was corrupted when high resolution 2D-encoded data was overlaid with taglines
- document polling requests are now rejected before dialing the telephone if a Class 2/2.0 modem does not support the necessary functionality
- 2D-encoded documents are now rejected before dialing the telephone if a modem is incapable of transmitting 2D-encoded data
- users can now control, on a per-job basis, the minimum required speed for transmitting page data, whether or not to image taglines (and the format string to use), the desired signalling rate, data format, minimum scanline time, and the use of error correction mode; session-related parameters are advisory and dependent on the capabilities of the sending modem and receiving device
- per-page accounting information is now kept, including the negotiated session parameters
- modems that cannot be initialized after repeated attempts are considered wedged and a command script is run that can, for example, disable the use of the modem
- the handling of DTR under HP-UX has been changed to use the HP-specific ioctl calls for manipulating modem signals
- realtime process scheduling support for HP-UX has been added
- all modem-related system calls that fail are now logged (previously a few could fail without an error being logged)

CHANGES TO FAXGETTY:

- received facsimile are now written to files with names are of the form `faxXXXXXX.tif`, where `XXXXXX` is a cyclically increasing number
- a bug was fixed where received page data could be corrupted when copy quality checking was enabled with a Class 2/2.0 modem
- copy quality checking has been rewritten to fix several bugs and to add support for transcoding of received facsimile
- a new configuration parameter `RecvDataFormat` can be used to force received facsimile to be written in a format different from which it is received (e.g. write 1-D MH received data reencoded with 2-D MMR so that less disk space is used)
- more information about the received facsimile is written to the TIFF file using several new tags (registered with Adobe); this information includes the session parameters, time spent receiving each page, and any SUB frame received for routing the inbound document
- inbound calls where no pages are successfully received now generate notification via the faxrcvd command script
- per-page accounting information is now recorded, including the negotiated session parameters; this information is also recorded in the TIFF file using the new `FaxRecvParams` and `FaxRecvTime` tags
- support was added for controlling the modem state reported to faxq each time a modem is properly initialized; this can be used to mark modems unavailable for outbound use
- a new `-c` option was added for setting configuration parameters from the command line
- the `-d` option was removed
- modems that cannot be initialized after repeated attempts are considered wedged and a command script is run that can, for example, disable the use of the port
- new configuration parameters, `LockDataCalls` and `LockVoiceCalls`, can be used to control whether or not UUCP lock files are kept for the duration of an inbound data and voice call, respectively (this can be useful for programs that do not function properly if they encounter a lock file, even if the file is setup for their process)
- a new configuration parameter, `ModemPriority`, was added to control the order in which modems are allocated by faxq to outboud jobs: the higher a modem's priority, the more likely it is to be assigned for use

CHANGES TO PAGESEND:

- modems that cannot be initialized after repeated attempts are considered wedged and a command script is run that can, for example, disable the use of the port
- a bug was fixed that caused duplicate copies of a message to be transmitted under certain circumstances
- a bug was fixed where the `pagerMaxMsgLength` and `pagerPassword` entries in the info database were being overwritten/removed

CHANGES TO SENDFAX:

- sendfax has been totally rewritten to use the new client-server protocol
- support has been added for tracing dialrules parsing
- new `-1` and `-2` options for requesting the use of 1D- and 2D-encoded data
- a new `-b` option for specifying a minmum signalling rate for transmitting page data
- a new `-B` option for specifying a desired signalling rate
- a new `-E` option for disabling the use of ECM
- a new `-F` option for specifying a per-job tagline format string
- a new `-I` option for specifying a fixed retry time interval
- a new `-M` option for specifying a desired minimum scanline time
- a new `-w` option for waiting for a job to complete
- support was added for specifying an email address for notification messages that is different from the name/address specified with the `-f` option
- parameters passed to the faxcover program are now quoted with single quotes instead of double quotes (so that strings with ``$'' in them are not expanded as shell variables)
- the pathname of the faxcover program can now be specified through a configuration file
- many default parameters can now be specified on a per-system and per-user basis through configuration files

CHANGES TO SENDPAGE:

- sendpage is temporarily broken

CHANGES TO FAXSTAT:

- faxstat has been totally rewritten to use the new client-server protocol
- the command line interface is significantly different with the new protocol; in particular to display the state of the outbound job queue the `-s` option must be specified
- the `-u` option has been removed; there is no support (currently) for showing only those jobs owned by a particular user
- a new `-d` option can be used to see the state of jobs that have completed but have not (yet) been archived or purged from the server
- a new `-f` option can be used to see the contents of the directory where documents are stored on the server
- the `-a` option is now used to see the state of jobs that have been archived (this currently will show nothing since there is no support for archiving jobs)
- the format of displayed data can be customized on a per-system and per-user basis through use of the jobfmt and rcvfmt configuration parameters
- the `-w` option that enabled a wider display to be printed is no longer supported; the format controls are intended to be used instead
- the default formats for various displays has changed; the old formats can be recreated with suitable configuration settings
- new `-g` and `-l` options can be used to control whether dates and times are displayed in GMT or in the local timezone of the server (the default); this can also be controlled through the configuration files

CHANGES TO FAXALTER:

- faxalter has been totally rewritten to use the new client-server protocol
- support for manipulating parameters of job groups is temporarily broken

CHANGES TO FAXRM:

- faxrm has been totally rewritten to use the new client-server protocol
- support for manipulating parameters of job groups is temporarily broken
- a new `-d` option can be used to remove document files stored on a server

CHANGES TO FAXCOVER:

- faxcover automatically writes the `BreakIntoLines` macro in the cover sheet prologue so that user-defined cover sheet templates do not need to include it

CHANGES IN THE SUPPORT LIBRARY:

- a bug was fixed in the `Dispatcher` that caused delays in recognizing when a child process had completed (on some systems)
- the dialstring rules support now provides a mechanism for tracing the application of rules; this is especially useful together with the dialtest program for debugging dialstring rules
- the client-server protocol classes have been totally rewritten for the new client-server protocol; any application that made use of them will need to be revised
- zlib version 0.95 was added; it is used in the new client-server protocol for communicating compressed data

CHANGES IN THE HTML MATERIALS:

- the FAQ is no longer included; it is distributed separately
- information on binary distributions for SVR4 systems was added

HylaFAX table of contents.