Australia - Updated: 24-SEP-2003
hp.com home products and services support and drivers solutions how to buy
» contact hp
hp.com home hp OpenVMS ECOs

IMPORTANT NOTICE

The online distribution of OpenVMS and related product patches is being migrated to the HP ITRC (Information Technology Resource Center) patch distribution site. The new ITRC patch server will allow OpenVMS customers to take advantage of many enhanced features for patch searching and distribution.

Beginning August 1, 2003, OpenVMS and related Layered Product, publicly available patches will be available from the HP ITRC web site at

http://itrc.hp.com/service/patch/mainPage.do

The same patches will still be available from the existing patch server in Colorado Springs (http://www.support.compaq.com/patches/) through the end of October 2003, to give customers sufficient time to update their bookmarks and make the transition to the HP ITRC web site.

ECO kits will also be available by raw FTP from (ftp://ftp.itrc.hp.com/).

PLEASE UPDATE YOUR BOOKMARKS AND REGISTER ON THE NEW SITE NOW

Note: if you're having trouble connecting to the ITRC site, please delete any cookies for "itrc.hp.com" from your browser and try again. Report any difficulties with or suggestions to MrVMS

» Sydney CSC home page

Navigation
» ECOinfo main index
» Search ECOs
» Search FTP site
» Browse FTP site

ECO Indexes
» Chronological Index
» Indexed by Version
» Indexed by Rating
» Alpha Indexed by Name
» VAX Indexed by Name
» On Hold List

Associated Links
» OpenVMS Home Page
» OpenVMS News
» DIA/WIS Web Service

Feedback
» mail to CSC
.
Sydney Customer Support Centre OpenVMS ECO information
    Updated: 24-SEP-2003 (Use your browsers' Reload button to ensure you're viewing the most recent version)

UCXVAX_E5040 TCP/IP V4.0 for OPENVMS VAX ECO Summary

To obtain this kit please call the Customer Support Centre or use the FTP site

Search for this ECO kit and dependencies
Search the Compaq FTP web site this kit (exact match)
Search the Compaq FTP web site this or related ECOs

    
    
    Copyright (c) Digital Equipment Corporation 1996, 1997.  All rights reserved.
    
    PRODUCT:    DIGITAL TCP/IP Services V4.0 for OpenVMS VAX
    
    OP/SYS:     OpenVMS VAX
    
    SOURCE:     Digital Equipment Corporation
    
    ECO INFORMATION:
    
         ECO Kit Name:  UCXVAX_E5040
         ECO Kits Superseded by This ECO Kit:  UCXVAX_E3040
                                               UCXECO1-040
         ECO Kit Approximate Size:  12,191 Blocks
                        Saveset A -  1,116 Blocks
                        Saveset B - 11,070 Blocks
                     Cover Letter -      5 Blocks
    
         Kit Applies To:  Digital TCP/IP Services for OpenVMS VAX V4.0
         System/Cluster Reboot Necessary:  Yes
    
    
    ECO KIT SUMMARY:
    
    An ECO kit exists for Digital TCP/IP Services for OpenVMS VAX
    on V5.5-2 through V7.1.  This kit addresses the following
    problems:
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 INSTALL Images
    ---------------------------------------------------------------------------
    
            SPECIAL NOTE for NFS Server users:
    
            Problem:
    
            Sites using the manual startup for the NFS server may experience
            the server process hanging in LEF state.
    
            Solution:
    
            There is ***no ECO correction*** for this.  Sites using manual
            NFS server startup should do one or both of the following:
    
            1.  Use automatic startup; and/or
            2.  Edit SYS$MANAGER:UCX$NFS_SERVER_STARTUP.COM as follows:
                  Find the RUN command following the MANUAL_STARTUP: label.
                  The last two continuation lines of the RUN command,
    
                    /UIC=[1,4] -
                    /NORESOURCE
    
                   are changed to
                    /UIC=[1,4]
    
                  so that the /NORESOURCE_WAIT qualifier is eliminated.
    
            Reference:
    
            CFS.34717
    
    
    	NOTE:
    
    	THE FOLLOWING FILES ARE SPECIFIC TO THE PLAT_A.VMS_V70 BUILD
             OF BL10 *
    
    	AXP_UCX040.RELEASE_NOTES;1
            INSTALL.COM;1
            UCX$AXP_MISC.PDF;1
            UCX$PCSI_MODULE.COM;1
            UCX$PCSI_RESULT.COM;1
            UCX$PCSI_TAIL.COM;1
            UCX$VAX_MISC.PDF;1
            UCX040_RELEASE_NOTES.PS;1
            UCX_AXP.PCSI$TEXT;1
            UCX_AXP.PDF;1
            UCX_THETA.PCSI$TEXT;1
            UCX_THETA.PDF;1
            UCX_VAX.PCSI$TEXT;1
            UCX_VAX.PDF;1
    
    ECO 1 updates:
    --------------
    
    ECO A   02-Nov-1995                     Alpha and VAX
    
    	Images:
    
    	None.
    
    	Problem:
    
    	The UCP startup command procedure, UCX$UCP_STARTUP.COM,
            installs the SYS$SYSTEM:UCX$UCP.EXE image with unnecessary
            privileges.
    
            Solution:
    
    	Remove the /PRIVILEGES qualifier from the INSTALL command line.
    
    	Reference:
    
    	Per V4 review.
    
    
    ECO B   10-Jan-1996
    
    	Images:
    
    	None.
    
    	Problem:
    
    	Applications, such as the PATHWORKS mail server, that turn
            off the CCL bit when started through RSH or REXEC, prevent
            the NULL byte, which is part of the RSH and REXEC protocols,
            from being sent to confirm a successful login.
    
            Solution:
    
    	Add an extra line ($ WRITE SYS$OUTPUT "") before executing
            the specified command.  This solution will give the kernel
            an opportunity to send the NULL.
    
    	Note:
    
    	To be effective, these new .COM procedures must be copied
            to their respective target directories, which will exist
            only if the relevant service has been enabled via UCX$CONFIG.
            The modules should always be copied to SYS$COMMON:[SYSMGR],
            but should also be copied to SYS$SYSDEVICE:[UCX$RSH] and
            SYS$SYSDEVICE:[UCX$REXEC], if they exist.
    
            ECO B of these files is designed to work with ECO E or later
            of the NET component.  Using these new .COM files with older
            kernel code will result in an extra blank line appearing at
            the beginning of each RSH or REXEC session.
    
    
    ECO C   23-Feb-1996                     Alpha and VAX
    
    	Images:
    
    	UCX$BIND_VALIDATE_SETUP.EXE	UCX V4.0-10C
    
    	Problem and solution:
    
    	Name server setup scripts and the metric view command
            have been added.
    
    	Reference:
    
    	To set up the name server, execute the main module,
            @sys$manager:ucx$bind_shell.com.  This module performs
            the preliminary set ups and invokes the server menus.
            It also validates for the BIND logicals and creates the
            local loopback and root cache files in the UCX$BIND
            directory if they do not already exist.
    
            o UCX$BIND_SERVER_DOC.COM
              Complete documentation and reference for setting up the name
              server.
    
            o UCX$BIND_PRIM_SETUP.COM
              Primary name server setup procedure. The module is invoked
              from the UCX$BIND_SHELL procedure.
    
            o UCX$BIND_SEC_SETUP.COM
              Secondary name server setup procedure. The module is invoked
              from UCX$BIND_SHELL procedure.
    
            Image: SYS$COMMON:[SYSEXE]UCX$BIND_VALIDATE_SETUP.EXE
    
              This backend module to the name server configuration and
              setup procedures searches for the domain records in the
              BIND config database.  If the records exist for a particular
              domain, an error is returned.  The module also prevents the
              same name server from being configured both as a primary and
              a secondary server for the same domain.  It also performs
              other simple record manipulation.
    
    
    ECO 3 updates:
    --------------
    
    ECO D   10-May-1996                     Alpha and VAX
    
            Images:
    
            None.
    
            Modules:
    
            UCX$BIND_SHUTDOWN.COM
    
    	Problem:
    
    	ECO installation failed because UCX$BIND_SERVER.EXE image was
            installed.  That happened because the bind shutdown procedure
            did not delete installed images.
    
    	Solution:
    
    	Add "install delete" commands to the bind shutdown procedure.
    
    	Reference:
    
    	CFS.40790
    
    
    ECO E   05-Aug-1996                     Alpha and VAX
    
            Images:
    
            None
    
    	Modules:
    
            UCX$CONFIG.COM
    
    	Problem:
    
            The LPD Client fails to start when configured to allow
            non-privileged users to delete entries from queues.
    
    	Solution:
    
    	Modify UCX$DIS_PRV and UCX$ENA_PRV to correctly use the
            cluster and pseudo options when updating a service.
    
    	Reference:
    
    	CFS.35589
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 Kernel Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A	14-Nov-1995			Alpha and VAX
    
    	NOTE:
    
    	The correction to INETACP_TTSUP.MAR is already applied in
            the BL10 (SSB) kits for PLAT_V.VMS_V55 and PLAT_A.VMS_V70.
    
    	Images:
    
    	UCX$BGDRIVER.EXE			UCX V4.0-10A
    	UCX$INTERNET_SERVICES.EXE		UCX V4.0-10A
    	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.0-10A
    	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.0-10A
    	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.0-10A
    	UCX$INETACP.EXE				UCX V4.0-10A
    
    	Problems:
    
    	1.  A system may crash during shutdown due to deleting an
                interface that has contradictory data in its IF structure.
                The IF is for a SLIP device (i.e., SLx) but the IF$B_IFTYPE
                field indicates an Ethernet device.
    
    	2.  An inadequate ARP table causes too many ARP messages
                to be broadcasted.  ARP message counting does not
                properly account for which messages are broadcasts
                and which ones are not (INET_IF_VCI.MAR).
    
    	3.  On logout from TELNET, the TELNET connection hangs.
                This is included here for completeness to explain the
                presence of INETACP_TTSUP.MAR in the SRC_PAT stream.
                This is an OpenVMS V7.0 only problem.
    
    	4.  A READ operation with the LOCKBUF set could, upon
                receipt of out-of-order TCP segments, leave the low
                water mark set in the socket.  Subsequent READ
                operations without LOCKBUF, or using a smaller buffer
                size, will hang awaiting additional data.
    
    	5.  A system crash may occur in the security driver when
                the local interface is used.
    
    	6.  A synchronization crash may occur in PWIP.
    
    	7.  A crash may occur on an Alpha system after the deallocation
                of the SLIP structure to the INETCB free list, where it is
                re-allocated and corrupted.
    
    	8.  System pool fills up with VCRPs.  This exhausts pool and
                causes a cluexit bugcheck.
    
    	Solutions:
    
    	1.  The problem is a flaw in the logic that creates pseudo
                interfaces.  Creating a pseudo interface on an existing
                SLIP interface produces the inconsistent data structures
                that lead to the crash.  This has been corrected so that
                the crash will not occur and is a forward retrofit of
                ECO N of V3.3.
    
    	2.  Allow for dynamic allocation of the ARP table at UCX
    	    startup.  This is an interim correction that will
                require UCP support in a future release and is a
                forward retrofit of ECO P of V3.3.
    
    	3.  The offset of REQCB$L_AXP_CHAN to match IRP$L_CHAN for
                OpenVMS Alpha V7.0 has been corrected.
    
    	4.  Clear the low water mark upon returning from any READ where
    	    the LOCKBUF modifier was used.
    
    	5.  In INET_IPINTR (INET_IN_OUT.MAR), in the security driver
                conditional code, check for a zero pointer to IF_UCB and,
                if it is present, use the local interface.
    
    	6.  Along with the PWIP changes made in PWIP ECO A for V4.0,
    	    the UCB$L_BG_TEL_UCB field is cleared when a BG channel
                is deassigned.
    
    	7.  Dispatching for the REQCB$C_DEACTIVATE_SLIP function was
                inexplicably left out of the Alpha specific dispatch table.
                The solution is to add dispatching to the table for this
                function.
    
    	8.  This problem arises when a large number of receive
                duplicate TCP packets, each containing a FIN only and
                a sequence number that is one higher than the expected
                number is received.  As a result, PWIP queues these
                redundant packets until all pool is consumed with them.
                The problem is that PWIP does not recognize them as
                redundant.
    
                The solution is the addition of some simple logic into
                the tcp_reass routine, in TCP_INPUT_VMS.C, which takes
                into account that a packet containing a FIN consumes one
                unit of the sequence number.  With the addition of this
                logic, PWIP will recognize the redundant packets and
                deallocate them immediately.
    
    	Enhancements:
    
    	  1.  Change the interface for the call to INET_COMPRESS_PACKET
                  to prepare the way for eventual PPP support.
    
              2.  Align the start of data in a VCRP on OpenVMS Alpha V7.0.
    
    	References:
    
    	1. CFS.33896
    	2. CFS.33563, CFS.38218
    	3. None
    	4. CFS.33932
    	5. None
    	6. None
    	7. CFS.35206
    	8. CFS.34368
    
    
    ECO B	18-Dec-1995			Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE			UCX V4.0-10
            UCX$INTERNET_SERVICES.EXE		UCX V4.0-10B
            UCX$INTERNET_SERVICES_V6.EXE		UCX V4.0-10B
            UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.0-10B
    	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.0-10B
    
    	Problem:
    
    	IGMP group membership queries are not being answered.  This
            prevents local routers with IP multicasting capability from
    	learning of a UCX host's group memberships.
    
    	Solution:
    
    	Update internal tables so that IGMP messages will be
    	received and processed appropriately.
    
    	Reference:
    
    	CFS.35580
    
    
    ECO C	28-Dec-1995			Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE			UCX V4.0-10C
    	UCX$INTERNET_SERVICES.EXE		UCX V4.0-10C
    	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.0-10C
            UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.0-10C
            UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.0-10C
    
    	Problems:
    
    	An INVEXCEPTN system crash may occur due to the
            VCRP$L_DEALLOC_RTN field being zero.  The problem arises
            because of attempts to deallocate an already deallocated
            VCRP.  The method of deallocating a VCRP is to call the
    	routine pointed at by the VCRP$L_DEALLOC_RTN field.  This
            routine then deallocates the VCRP and zeros out this field.
            An attempt to deallocate it again results in a crash.
    
    	After urgent TCP data (OOB data) arrives and is read, the
            socket is still considered to be in OOB state until non-OOB
            data arrives.  The select() call in this case is returning
            immediately due to the OOB state, even when no OOB data
            is available.
    
    	Solutions:
    
    	This problem occurs when the ip_dooptions routine is called
    	from inet_ipintr in INET_IN_OUT.MAR, and ip_dooptions returns
            an error.  In this case, ip_dooptions has already deallocated
            the VCRP and then branched to deallocate it again.  The solution
            is to test for the error and then skip the deallocation in
            this case.
    
    	If the receive buffer is empty, do not return from select()
            with an exception flag.
    
    	References:
    
    	CFS.36199
    	CFS.36143
    
    
    ECO D	4-Jan-1996			Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE			UCX V4.0-10D
    	UCX$INTERNET_SERVICES.EXE		UCX V4.0-10D
    	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.0-10D
    	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.0-10D
    	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.0-10D
    
    	Problem:
    
    	If 2 processes share a socket and process A calls $DASSGN
            on that	shared BG device, I/O queued to the device by
            process B is canceled.
    
    	Solution:
    
    	In INET$CANCEL, initialize two new fields in the UCB so
            that future determinations can be made that this is NOT the
            last deassign of this device.  In this case, selectively
            cancel only the I/Os that belong to the process doing the
            $DASSGN.
    
    	References:
    
    	CFS.33352, CFS.26480
    
    
    ECO E	11-Jan-1996 - 29-Jan-1996	Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE			UCX V4.0-10E
    	UCX$INTERNET_SERVICES.EXE		UCX V4.0-10E
    	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.0-10E
    	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.0-10E
    	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.0-10E
    	UCX$INETACP.EXE				UCX V4.0-10E
    
    	Problems:
    
    	1.  Applications such as the PATHWORKS mail server, which
                disable carriage control (CCL) after being invoked
                through RSH or REXEC,  prevent the initial NULL byte
                from ever being sent.
    
    	2.  An INVEXCEPTN system crash in TNDRIVER occurs due to
                continuing sporadic synchronization problems.
    
    	3.  The system enters a high IPL loop, repeatedly calling
                COM$FLUSHATTNS from INET_FLUSH_ALL_AST.
    
    	4.  A system crash occurs in EXE_STD$PRIMITIVE_FORK attempting
                to deliver what is supposed to be an Attention AST but
                is actually a pointer to the PWIPDRIVER receive socket
                call back routine.
    
    	5.  When the UCX TELNET server accepts a connection from a
                host with a 12-digit IP address, that host's name is
                not correctly resolved.  Instead, the IP address is shown.
    
    	6.  Automatically configuring SLIP interfaces through "UCX
                SET CONFIG INTERFACE" fails while hand configuration of
                the same interface succeeds.
    
    	7.  A system crash occurs in the data link driver when
                the code returns to the data link driver after it
                calls back from an AYNCH_JSB invocation.  At that
                time, it returns to the data link an R4 that contains
                a zero and a deallocated VCIB.
    
    	Solutions:
    
    	1.  Allow the DCL procedure, which starts RSH and REXEC
                connections, to perform the first output thereby
                assuring inclusion of the NULL.
    
    	2.  The main part of this correction is to introduce more
                extensive validation code in the TNDRIVER.  However, some
                of the data to be validated comes from the BGDRIVER and is
                conveniently passed to the TNDRIVER in the INETCB structure.
                A new field, INETCB$L_BG_UCB_SIZE_TYPE_FLCK , is created
                in the INETCB and is initialized in the INETACP_INIT_INETCB
                routine INETACP_INIT.MAR.  The data is referred to in the
                TNDRIVER in module UCX$TN_SERVER_MAIN.MAR, in routines
                TN$START_COMMON and TN_UCB_TO_BG_UCB.
    
    	3.  This problem was introduced by ECO V.  The problem arises
                in a loop where COM$FLUSHATTNS is called.  The solution is
                to only traverse the loop once when doing selective cancel
                I/O.
    
    	4.  This problem is a synchronization problem between PWIP and
                the BGDRIVER (or UCX$INTERNET_SERVICES for VAX).  At the
                time of the crash, a SOCKET structure points to a UCB but
                the corresponding UCB does not point back to the SOCKET.
                This apparently occurs when connection in PWIP is being
                dismantled and some data comes into the SOCKET.  The
                correction for this problem requires changes in NET and
                PWIP.  In NET, two new bits are defined: UCB$X_BG_PWIP
                in the UCB$W_BG_FLAGS word and SOCKBUF$X_PWIP in the
                SOCKBUF$L_FLAGS field.  In NET, these bits are only looked
                at in INET_MAIN.MAR.  Both of these bits are set and
                cleared in PWIP.  Also, previously PWIP only set the
                UCB$x_BG_SELECT bit in the UCB$W_BG_FLAGS word instead
                of the first of these new bits.  This led to some
                confusion in INET_MAIN.MAR.  Now PWIP devices are labeled
                unambiguously.  Note that the SOCKBUF$L_FLAGS field
                is declared in INET_NPGD.SDL for macro code and a
                corresponding sb_flags field is declared in SOCKETVAR.H
                for the C code.  To be consistent, a new bit, SB_PWIP, is
                declared to correspond to SOCKBUF$x_PWIP even though it
                is not referred to in the C code.
    
    	5.  Do not add a trailing space character to the ASCII form
                of the IP address.  In the case of a 12-digit address,
                this extra character causes the address to exceed the
                legal length and prevents translation.
    
    	6.  When the configuration database contains an automatic
                SET INTERFACE for a SLIP interface, the UCP implicitly
                performs a UCX SET INTERFACE command that includes the
                /BROADCAST mask parameter.  Since SLIP interfaces do not
                support broadcasting, this causes the interface to be
                rejected.  The solution is to introduce code in the
                CREATE_P5_BUFFER routine in INETACP_SLIP to explicitly
                ignore the command to set a broadcast address on the
                interface.
    
    	7.  The normal flow on VCI port management calls to the data
                link is that an ASYNCH_JSB be issued (which returns to the
                caller); VCI calls back when the port management function
                is initiated; VCI calls back again after the port management
                event associated with the completion of the function occurs.
                The problem is that if the VCI callback indicates an error,
                the assumption is that the second callback would not be
                made and that cleanup would be performed at the time of the
                first callback.  The result is that portions that the data
                link still needed were cleaned up.
    
                The correction is to always assume that the second callback
                will occur and to use a timeout mechanism for cleanup if
                the second call back is not made.  In this way, the cleanup
    	    is not performed prematurely.
    
    	References:
    
    	    1. None
    	    2. CFS.36056
    	    3. None
    	    4. CFS.33756
    	    5. CFS.27194
    	    6. None
    	    7. CFS.37081
    
    	Notes:
    
    	1.  To be effective, this update must be installed along
                with a new SYS$SYSDEVICE:[UCX$REXEC]UCX$REXECD_STARTUP.COM
                and SYS$SYSDEVICE:[UCX$RSH]UCX$RSHD_STARTUP.COM file,
                containing an extra $ WRITE SYS$OUTPUT "" line.
    
                These .COM files can be found in ECO B of the INSTALL
                component.
    
    	2.  The INETACP code additions are benign and can co-exist with
                previous TNDRIVER versions.  However, the new TNDRIVER
                requires the new INETACP.
    
    	4.  These code additions require the corresponding new PWIPDRIVER
                if the system is running PWIP.
    
    
    ECO F   15-Feb-1996			Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10F  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10F
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10F
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10F
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10F
            UCX$INETACP.EXE   	  	    UCX V4.0-10F
    
    	Problem:
    
    	1.  Upon shutting down UCX on a node which participates in
                a cluster alias but is not the current impersonator, a
                misleading ARP broadcast is sent announcing the node as
                an impersonator.
    
    	2.  On VAX systems, when SLIP is enabled on a terminal line,
                the UCB for the terminal has an unrelocated value for its
                FDT.  This situation might result in a crash.
    
            Solution:
    
    	1.  Check the status value returned in the LKSB (lock status
                block) to determine whether the cluster lock has been
                granted or the LOCK_GRANTED_AST routine has been called
                as a result of a $DEQ operation during normal shutdown.
    
    	2.  In INET_SLIP_OPEN in INET_SLIP.MAR, the class driver vector
                table was relocated.  At the same time, relocate the
                DDT$L_FDT field.
    
            References:
    
    	1. CFS.34714
    	2. None
    
    
    ECO G   27-Feb-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                    UCX V4.0-10G  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10G
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10G
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10G
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10G
            UCX$INETACP.EXE                     UCX V4.0-10G
    
            Problem:
    
    	Problems exist with shared sockets.  First, the selective
            cancel I/O functionality introduced in ECO D and refined
            in ECO E still does not properly select I/Os to be canceled.
            Second, when I/Os are selectively canceled, if the active
            IRP on a queue is canceled, the queue is left in limbo with
            no mechanism for restarting.  Third, an original design flaw
            was found in the code that implements the basic mechanism
            that manages the read, write, and miscellaneous queues on a
            BG device.  This flaw effectively precludes true shared
            sockets and manifests itself in the following way:  when a
            queued operation completes, the next operation on the queue
            is handled in the context of the process that handled the
            first operation, even when the new operation does not belong
            to this process.  The result is corruption of the address
            space of the process within whose context the erroneous I/O
            is handled.
    
            Solution:
    
    	The first problem was solved by tightening the selection
            criteria in the INET_SHUTDOWN_FLUSH_* (INET_ACCESS.MAR) family
            of routines so as to properly select the I/Os to be canceled and
            to then reconstruct the queues.  The second problem, restarting
            stalled queues, was solved by introducing a new routine,
    	QUEUE_INET_KAST, in INET_MAIN.MAR, which is a simplified version
            of INET_IRP_UP_1 for the purpose of restarting queues in the
            context of  particular process.  The third problem, where I/O
            requests were being serviced in the wrong context, was solved
            by introducing a test for the proper context into the main queue
            dispatching routine, NET_ENQ_IO_RESTART in INET_RCV_XMT.MAR.
            When a mismatch is found, the queue is left dormant but a call
            is made to the new routine, QUEUE_INET_KAST, to restart the
            queue in the proper process context.
    
    
    ECO H   29-Feb-1996                     Alpha and VAX
    
            Images:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10H  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10H
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10H
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10H
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10H
            UCX$INETACP.EXE                     UCX V4.0-10H
    
            Problem:
    
            Code review of the ECO G fix turned up a very subtle and
            unlikely to occur problem in the code that should be corrected
            for shared sockets.  The problem has to do with the INET_KAST
            mechanism that delivers an AST to the process that owns an IRP
            that needs to be "resumed".  In the unlikely event that two
            IRPs on the same UCB, belonging to different processes, need
            to be "resumed" simultaneously, then the second of these IRPs
            will be processed in the context of the wrong process.  The
            reason that this appears to be so unlikely is that for this to
            happen, there would have to be ongoing I/O on at least two of
            the queues of one UCB, with the active IRPs belonging to
            different processes, and the I/Os would need "resumption"
            within a very small window.
    
            Solution:
    
            The solution to this is to add a test to the INET_KAST routine,
            in INET_MAIN.MAR just before an IRP is resumed.  At that point,
            test that execution is occurring in the context of the process
            that owns the IRP.  If it is, proceed.  If not, queue the ACB
            to the process that owns the IRP, and exit from the current AST
            running in the context of the wrong process.  This will in effect
            cause reentry into the routine that is currently executing,
            INET_KAST, but in the context of the correct process.
    
    
    ECO I    1-Apr-1996 			Alpha and VAX
    
    	Image:
    
    	UCX$INETACP.EXE			UCX V4.0-10I
    
    	Problem:
    
    	With the CASE_INSENSITIVE flag enabled, proxies are not
            correctly found in the communication proxy cache.
    
            Solution:
    
    	Correct and simplify the sequential proxy lookup routine.
    
    
    ECO 2 updates:
    --------------
    
    ECO K    23-APR-1996 			Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10K  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10K
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10K
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10K
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10K
            UCX$INETACP.EXE                     UCX V4.0-10K
    
    	Problems:
    
    	A system crash occurs at UCX shutdown in INET_SOACCEPT
            because INET$GL_PTR_INETCB contains the value zero.
    
            Solutions:
    
    	After picking up the contents of INET$GL_PTR_INETCB,
            validate the contents by making sure that it is a system
            address.  If it is invalid, terminate the I/O request with
            the SS$_DEVNOTMOUNT status.
    
            Reference:
    
    	CFS.39581
    
    
    ECO L    1-MAY-1996                     Alpha and VAX
    
    	Image:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10L  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10L
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10L
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10L
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10L
            UCX$INETACP.EXE                     UCX V4.0-10L
    
            Problems:
    
    	A system crash may occur in INET_SELECT_UNBUILD_LIST due to
            a corrupt select list.
    
            Solutions:
    
    	Apparently in correcting the problems associated with shared
            sockets (ECOs G and H above), the behavior changed slightly
            so that a UCB was not always removed from a select list before
            deassigning and deallocating the UCB.  As a result, it was
            possible to have a deallocated UCB remaining on a select list.
    
            In INET$CANCEL_COMMON, the new routine INET_SELECT_REMOVE_UCB
            unconditionally removes a UCB that is about to be deallocated
            from any select list that might include it.
    
    
    ECO M   2-MAY-1996                      Alpha and VAX
    
    	Image:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10M  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10M
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10M
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10M
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10M
            UCX$INETACP.EXE                     UCX V4.0-10M
    
            Problems:
    
    	A system crash occurs at TNDRIVER+2C6 due to corruption
            at TNDRIVER+2CC.
    
            Solutions:
    
    	The problem arises because of the overlaying of UCB$L_PDT
            by the UCX defined field UCB$L_ACP_LINK in both BG and TN
            UCBs.  At UCX shutdown, under certain conditions, the
            TTDRIVER misinterprets the UCB$L_PDT field and uses it as
            a pointer into what it thinks is another UCB.  The TTDRIVER
            then clears a longword at an offset from the pointer.  Since
            there is a pointer into the TNDRIVER at UCB$L_PDT, TTDRIVER
            clears a longword of code in the TNDRIVER, leading to a
            subsequent crash when UCX is re-started.
    
    
    ECO N   14-MAY-1996                     Alpha and VAX
    
    	Image:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10N  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10N
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10N
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10N
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10N
            UCX$INETACP.EXE                     UCX V4.0-10N
    
            Problem:
    
    	If an interface such as an FDDI is down or physically
            disconnected at the time that the system attempts to bring
            up UCX, UCX fails to configure it.  A more user friendly
            approach would be to create a persistent thread that would
            continue to retry to configure the interface until success
            was achieved.
    
            Solution:
    
    	The above approach was implemented.  Essentially, if the
            initial attempt to create the VCI port fails, it still
            returns "success" to the INETACP, but creates a thread that
            attempts to "restart" the port.
    
            References:
    
            CFS.38927
    
    
    ECO O   15-MAY-1996                     Alpha and VAX
    
    	Images:
    
    	UCX$BGDRIVER.EXE                    UCX V4.0-10O  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10O
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10O
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10O
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10O
            UCX$INETACP.EXE                     UCX V4.0-10O
    
            Problem:
    
    	A system crash may occur at IP_FORWARD+1F8, after UCX is
            stopped and restarted.
    
            Solution:
    
    	Initialize the IPFORWARD_RT cache to eliminate the possibility
            that the packet might be forwarded using a stale IF pointer.
    
            Reference:
    
    	CFS.40260
    
    
    ECO P   23-MAY-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                    UCX V4.0-10P  (Alpha)
            UCX$INTERNET_SERVICES.EXE           UCX V4.0-10P
            UCX$INTERNET_SERVICES_V6.EXE        UCX V4.0-10P
            UCX$INTERNET_SERVICES_SEC.EXE       UCX V4.0-10P
            UCX$INTERNET_SERVICES_SEC_V6.EXE    UCX V4.0-10P
            UCX$INETACP.EXE                     UCX V4.0-10P
    
            Problem:
    
            UCX$INETACP goes into a compute bound loop in user mode
            and much of UCX becomes unusable.  For example, no new
            inbound TELNET connections can get started, UCX cannot
            be shut down, UCP commands may cause the process to hang,
            etc.  Often this problem appears on systems running
            MailWorks.
    
            Solution:
    
            What triggers this problem is that MailWorks apparently
            asks the UCX$INETACP to perform a 'GETHOSTBYNAME' function,
            passing a zero length string to define the host.  The
            UCX$INETACP, in the process of performing this request,
            experiences an access violation, which throws the process
            into an infinite loop.  Ideally, the UCX code would check
            for the zero length string and reject the request; however,
            it did not, and it proceeded to use the string incorrectly.
            The reason that this only occurs in V4.0 of UCX on Alpha
            only, and not in V3.3, is that V4.0 was built using a newer
            version of the DEC C compiler, and the compiler-produced code
            for V3.3 allowed a graceful exit from the problem, whereas
            the V4.0 compiled code resulted in the access violation error.
    
            To resolve the problem, the condition handler LIB$SIG_TO_RET
    	has been introduced to protect the entire code sequence from
            this type of error.
    
            References:
    
            CFS.40887, CFS.39875, CFS.41234
    
    
    ECO Q   26-JUN-1996                     Alpha and VAX
    
            Images:
    
            UCX$INETACP.EXE                     UCX V4.0-10Q
    
            Problem:
    
    	When the originating and target user names match in an
            incoming request but do not match in the proxy database,
            the proxy is not properly located.
    
            Solution:
    
    	Change the way matching user names are handled during
            proxy lookup.
    
            Reference:
    
            CFS.42195
    
    
    ECO R   9-July-1996                     Alpha and VAX
    
            Images:
    
    	1. UCX$INET_ROUTING.EXE                     UCX V4.0-10R
            2. UCX$BGDRIVER.EXE                         UCX V4.0-10R  (Alpha)
               UCX$INTERNET_SERVICES.EXE                UCX V4.0-10R
               UCX$INTERNET_SERVICES_V6.EXE             UCX V4.0-10R
               UCX$INTERNET_SERVICES_SEC.EXE            UCX V4.0-10R
               UCX$INTERNET_SERVICES_SEC_V6.EXE         UCX V4.0-10R
               UCX$INETACP.EXE                          UCX V4.0-10R
    
            Problems:
    
    	1.  The UCX$INET_ROUTED process goes into hibernation and never
                returns.  The problem turns out to be that the process runs
                out of event flags.  In the ioctl routine in ROUTED_IOCTL.C,
                an event flag is allocated by calling LIB$GET_EF, but under
                certain error conditions, it is never deallocated by calling
                LIB$FREE_EF.  After a while, the entire set of event flags
                becomes exhausted.  Combined with a change to UCX$IPC.MAR
                that allocates (and then deallocates) an event flag for each
                I/O, such as the one implicit in a call to routine, recvfrom,
                this proves fatal.  After the event flags are all depleted,
                calls to recvfrom always fail.
    
            2.  The routing table becomes filled with entries that all have
                the RTF_UP flag bit cleared, but have a non-zero reference
                count.
    
            Solutions:
    
            1.  The solution is to ensure that a call to LIB$FREE_EF always
                follows a successful call to LIB$GET_EF in routine ioctl, in
                ROUTED_IOCTL.C.
    
            2.  In routine rtalloc, in ROUTE_VMS.C, prevent overwriting of
                the ro->ro_rt field before calling rtfree for this rtentry.
                This prevents the orphaning of old entries with an
                outstanding refcount.
    
            References:
    
            1. CLD CFS.41946, CFS.41745, CFS.41898, CFS.42418
            2. None
    
    
    ECO 3 updates:
    --------------
    
    ECO S   8-AUG-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10S  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10S
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10S
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10S
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10S
            UCX$INETACP.EXE                             UCX V4.0-10S
    
    
            Problems:
    
            1.  The routing table becomes filled with entries that all
                have the RTF_UP flag bit cleared, but have a non-zero
                reference count.
    
            2.  A system crash may occur in the routine ip_output due
                to inp_route.ro_rt pointing to a deallocated rtentry.
    
            3.  A system crash may occur on OpenVMS V7.0 Alpha, when a
                reference is made to unallocated memory that appears to be
                part of the MBSTAT_DATA cluster of large buffers.
    
            Solutions:
    
            1.  In the ip_output routine in IP_OUTPUT_VMS.C, the static
                global route structure, 'iproute' was being overwritten
                without first performing an RTFREE of the rtentry
                associated with the route.  The result is an rtentry
                whose refcnt is permanently increased by 1 and, therefore,
                will never go away.  The solution is to do the RTFREE.
    
            2. In the INETACP_MOUNT routine in INETACP_INIT.MAR, the
               largest number of large buffers that will fit in a maximum
               sized cluster (i.e., a cluster at least one byte less than
               64KB) is calculated.  This number is put into the new
               INETCB$B_MAX_NR_DATA_CLST field.
    
            3. In INET_MBUF.MAR, where clusters of large buffers are
               allocated, the number of buffers to configure in a
               cluster is minimized using the number of buffers to
               configure in a cluster using the number specified by
               the user and the value contained in
               INETCB$B_MAX_NR_DATA_CLST.
    
            4. In INET_SETMODE, some cleanup in routines, SET_MIN_LARGE,
               SET_MIN_SMALL, and INET_SET_SIZES_MIN.
    
            References:
    
            2. CFS.43319
            3. CFS.43704
    
    
    ECO T   06-Sep-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10T  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10T
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10T
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10T
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10T
            UCX$INETACP.EXE                             UCX V4.0-10T
    
            Problem:
    
    	At setup, select() should properly sense and return if the
            socket has OOB data pending.  While reception of OOB data
            does cause an active select() to terminate, active OOB data
            does not cause a new select() to terminate.
    
            Solution:
    
            OOB data does not appear as data queued to the socket's MBUFs.
    	Also, the read() code fails to clear the RCVATMARK condition
    	when the OOB data is returned to the user.  Hence, the check
    	added in ECO C is not correct and the previous code, while it
    	will cause the select() to return, there may be no OOB present.
    
            The change will actually check the TCP context to see if an OOB
    	is present instead of trusting RCVATMARK.  This is a correction
    	at one place in the driver, and the correction to the read()
    	code will be made for V4.1 and beyond.
    
            Reference:
    
            CFS.44644
    
    
    ECO U   10-Sep-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10U  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10U
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10U
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10U
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10U
    
    
            Problem:
    
    	When receiving a persistent window probe message, UCX TCP
            does not reply with an (acknowledgment) ACK message.  Although
            there is no explicit requirement to send such ACKs, certain
            other implementations expect them.  The lack of a response
            prompts other TCP's to abort connections with full receive
            windows, even though the connection is in fact still active.
    
            Solutions:
    
    	Send back an ACK, indicating the same sequence number that
            was just received.  In other words, do not acknowledge the
            single byte which was beyond the end of the allowable receive
            window; simply repeat the ACK for all prior data.
    
            Reference:
    
            CFS.43983
    
    
    ECO V   10-Sept-1996                     Alpha and VAX
    
    	Retrofit forward from ECO AI V3.3.
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10V  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10V
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10V
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10V
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10V
    
    
            Problem:
    
            The system pool fills up with VCRPs.  This exhausts pool and
            causes a CLUEXIT bugcheck.  This problem was initially reported
            in ECO M (V3.3).
    
            Solution:
    
            This problem is really not a UCX problem, but rather a
            datalink driver problem.  However, a small amount of code
            can be added to UCX to prevent the problem from crashing the
            system. The problem is triggered by a broadcast storm from
            an errant Windows NT node, that produces thousands and
            thousands of broadcast datagrams so quickly that all pool is
            overrun even before initial notification of the existence of
            the datagrams occurs.  Normally UCX accepts a datagram from
            the datalink driver and forks on it (i.e., queues it for
            later processing) so that control can be immediately passed
            back to the datalink driver. When the datalink finishes its
            tasks, the processing of the datagrams in the queue begins.
            In the case here, the datalink receives so many datagrams
            that it does not finish with its tasks until the queued
            datagrams occupy all of pool.  The included fix artificially
            limits the number of such datagrams that will be queued back
            to the datalink.  When the number of unprocessed queued
            datagrams passes a threshold value (1000 for now)
            deallocation of all the datagrams above this threshold
            occurs.  This, in effect, prevents the datalink from
            overrunning pool since each new received datagram can use
            the deallocated space.
    
            References:
    
    	CFS.44630, CFS.31492
    
    
    ECO W   17-Sept-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10W  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10W
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10W
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10W
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10W
    
            Problem:
    
    	An application waiting for a given broadcast address, incorrectly
            gets broadcast messages addressed to the network address of its
            second interface.
    
            Solution:
    
    	Tighten up the address comparison and selection criteria in
            INET_IN_OUT.MAR so as to be able to recognize when a datalink
            level broadcast has been received over an interface whose
            IP broadcast address does not coincide with the IP broadcast
            destination of the received datagram.  In this case, discard the
            received datagram.
    
            Reference:
    
    	CFS.34509
    
    
    ECO X   4-OCT-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10X  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10X
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10X
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10X
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10X
    
            Problem:
    
    	The UCX SHOW DEVICE command sometimes hangs.  As a result,
    	the user shuts down UCX and brings it up again.  Upon doing
            this once, the system crashed.
    
            Solution:
    
            The cause of the hang is probably that the UCX$BGDRIVER, in
            responding to the UCX SHOW DEVICE command, is perusing the
            I/O database without holding the I/O database MUTEX. As a
            result, there is a remote possibility that the I/O database
            might change while it is being searched.  This could have
            unpredictable results.  The way  to resolve this problem is
            to simply request this MUTEX before the operation begins,
            and then to release it when the search is finished.  This
            should relieve the user's need to shutdown UCX in similar
            circumstances.
    
            The crash that occurred after bringing up UCX was the result
            of a resource problem in OpenVMS that left UCX in an
            inconsistent state.  A fix for this problem requires a major
            rework of UCX initialization and is planned for a future
            release. For the present, it is recommended that frequent
            stopping and starting of UCX be avoided.
    
            Reference:
    
            CFS.43985
    
    
    ECO Y   22-Oct-1996                     Alpha and VAX
    
    	Retrofit forward from ECO AJ V3.3.
    
    	Images:
    
    	UCX$BGDRIVER.EXE                            UCX V4.0-10Y  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10Y
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10Y
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10Y
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10Y
    
            Problem:
    
            A crash can occur in the IN_CKSUM routine with an access
            violation.  This problem is triggered by the receipt of a
            technically illegal, highly fragmented ping request
            datagram, probably from a Windows NT or a Windows 95 system.
            The problem with the datagram is that when it is reassembled
            with its IP header, it is longer than 65535 bytes which is
            the longest length expressable in the 16 bits of the length
            field of the IP header.
    
    	Solution:
    
            In the ip_reass routine, fragmented packets are reassembled,
            without looking at the total length of the datagram. To
            resolve the problem, if this length exceeds 65535, the
            datagram will be discarded after incrementing the
            ips_fragdropped counter by the number of fragments in the
            datagram.
    
    
    ECO 4 updates:
    --------------
    
    ECO Z   25-Oct-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10Z  (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10Z
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10Z
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10Z
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10Z
            UCX$INETACP.EXE                             UCX V4.0-10Z
    
            Problems:
    
    	1.  Incoming RSH connections sometimes hang.
    
            2.  A system crash can occur in INET_GET_IRP with the INETCB
                pointer as zero.
    
            3.  The UCX$INET_ACP process slowly loses AST count as time
                goes on.
    
            Solutions:
    
    	1.  In the INETACP_GET_USER_INFO routine, the data from the
                incoming RSH connection is parsed for information as to
                the error port, the user name, command to execute, etc.
                If enough data has not yet arrived, a READATTN AST is
                set to send a wake-up notification when new data arrives
                and then causes the process to go into sleep.  An error
                in setting up the AST request created a timing window
                wherein the process might go to sleep forever.
    
            2.  This is a synchronization problem in that UCX is being
                brought down and residual PWIP activity results in a call
                to INET_GET_IRP.  The solution is to put a test for the
                existence of the INETCB before using a pointer to it, and
                having the routine return an error if the test fails.
    
            3.  The cause of problem is that if an incoming RSH
                connection specifies an error connection, and during
                the processing of the specified RSH command data is
                written over the error connection, the ACP loses track
                of a READ ATTN AST that it had requested on the error
                connection.  The solution is to provide cleanup in
                the INET_SELECT_REMOVE_UCB routine.  This routine looks
                at every UCB that is about to disappear.  If it sees a
                dangling READATTN AST on the socket associated with the UCB,
                the routine removes it and returns the AST quota to its owner.
    
            References:
    
            1. Internal reports
            2. CFS.44492
            3. CFS.46398
    
    
    ECO AA  14-Nov-1996                     Alpha and VAX
    
            Images:
    
    	UCX$BGDRIVER.EXE                            UCX V4.0-10AA (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10AA
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10AA
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10AA
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10AA
            UCX$INETACP.EXE                             UCX V4.0-10AA
    
            Problems:
    
            1.  A system crash (VAX only) may occur with a Reserved
                Operand Fault during the execution of a CMPD
                (Compare D_Floating) instruction.
    
            2.  A system crash may occur in the arpioctl routine
                during reference to the variable arpoint, which is zero.
    
            Solutions:
    
            1.  In INET_IN_OUT.MAR there are two CMPD instructions
                that, depending on the data they are comparing, might
                cause a system crash.  Simply substitute 2 CMPL instructions
                for the offending instruction to resolve the problem.
    
            2.  The arptable is allocated and the variable arpoint is
                set to point to the arptable when the first external
                interface is configured. If UCX is started and the
                configuration database has no interfaces defined, it
                may enter code that just assumes that arpoint has a
                valid value in it.  To resolve this dilemma, it explicitly
                tests for the possibility of a zero arpoint wherever that
                is possible, and exits gracefully in that case.
    
            References:
    
            1. CFS.46437
            2. CFS.46434
    
    
    ECO AB  27-Nov-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                            UCX V4.0-10AB (Alpha)
            UCX$INTERNET_SERVICES.EXE                   UCX V4.0-10AB
            UCX$INTERNET_SERVICES_V6.EXE                UCX V4.0-10AB
            UCX$INTERNET_SERVICES_SEC.EXE               UCX V4.0-10AB
            UCX$INTERNET_SERVICES_SEC_V6.EXE            UCX V4.0-10AB
            UCX$INETACP.EXE                             UCX V4.0-10AB
    
            Problem:
    
            IP datagrams fragments that have the the DF bit set are
            being ignored.  Apparently, some SUN systems running
            SOLARIUS generate such datagrams.
    
            Solutions:
    
            An IP datagram that has the DF bit set is incorrectly
            assumed to NOT be a fragment.  Instead, it was dropped
            because no attempt was made to reassemble it and its
            associated fragments into a complete datagram.  The
            assumption that the DF bit implies that a datagram is
            not a fragment is no longer made.
    
            Reference:
    
    	Internal report
    
    
    ECO AC  16-DEC-1996                     Alpha and VAX
    
            Images:
    
            UCX$BGDRIVER.EXE                       UCX V4.0-10AC (Alpha)
            UCX$INTERNET_SERVICES.EXE              UCX V4.0-10AC
            UCX$INTERNET_SERVICES_V6.EXE           UCX V4.0-10AC
            UCX$INTERNET_SERVICES_SEC.EXE          UCX V4.0-10AC
            UCX$INTERNET_SERVICES_SEC_V6.EXE       UCX V4.0-10AC
            UCX$INETACP.EXE                        UCX V4.0-10AC
    
            Problem:
    
            Invoking TRACEROUTE.EXE from UCX$EXAMPLES may lead
    	to a crash.
    
            Solutions:
    
            In the raw_detach routine, m_freem is called to deallocate
    	rp->rcb_options.  In this call there was an incorrect
            dtom_s(rp->rcb_options) rather than a naked rp->rcb_options.
            Since this field is already a pointer to an mbuf, the extra
            reference was incorrect.
    
    	Reference:
    
    	CFS.46521
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 Telnet Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   01-NOV-1995			Alpha and VAX
    
    	Images:
    
            UCX$TELNET.EXE                  UCX V4.0-10A
    
    	Problem:
    
    	Most terminal settings appear to be lost when TELNET sets up
    	an interactive session with the remote host.
    
    	Solution:
    
    	TELNET honors the terminal's settings but sets the terminal
            PASTHRU characteristic, which causes the client's terminal
    	driver to ignore those settings.
    
    	The correction involves recoding the client's terminal driver
    	interface to use the appropriate set of QIOs and library calls
    	so the PASTHRU setting is not required.
    
            Reference:
    
            CFS.32095
    
    	Problem:
    
    	The terminal type is not properly established.
    
    	Solution:
    
    	Correct previous changes by passing the pointer of the
            /TERMINAL_TYPE qualifier value from MAIN to SESSIONStart().
            Sense the pointer and, if it is not set, determine the
            terminal type.
    
            Reference:
    
            CFS.33818
    
    	Problem:
    
            There are problems with security break-in for TELNET and
            RLOGIN attempts. Until now, the remote user name was not
            reported for any login failures. As a result, all users
            would be locked out from a given source after a certain
            number of incorrect login attempts. In addition, beginning
            with OpenVMS VAX V6.0, the intrusion database was changed and
            as a result, the behavior for TELNET/RLOGIN was rendered
            different for the two platforms and also depended on the
            OpenVMS version.
    
            Solution:
    
    	The SHOW INTRUSION display now appears as shown here  for
            all versions of OpenVMS V6.2 and beyond:
            nodename:remote-username. In addition, the remote node
            address/name/id is still reported in accounting. For any
            OpenVMS version prior to V6.2, the behavior is the same as
    	it was previously so that the code is not conditionalized
    	to behave differently for different OpenVMS versions.
    
            Reference:
    
            CFS.23114, CFS.23543, CFS.25308
    
    
    ECO C   27-December-1995				Alpha and VAX
    
            Images:
    
            UCX$TELNET.EXE                  UCX V4.0-10C
    
         	Problem:
    
    	When virtual terminals are disabled, outbound TN devices
            are still reported as mounted.
    
            Solution:
    
            Force all outbound devices to be marked non-mounted, regardless
            of the virtual terminal setting.
    
            Reference:
    
            CFS.36076
    
    
    ECO D	11-Jan-1996				Alpha and VAX
    
    	Images:
    
    	UCX$TNDRIVER.EXE		UCX V4.0-10D
    
    	Problem:
    
    	Continuing system crashes occur due to synchronization
            errors where the TN UCB is pointing to an old BG UCB.
    
    	Solution:
    
    	Expand the validity tests introduced in ECO H above and make
            them more extensive.  In addition, add a new test to
            validate the link between a supposed BG UCB and a SOCKET.
    
    	In expanding the validity tests, the software uses data
            passed from the BGDRIVER (in the INETCB).  This means that
            this ECO of the TNDRIVER requires at least ECO W of the NET
            facility.
    
    	In addition, as a build note, to properly link the TNDRIVER
            with the reference to a new INETCB field, it is necessary to
            temporarily copy the INET.MLB from the OBJ_PAT directories
            to the relevant OBJ directories.
    
    	Reference:
    
    	CFS.36056
    
    
    ECO E	17-Jan-1996				Alpha and VAX
    
    	Images:
    
    	UCX$TELNET.EXE                  UCX V4.0-10E
    
    	Problem:
    
            On an OpenVMS Alpha system, the Tn3270 emulator does not
            load the customized EBCDIC/DMCS Translation table and fails
            with the error message %UCX-E-TRALOAFAI, failed to load
            translation tables from SYS$SYSROOT:[SYSLIB]TN3270DEF.TBL.
    
    	Solution:
    
            The image header format has changed.  A new alias code has
            been defined for OpenVMS Alpha and the location of the
            number of header disk  blocks has been moved.  These changes
            required that a new LOAD_xxx  routine be developed.  This
            routine is named LOAD_AXP.
    
    	Reference:
    
    	CFS.33698
    
    
    ECO F	6-Feb-1996				Alpha and VAX
    
    	Images:
    
    	UCX$TNDRIVER.EXE		UCX V4.0-10F
    
    	Problem:
    
    	A system crash may occur due to corrupted memory.
            Specifically, the area in a TN UCB beyond the
            UCB$T_TEL_TTY_NAME, for a large number of bytes (close to
            64KB), may have been trashed.
    
    	Solution:
    
    	The problem is an ineffective length calculation for a MOVC3
            instruction.  Apparently, a negative length is calculated in
            some circumstances, and then a comparison (that was NOT
            unsigned) permitted a very large effective length to be
            used.  The solution is to ensure that it is within bounds.
    
    	Reference:
    
    	CFS.37455
    
    
    ECO 2 updates:
    --------------
    
    ECO G   25-Mar-1996                     Alpha and VAX
    
            Images:
    
            UCX$TELNET.EXE
    
    	Problem:
    
    	Entering an escape sequence while in character mode results
            in the transmission of multiple segments to the server.
            This causes problems when poorly-coded servers expect escape
            sequences to appear in a single input segment.
    
            This correction is a courtesy.
    
            Solution:
    
    	Enable escape sequence recognition and, when in character
            mode, remove the limitation of one character for the input
            buffer.
    
            Reference:
    
    	CFS.38533
    
    
    ECO H   4-May-1996                     Alpha and VAX
    
            Images:
    
            UCX$TNDRIVER.EXE                UCX V4.0-10H
    
            Problem:
    
    	A system crash may occur at TNDRIVER+2C6 due to corruption
            at TNDRIVER+2CC.
    
            Solution:
    
    	The problem arises because of the overlaying of UCB$L_PDT by
            the UCX defined field UCB$L_ACP_LINK in both BG and TN UCBs.
            The solution is part of a coordinated change that also has
            KERNEL component changes.  See the ECO L description in the
            KERNEL part for ECO 2 updates.
    
    
    ECO I   19-Jun-1996                     Alpha and VAX
    
            Images:
    
    		UCX$TELNET.EXE			UCX V4.0-10I
                    UCX$TNDRIVER.EXE		UCX V4.0-10I
    
            Problem:
    
    	When creating an outbound session, the TNDRIVER
            automatically sends WILL-DO-ECHO and WILL-DO-SGA in the
            output stream.  This creates problems from some TELNET
            clients/devices on the remote host.
    
            Solution:
    
            In TELNET client, add the /OPTIONS qualifier to accept ECHO,
            SGA and others as options keywords which will be passed to
            the INETACP at session creation.
    
            In TNDRIVER, add code to sense that this is an outbound
            session and to negotiate ECHO and SGA if the user has
            selected the options from the TELNET client.
    
    	Reference:
    
            CFS.41867
    
    	Problem:
    
    	The TELNET CREATE_SESSION command does not accept more than
            four digits for the port number parameter.
    
            Solution:
    
    	Increase the size of the buffer used to read the port number
            from DCL. This correction was also applied to
            CREATE_INCOMING_SESSION and ATTACH.
    
    	Reference:
    
            CFS.42159
    
    
    ECO K   8-July-1996                     Alpha and VAX
    
    	Images:
    
    	UCX$TNDRIVER.EXE		UCX V4.0-10K
    
    	Problem:
    
    	Incoming TELNET sessions hang.
    
            Solution:
    
    	This problem is caused by previous fix.  An incorrect branch
            destination caused part of the normal negotiation for
            inbound sessions to be skipped. The branch destination of a
            newly introduced instruction was modified so that previous
            behavior for inbound sessions is retained.
    
    	Reference:
    
            CFS.40895
    
    
    ECO L   15-July-1996                     Alpha and VAX
    
            Images:
    
    	UCX$TELNET.EXE			UCX V4.0-10L
    
    	Problem:
    
    	The TELNET DELETE_SESSION command returns a false error message.
    
            Solution:
    
    	Correct the status check on the $ASSIGN() to the network device.
    
    	Reference:
    
    	Local testing
    
    
    ECO 3 updates:
    --------------
    
    ECO M   16-Aug-1996                     Alpha and VAX
    
            Images:
    
            UCX$TNDRIVER.EXE        ! UCX V4.0-10M
    
    	Problem:
    
    	The outbound TELNET device stops working if unsolicited
            input is received from the network.
    
            Solution:
    
    	Set UCB$M_TT_NOLOGINS in UCB$W_DEVSTS to dismiss unsolicited
            terminal input, leaving the device in a useful state.
    
            Reference:
    
            CFS.42083
    
    
    ECO N   19-Aug-1996                     Alpha and VAX
    
            Images:
    
    	UCX$TELNET.EXE                          UCX V4.0-10N
    
    	Problem:
    
    	Multiple escape sequences could possibly overflow the terminal
            buffer.
    
            Solution:
    
    	Do not allow the number of untransmitted characters in the
            buffer to exceed half the size of the buffer's allocation.
    
            Reference:
    
            CFS.43895
    
    
    ECO O   26-SEP-1996                     Alpha and VAX
    
            Images:
    
    	UCX$TNDRIVER.EXE                UCX V4.0-10O
    
            Problem:
    
    	Applications performing I/O against an outbound TELNET UCB
            do not know that the connection is lost.
    
            Solution:
    
    	After connection loss, outbound TELNET sessions are still
            capable of processing I/O operations even though nothing
            happens.  When the connection is broken, the application is
            notified with SS$_HANGUP *if and only if* there are IRPs
            pending against the UCB.  If no IRPs are queued, the
            application is not notified.  In addition, any applications
            which begin I/O after the connection is broken do not get
            any errors even though their data goes unprocessed.
    
            To solve this problem, the device is turned OFFLINE after
    	the class driver is notified of a disconnection from the
    	network.  This will reject any I/O operations which occur
    	after the connection has been broken.
    
    	Reference:
    
    	CFS.42083
    
    	Images:
    
    	UCX$TELNET.EXE                  UCX V4.0-10O
    
    	Problem:
    
    	After installing ECO M or ECO N of UCX$TELNET, line
    	mode does not work properly; the sessions appear to hang.
    
            Solution:
    
    	The optimization applied in ECO M (and N) has been
    	conditionalized so it will be used only in character
    	mode.
    
    	References:
    
    	CFS.43831, CFS.44575, CFS.45061
    
    
    ECO 4 updates:
    --------------
    
    ECO P	26-Dec-1996 			Alpha and VAX
    
            Images:
    
    	UCX$TELNET.EXE                          UCX V4.0-10P
    	UCX$TNDRIVER.EXE 			UCX V4.0-10P
    
    	Problem:
    
    	In character mode, certain escape character sequences
    	are not passed through the connection unless in PASTHRU
    	(old style) mode.
    
            Solution:
    
    	Clearing the terminal characteristic TT2$M_EDITING when in
            character input mode allows the various special escape
            sequences to be read instead of being translated into their
            character equivalent.
    
    	Reference:
    
    	CFS.45350
    
    	Problems:
    
    	1. TN devices remain because of ECO A.
            2. F6 and F10 keys are not passed through TELNET client.
            3. Problems with the client's keystrokes and line mode.
            4. Problem restoring appropriate settings after spawning.
            5. Problem resuming *busy* sessions after escaping TELNET
    	   client.
    
            Solutions:
    
            1. Clear ONLINE only for OUTBOUND connections.  This is not
               a problem because the only option available at that time
               is to DELETE the session.
            2. Turn off TT2$M_EDITING in the terminal settings.
            3. Turn off ESCAPE mode and remove the multi-char optimization.
            4. Limit the changes through SMG to only those settings which
               are changed by the client.
            5. If the pending output buffer exceeds the saved prompt buffer
               size, then do not save the output.
    
    	References:
    
    	1. CFS.46472, CFS.46478, CFS.46574, CFS.46666, CFS.46930
    	2. CFS.45350, CFS.45574
    	3. CFS.45329, CFS.45662
    	4. CFS.45372
    	5. CFS.45372
    
            Problem:
    
            A proxy login can be circumvented by sending unsolicited
            data through the socket before LOGINOUT has a chance to
            run.  All logins are expected to be under the control of
            the TNDRIVER but do not appear to be.
    
            Solution:
    
            When creating the TN device, set UCB$M_JOB in UCB$x_DEVSTS.
            This makes the terminal driver believe that a login is in
            progress, so it discards the data and echoes a BELL.  When
            RLOGIN PROXY succeeds in the INETACP, the appropriate
            automatic login occurs as expected.  Should the proxy check
            fail (i.e., there is no valid proxy for this connection), then
            the normal login mechanism clears UCB$M_JOB before telling the
            terminal driver to start the login.
    
          	Reference:
    
    	CFS.46504
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  IPC Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   02-NOV-1995  			Alpha and VAX
    
            Images:
    
    	UCX$IPC_SHR.EXE			UCX V4.0-10A
    
            Problem:
    
    	Registers R1 and R8 are confused causing SELECT to return
            incorrect results.  This usually affects those users who
            expect SS$_NORMAL as  opposed to an odd successful return
            value, such as SMTP.
    
            Solution:
    
    	Correct the register usage.
    
            Reference:
    
    	Per V4 review.
    
    
    ECO B   23-Feb-1996                      Alpha and VAX
    
            Images:
    
    	UCX$IPC_SHR.EXE         	UCX V4.0-10B
    
    	Problem:
    
    	In UCX$CLOSE, UCX performs an IO$_DEACCESS operation.  When
            sockets are shared between multiple processes, one process
            closing a socket will prevent other processes from
            continuing to use it.
    
            Solution:
    
    	If the reference count on the affected device_socket is
            greater than 1, skip the IO$_DEACCESS.
    
    
    ECO C   26-FEB-1996                      Alpha and VAX
    
            Image:
    
    	UCX$IPC_SHR.EXE                     UCX V4.0-10C
    
    	Problem:
    
    	The inet_addr does not resolve hexidecimal and octal
            prefixes correctly.  A hex address must have an "0x"
            prefix and an octal address must have a prefix of "0."
            The routine should return "-1" for all unresolved
            addresses.
    
            Solution:
    
    	The routine now checks for "0" as the first character and
            the  following "x".  The routine also checks for trailing
            characters at  the end.
    
    	Reference:
    
    	CFS.37910
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  Management Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A    01-Nov-1995                       Alpha and VAX
    
            Images:
    
    	UCX$UCP.EXE			UCX V4.0-10A
    
    	Problem:
    
    	UCP crashes with the SET CONFIGURATION INTERFACE command when
            an invalid broadcast mask is specified.
    
            Solution:
    
    	Validate the broadcast mask string.
    
    	Reference:
    
    	CFS.32916
    
    ECO B   29-JAN-1996                      Alpha and VAX
    
            Images:
    
    	PING.EXE			UCX V4.0-10B
    
    	Problem:
    
    	PING always returns $STATUS=1 when it is used with
            qualifiers.
    
    	Solution:
    
    	The finish() was corrected to return UCX$_LOOP[IN]ACT status
            codes.
    
    	Reference:
    
    	CFS.37154
    
    
    ECO C    8-JUN-1996                     Alpha and VAX
    
    	Images:
    
    	SYS$SYSTEM:UCX$UCP.EXE			UCX V4.0-10C
    
    	Problem:
    
    	Probe and drop timer are not propagated upon UCX startup if
            drop timer is lower than the default probe timer (75 seconds).
    
            Solution:
    
    	Reverse order of probe and drop timer settings upon startup
            so that the new (lower) probe timer value is already set by
            the time of setting drop timer value.
    
    	Reference:
    
    	CFS.40000
    
    	Problem:
    
    	In a SHOW PROXY display, if the last record is both NFS and
            communication, only its NFS part is displayed.
    
            Solution:
    
    	Make proper "end of file" situation handling.
    
    	Reference:
    
    	CFS.41660
    
    
    ECO 3 updates:
    --------------
    
    ECO D     16-OCT-1996                      Alpha and VAX
    
            Images:
    
            UCX$UCP.EXE                     UCX V4.0-10D
    
            Problem:
    
            If the user does not have SYSLCK privilege and tries to
            UCX REMOVE PROXY, an error message indicates that the user
            does not have the privilege but does not indicate that this
            affects only the dynamic proxy database.
    
            Solution:
    
            Use another error message "Error processing dynamic NFS proxy..."
            instead of a generic "Error processing UCX$PROXY database."
    
            Reference:
    
    	CFS.42016
    
    
    ECO 4 updates:
    --------------
    
    ECO E   24-OCT-1996                      Alpha and VAX
    
            Images:
    
            UCX$UCP.EXE			UCX V4.0-10E
    
    	Problem:
    
    	If it is issued twice from the same session of UCX, SET
            NAME/INIT fails the second and all subsequent times with
            the message
    
              %UCX-E-NAMEERROR, Error processing name service request
               -SYSTEM-F-LINKDISCON, network partner disconnected
    	                          logical link
    
            Solution:
    
            Since the BIND server disconnects the link upon receiving an
            initialize request, disconnect the socket to the BIND server
            process every time after SET NAME/INIT is issued in order to
            make reconnect the next time.
    
    	Reference:
    
    	CFS.45033
    
    
    ECO F   12-JAN-1997                      Alpha and VAX
    
            Images:
    
    	UCX$UCP.EXE			UCX V4.0-10F
    
    	Problem:
    
    	The /REJECT and /ACCEPT lists from communication
    	configuration are not taken upon startup.
    
            Solution:
    
    	In the START COMM/INIT action routine, set dynamic
    	communication options after the communication
    	has been started.  Previously, they were being set before.
    
    	Reference:
    
    	Internal report
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  PWIP Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   4-DEC-1995			Alpha and VAX
    
            Images:
    
    	UCX$PWIPACP.EXE			UCX V4.0-10A
    	UCX$PWIPDRIVER.EXE		UCX V4.0-10A
    
    	Problems:
    
    	1.  A system crash may occur due to pool corruption.  A
                typical pattern is:
    
                    00000000  00000000  xxxxxxxx  yyyy0002
    
                where xxxxxxxx is one of the IP addresses of the crashing
                system, overwriting valid data in pool.
    
            2.  Various crashes occur in PWIP due to synchronization
                problems.  For example, one of the problems is due to
                the arrival of a downstream write after an upstream
                disconnect has arrived.
    
     	Solutions:
    
    	1.  The problem was found in the Build_ADDR_ACK routine in
                the PWIPDRIVER_ACK.C, where UCX allocates and fills in an
                MBLK with data. The last part of the data is an array of
                sockaddr_in structures, which are filled with the IP
                address(es) of the local system.  When the local system
                is multi-homed (i.e., it has more than one IP address),
                this array has more than one entry.  The problem was
                found in the calculation for the address of the second
                and subsequent entries in this array.  The calculation
                in error used the following DEC C instruction:
    
                  sockaddr = sockaddr+sizeof(struct sockaddr_in);
    
                Since sockaddr was declared:
    
                    struct sockaddr_in *sockaddr;
    
                the result of the calculation was to add the SQUARE of
                the length of an entry to sockaddr, rather than the
                length of one entry.  This result is because DEC C
                considers each unit to be an entry structure length.
                The correct calculation is to replace the offending line
                with:
    
                    sockaddr = sockaddr + 1;
    
                The crash resulted from the calculation giving an
                address well beyond the end of the structure, falling
                into some other structure in pool.  When pool checking
                is NOT enabled, this error may go unnoticed for long
                periods of time because it is likely that the corrupted
                memory is currently unallocated.
    
            2.  One of the sources of the lack of synchronization was that
                in several places, the code deassigned a BG device
                without having first done a QIO IO$_DEACCESS on the
                device. For normal UCX devices this is allowed, but for
                kernel interface access devices, as are all PWIP BG
                devices, this is not allowed.  Therefore, the solution
                was to add explicit IO$_DEACCESS|IO$M_SHUTDOWN QIO
                requests prior to deassigning the BG devices.  These
                changes were placed into several routines in the
                PWIPACP_UCX.C module.
    
                Another source of the problem was the failure to verify
                that a connection was in the midst of being torn down.
                To solve this, two specific verification steps were
                introduced: one in the pwip_rast routine in
                PWIPDRIVER_READ.C, and the other in the pwip_write
                routine in PWIPDRIVER_WRITE.C.  Specifically, the code
                verifies in each case whether the PDCB and the BG UCB
                mutually point to each other.  If not, the connection is
                in the process of being torn down and acts accordingly.
    
            References:
    
    	1.  CFS.34737
    	2.  None.
    
    
    ECO B   16-Jan-1996			Alpha and VAX
    
            Images:
    
    	UCX$PWIPDRIVER.EXE		UCX V4.0-10B
    
    	Problem:
    
            A system crash may occur in EXE_STD$PRIMITIVE_FORK, during
            an attempt to deliver what is supposed to be an Attention
            AST but is actually a pointer to a PWIPDRIVER receive socket
            call back routine.
    
            Solution:
    
            This problem is a synchronization problem between PWIP and
            the BGDRIVER (or UCX$INTERNET_SERVICES for VAX).  At the
            time of the crash, a SOCKET structure points to a UCB but
            the corresponding UCB does not point back to the SOCKET.
            This apparently occurs when a connection is being torn down
            in PWIP and some data comes into the SOCKET.  The correction
            for this problem requires  making changes in NET and in
            PWIP.  In PWIP, eliminate the BG_KERNEL_AST_HOOK bit
            (defined in PWIPDRIVER_UCX.H as equivalent to
            UCB$x_BG_SELECT) and define the new BG_PWIP (equivalent to
            the new  NET bit UCB$x_BG_PWIP) and use it instead of
            BG_KERNEL_AST_HOOK.  In  a small change in the
            pwip_handrelease_transport routine, this bit is no longer
            always cleared.  Now, the bit is cleared only if the UCB
            points to a SOCKET.  This change corresponds to a change in
            INET_MAIN.MAR (in INET_DELIVER_ATTNAST) that eliminates the
            cause of the crash.
    
            The new SOCKBUF$x_PWIP bit in the RCV and XMT socket buffers
            is set in routine pwip_handshake_transport and cleared in
            routine pwip_handrelease_transport.
    
            Note that for the ECO stream, PWIPDRIVER_UCX.H explicitly
            defines SOCKBUF$M_PWIP as 0x20.  For the normal stream, this
            definition will be picked up from NET.
    
    	Reference:
    
    	CFS.33756
    
    
    ECO C   15-Feb-1996			Alpha and VAX
    
            Images:
    
    	UCX$PWIPDRIVER.EXE		UCX V4.0-10C
    
    	Problem:
    
    	A system crash may occur in PWIP_HANDRELEASE_TRANSPORT which
            is called from CLOSE_DEV, with the alleged BG UCB argument
            not actually a BG UCB.
    
            Solution:
    
    	This problem is apparently another PWIP synchronization error
            caused by a PDCB from upstream that had the UCB pointer
            removed.  To alleviate the problem, the code now verifies
            that the purported UCB is still pointing back to the PDCB
            before writing into the UCB.
    
    	Reference:
    
    	CFS.33756
    
    
    ECO 2 updates:
    --------------
    
    ECO D   14-June-1996                     Alpha and VAX
    
            Images:
    
            UCX$PWIPDRIVER.EXE              UCX V4.0-10D
    
            Problem:
    
            Improper deallocation of multi MBUF UDP datagrams.
    
            Solution:
    
            Create a new, simple deallocation routine,
            adjUDPaccounting_single, and pass its address on the call to
            allocate the MBLK/DBLK for EACH mbuf in a UDP datagram, not
            only the first.  This routine detaches the given MBUF from
            the possible chain and deallocates it by calling the older
            adjUDPaccounting.  This latter routine deallocates an entire
            chain, but since we are only passing it a single detached
            MBUF, it will deallocate only that.
    
            Reference:
    
            CFS.40812
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  INETDRIVER Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   01-Dec-1995                     Alpha and VAX
    
            Images:
    
    	UCX$INETDRIVER.EXE      	UCX V4.0-10A
    
    	Problem:
    
    	A multiprocessor system crashes with a CPUSPINWAIT bugcheck.
    
            Solution:
    
            The I/O completion inserts the IRP into the CPU-specific I/O
            completion queue and posts an interrupt to the CPU's I/O
            completion routine.  This code executed at IPL 0 and, if the
            process was rescheduled onto another processor, it is
            possible that the INSQUE instruction was attempting to
            insert the IRP onto the last processor's I/O completion
            queue.  This situation could cause corruption in the IRP/ACB
            because INSQUE is not interlocked between multiple
            processors.
    
            The correction elevates IPL to IPL$_SCHED to prevent the
            rescheduling of the process during this critical set of
            instructions.
    
    	Reference:
    
    	CFS.34601
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  BIND Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   08-Nov-1995                     Alpha and VAX
    
            Images:
    
    	All				UCX V4.0-10A
    
    	Problem:
    
    	IPC's select() do not work correctly.  This component is
            linked against the IPC object library, thereby requiring a
            relink to pick up the correction.
    
            Solution:
    
    	Relinked.
    
    	NOTE:
    	The above image(s) are included in the second pass UCX
            V4.0-10 SSB kit.
    
    
    ECO B   23-Feb-1996                     Alpha and VAX
    
            Images:
    
    	UCX$NSLOOKUP.EXE		UCX V4.0-10B
    
    	Problem:
    
    	While trying to list all/or WKS records in a domain, using
            ls -d and ls -s commands of nslookup result in an access
            violation.
    
    	Solution:
    
    	The getprotobynumber searches the protocol database until
            the matching port number is found (or until EOF is
            encountered). Getprotobynumber makes a call to "getprotoent"
            and "endprotoent" for opening/closing the protocol database,
            which is not supported by the UCX kernel. The call did not
            check for the error status but continued to print the
            broken-out fields of the protoent structure, which resulted
            in an access violation.  A work around routine was added to
            perform the equivalent function.
    
    	Problem:
    
    	An access violation occurs during use of the "set
            [no]ignoretc" (ignore truncation errors) and "set vc" (set
            virtual circuit connection) for larger response length.
    
    	Solution:
    
    	Corrected the buffer overflow.  Added a loop to take care of
            the truncated response.
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  UCX$ACCESS_SHR.EXE Image
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    ECO B   23-Feb-1996                     Alpha and VAX
    
    	Images:
    
    	UCX$ACCESS_SHR.EXE		UCX V4.0-10B
    
    	Problem:
    
    	On the localhost, issuing "UCX SHOW MX localhost" returns
            the local record but filters all the remaining MX records.
    
    	Solution:
    
            An invalid filter routine filters MX records for the localhost,
            which affects SMTP mail.
    
            Reference:
    
            CFS.33206
    
    
    ECO 3 updates:
    --------------
    
    ECO D    27-SEP-1996                     Alpha and VAX
    
            Images:
    
            UCX$ACCESS_SHR.EXE		UCX V4.0-10C
    
    	Problem:
    
    	If UCX was upgraded to a newer version then any UCX SET
            SERVICE command will fail with a "UCX-E-INVRECORD, Invalid
            information" message.
    
    	Solution:
    
    	The incorrect record validity check (reverse condition)
            was fixed.
    
    	Reference:
    
    	CFS.43237
    
    
    ECO 4 updates:
    --------------
    
    ECO E    7-NOV-1996                     Alpha and VAX
    
            Images:
    
            UCX$ACCESS_SHR.EXE		UCX V4.0-10E
    
    	Problem:
    
    	Invalid debugging statements were incorporated into the ECO
            D images, above.  These statements caused unusual anomalies
            and compilation warnings, such as:
    
            3      3016         $SETDSC (CTRL_DESC, 10, CTRL_ASCII);
                            ................................1
            %BLS32-W-TEXT, (1) Reference outside of local data segment
                            CTRL_DESC, unpredictable results
    
    	Solution:
    
    	Remove the improper .OBJ file for the GET_MX module, and
            rebuild the shareable image with the original object file.
    
    
    ECO F   27-NOV-1996                     Alpha and VAX
    
            Images:
    
            UCX$ACCESS_SHR.EXE		UCX V4.0-10F
    
    	Problem:
    
    	If one of the records that a given MX record points to
            cannot be resolved, a UCX$ACCESS_GET_MX call fails to
            return the rest of the list of records.
    
            Solution:
    
    	The UCX$GET_MX code that insists on trying to resolve a
            record has been changed. If ucx$get_hostbyname() returns
            SS$_TIMEOUT, skip that record and continue on.
    
    	References:
    
    	CFS.33206, CFS.41627
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  BIND SERVER Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   08-NOV-1995                     Alpha and VAX
    
            Images:
    
    	ALL                             UCX V4.0-10A
    
    	Problem:
    
    	IPC's select() does not work correctly.  This component is
            linked against the IPC object library, thereby requiring a
            relink to pick up the correction.
    
            Solution:
    
    	Relinked.
    
    	NOTE:
    
    	The above image(s) are included in the second pass UCX V4.0-10
            SSB kit.
    
    
    ECO B   14-Feb-1996                     Alpha and VAX
    
            Images:
    
    	UCX$BIND_SERVER.EXE		UCX V4.0-10B
    
    	Problem:
    
    	The DNS name server, when configured as a secondary, will
            report that its database (db files) has expired records
            based on the preset expiration time, and would therefore not
            perform "zone transfer" for updating its records from the
            primary. The UCX SHO HOST command will still display the old
            records in the secondary.
    
            In addition, the log file will display a repetitive annoying
            message to the DNS admin/user indicating the expiration of
            the "db files," with every request for "zone transfer" or
            via "UCX SHO HOST." The log file will tend to grow over a
            period of time.
    
            The workaround available to the customer was to either
            delete the backup copies of the database files relevant to
            the secondary name server and restart the name server (only
            to see it happening again after the expiration time) or to
            increase the "serial #" of the SOA record in the primary
            server. Both these workarounds call for repeated user
            intervention.
    
    	Solution:
    
    	With the expiration of the time (as set in the SOA record),
            momentarily lower the "serial number" in the "SOA" record
            that has been read via the db_load routine to "zero" causing
            the secondary name server to have a lower serial number
            compared to the "serial number" in the SOA record of the
            "primary."  This situation would force the "zone transfer"
            to take  place.  The correction is in sync with the DNS
            community  (4.9.3 beta 32 BSD).
    
            A validating routine was added in NS_FORW.C to display the
            error/warning message related to the expired zone (display
            just once and remove duplicate messages).
    
    	Reference:
    
    	CFS.35882
    
    
    ECO 2 updates:
    --------------
    
    ECO C   10-May-1996                     Alpha and VAX
    
            Images:
    
    	UCX$BIND_SERVER.EXE		UCX V4.0-10C
    
    	Problems:
    
    	1.  UCX$BIND_ROUND_ROBIN_OFF does not disable round robin
                scheduling if BIND is not configured as caching server.
    
    	2.  The value of the UCX$BIND_ROUND_ROBIN_OFF logical is
                treated as a numeral which is confusing.
    
    	Solutions:
    
    	1.  The logical was not checked if DNS did not have cache
                enabled.  The logical is now checked immediately before
                doing round robin scheduling.
    
    	2.  Fixed, so now merely defining it is enough.
    
    	Reference:
    
    	CFS.40717
    
    
    ECO D   25-Jun-1996                     Alpha and VAX
    
    	Images:
    
    	UCX$BIND_SERVER.EXE		UCX V4.0-10D
    
    	Problem:
    
    	Load balancing code crashes with an access violation when
            the cluster record contains entries for hosts that do not
            run metric.
    
            Solution:
    
    	The load balancing code was restructured so that there is
            now only one outstanding receive.  The code was improved to
            run faster, because it only pauses to wait for metric
            responses that have been outdated.
    
    	Reference:
    
    	CFS.40722
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  BOOTP and TFTP Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   22-Feb-1996			Alpha and VAX
    
            Images:
    
    	UCX$BOOTP.EXE			UCX V4.0-10A
    
    	Problem:
    
    	BOOTP ignores requests from clients that have no file
    	in the BOOTP database.
    
            Solution:
    
    	Original code did not handle the case since the BOOTP load
            file was required by UCP.
    
    	Images:
    
    	UCX$TFTP.EXE			UCX V4.0-10A
    
    	Problem:
    
    	TFTP loops when the client NAKs a DATA packet on an RRQ
            transfer.
    
    	Solution:
    
    	The server could not handle incoming NAKs and responded
            with its own NAK, then insisted on looping, which sent
            billions of NAKs.
    
    
    ECO 3 updates:
    --------------
    
    ECO B   11-Sep-1996                     Alpha and VAX
    
            Images:
    
            UCX$TFTP.EXE                    UCX V4.0-10B
    
            Problems:
    
    	TFTP server loops when a client times out.
            TFTP server terminates an RRQ transfer after only a
              few packets.
            TFTP server corrupts data in octet transfers.
            There is possibly an error in handling multiple simultaneous
              transfers, due to a multi-threading bug.
    
            Solution:
    
    	Update TimeOfDay more often.
            Check for end-of-file correctly.
            Check for ASCII vs. OCTET mode correctly.
    
            References:
    
    	CFS.38689, CFS.40018, CFS.40343
    
    
    ECO C   10-Sept-1996                     Alpha and VAX
    
            Images:
    
            UCX$BOOTP.EXE                    UCX V4.0-10C
    
            Problem:
    
            BOOTP responds with the wrong IP address in the case of
            more than one Ethernet system.
    
            Solution:
    
    	The get_iproute() function has been modified to pass the
            network mask of the iptarget to get_iproute().  The subnet
            of the iptarget is isolated by anding iptarget with its
            network mask.  Scan the routing table for a routing record
            that matches subnet.  Check for the default route. If it is
            not a default route, check to see if it is a host route.  If
            it is not a host route, check to see if it is a network
            route.
    
            Reference:
    
            CFS.42642
    
    
    ECO 4 updates:
    --------------
    
    ECO D	23-OCT-1996                     Alpha and VAX
    
    
    	Images:
    
    	UCX$TFTP.EXE                    UCX V4.0-10D
    
    	Problem:
    
    	TFTP Server pads the last 512 byte record with nulls on
            octet-mode transfers when the source file has a short (<512
            bytes) last record.
    
            Solution:
    
    	When the file is opened, read the file size in bytes and
            calculate the EOF byte.  Check for EOF when reading the
            file, and only ask for partial last block.
    
    	Reference:
    
    	CFS.44865
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  NTP Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   23-FEB-1996                     Alpha and VAX
    
            Images:
    
    	UCX$NTPD.EXE			UCX V4.0-10A
    
    	Problem:
    
            A memory leak occurs when the request packet in respond() is
            not freed.  This occurs for client requests (e.g., "ntp
            <host>" from Ultrix).
    
            Solution:
    
    	Free() the request packet before transmitting the response PDU.
    
    	Reference:
    
    	CFS.37655
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  NFS Server Images
    ---------------------------------------------------------------------------
    ECO 2 updates:
    --------------
    
    ECO A   15-May-1996                     Alpha and VAX
    
    	Images:
    
    	UCX$SERVER_NFS.EXE		UCX V4.0-10A
    
    	Problem:
    
    	A customer written application can cause an NFS server to
            fail with an access violation by sending a bogus message to
            the NFS port.
    
            Solution:
    
    	Validation checks on string elements were moved to earlier
            points in the routine.  The RPC protocol version check was
            moved to be the first check.
    
    	Reference:
    
    	CFS.38816
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0  BFS Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   29-Nov-1995			Alpha and VAX
    
            Images:
    
    	UCX$CFS_SHR.EXE			UCX V4.0-10A
    
    	Problem:
    
    	All files with a .DIR extension are listed without the
            extension whether they are directories or not if the
            TYPELESS_DIR option is specified for an export entry.
    
            Solution:
    
    	A check was added for FCH$V_DIRECTORY to ensure that the
            file that ends in .DIR is a directory before removing its
            type.
    
    	Reference:
    
    	CFS.35040
    
    	Problem:
    
    	With the UCX client, after a file has been renamed when a
            new version is created, both files are deleted by mistake.
            The new version is deleted because the client attempts to
            rename NAME.EXT to NAME.EXT;1 as the first step in creating
            the new version, and on a rename the server deletes the
            target name if it already exists.  Another change is needed
            to prevent deleting the old version.
    
    	Solution:
    
    	The rename routine skips checking for a pre-existing target
            name if the operation is in OpenVMS-to-OpenVMS mode.
    
    	Reference:
    
    	CFS.33538
    
    	Problem:
    
    	The server returns a null in the $ADF$ file for an unknown
            or missing version limit.  It should be %X7FFF.  This
            confuses the client into purging when it should not.
    
    	Solution:
    
    	Substitute %X7FFF for null in the VMS_VERLIMIT field of the
            RDCB eXtension.
    
    	Reference:
    
    	CFS.33528
    
    	Problem:
    
    	ACLs and device, volume, and file protections are not
    	supported properly.
    
    	Solution:
    
    	For versions 6.0 and higher of OpenVMS, support was added
            for the volume ORB and the new protection mask formats.
            Support was also added for ACLs using VM variable
            allocations.
    
    	Reference:
    
    	 CFS.22201
    
    
    ECO B   16-Feb-1996                     Alpha and VAX
    
            Images:
    
            UCX$CFS_SHR.EXE			UCX V4.0-10B
    
    	Problem:
    
    	Renaming directory files on file systems that are exported
            with the TYPELESS_DIRECTORIES option requires that the file
            type .DIR be specified on the from and to file names.
    
            Solution:
    
    	The file type .DIR should be enforced (if provided) and
            defaulted to .DIR;1 if absent.
    
    	Reference:
    
    	CFS.37981
    
    
    ECO C   20-Feb-1996                     Alpha and VAX
    
            Images:
    
    	UCX$CFS_SHR.EXE			UCX V4.0-10C
    
    	Problem:
    
    	When the export option NODATA_CONVERSION is selected for a
            file system, STREAMCR files are converted to STREAMLF
            format.
    
    	Solution:
    
    	Change the file system code to return the data in its raw
        	state when NODATA_CONVERSION is set, and convert from
            STREAMCR to STREAMLF in other cases.
    
    	Reference:
    
    	CFS.38128
    
    
    ECO D   24-Mar-1996 			Alpha and VAX
    
    	Images:
    
    	UCX$CFS_SHR.EXE 		V4.0-10D
    
    	Problem:
    
    	When installing ECO A onto a non-V5 system, a protection
            error (NOPRIV) is generated during the device protection
            check.
    
            Solution:
    
    	Change the system version check condition from an AND to
            an OR in the NEQL check.
    
    	Reference:
    
    	CFS.38128
    
    
    ECO 2 updates:
    --------------
    
    ECO E   09-May-1996                     Alpha and VAX
    
            Images:
    
            UCX$CFS_SHR.EXE   		UCX V4.0-10E
    
    	Problem:
    
    	The ECO A code can attempt to move a larger ACL area into
    	a smaller area, causing an ACCVIO or corruption.
    
            Solution:
    
    	Change the size of the move to the exact ACL size, not the
            size of the initially allocated ACL area.
    
    
    ECO F   15-May-1996                     Alpha and VAX
    
            Images:
    
    	UCX$CFS_SHR.EXE             	   UCX V4.0-10F
    
    	Problem:
    
    	ECO E does not take into consideration when the preallocated
    	ACL buffer (512) is smaller than the actual ACL (> 512).
    
            Solution:
    
    	Use the MIN(.RDCB_PTR[RDCB$L_ACL_SIZE],.ACL_LENGTH) when
            moving the ACL.
    
    	Reference:
    
    	Encountered in V4.0 ECO 1 installations.
    
    
    ECO 3 updates:
    --------------
    
    ECO G   2-Jul-1996                     Alpha and VAX
    
            Images:
    
            UCX$CFS_SHR.EXE
    
    	Problem:
    
    	If NODATA_CONVERSION is in effect, the server uses ;
    	instead of . as the version number delimiter.
    
            Solution:
    
    	Add a pair of parentheses to the test for name conversion.
    
    	Reference:
    
    	CFS.42549
    
    
    ECO H   9-Sep-1996                      Alpha and VAX
    
            Images:
    
    	UCX$CFS_SHR.EXE			UCX V4.0-10H
    
    	Problem:
    
    	When the server does data conversion, the apparent size of
            the file changes.  Some clients, including Digital UNIX,
            use their cached unconverted size instead of the more
            recently supplied converted size.  This makes the file
            appear to be missing its tail or have extra bytes at the
            end.
    
            Solution:
    
    	If enabled by the modus_operandi bit ppda$v_fake_mtime,
            deduct a micro-second from mtime of unconverted files.  This
            provokes clients sensitive to unstable file size (such as
            DUNIX) to invalidate the data cache on a subsequent getattr.
            The unconverted size is then replaced with the converted
            size on the reread.
    
    	Reference:
    
    	CFS.37489
    
    
    ECO 4 updates:
    --------------
    
    ECO I   30-OCT-1996                     Alpha and VAX
    
            Images:
    
            UCX$CFS_SHR.EXE     UCX V4.0-10I
    
    	Problem:
    
    	Memory is misallocated on Alpha systems, causing a reduction
            in performance and the possibility of an allocation
            failure.
    
            Solution:
    
    	When allocating RDCBs, be sure to use the RETADR
    	array to determine how many RDCBs to place onto the
    	lookaside list.
    
    	Reference:
    
    	CFS.45010
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 PCNFS Images
    ---------------------------------------------------------------------------
    ECO 2 updates:
    --------------
    
    ECO A   20-MAR-1996                     Alpha and VAX
    
            Images:
    
    	UCX$PCNFSD.EXE			UCX V4.0-10A
    
    	Problem:
    
    	Incorrect brackets prevent authentication from ever
    	working with V1 protocol.
    
            Solution:
    
    	Move misplaced bracket.
    
    	Reference:
    
    	CFS.38231
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 NFS Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   22-Dec-1995			Alpha and VAX
    
            Images:
    
    	UCX$DNFSACP*.EXE		UCX V4.0-10A
    
    	Problem:
    
    	An uninitialized variable can cause a system crash on a
    	certain sequence of operations.  The crash is consistently
            reproducable on a VAX running UCX V3.3, but does not happen
            with the same sequence of operations on UCX V4.0.  The
            uninitialized variable is incorrect on both versions, even
            though it is symptomless on V4.0.
    
    	Solution:
    
    	Initialize the variable.
    
    	Reference:
    
    	CFS.33538
    
    	Problem:
    
    	An untranslatable hostname in a proxy record causes a
    	premature halt to the loading of the proxy database.
    
    	Solution:
    
    	Test the return status from the hostname translation without
            loading the status variable.
    
    	Reference:
    
    	CFS.34570
    
    
    ECO 2 updates:
    --------------
    
    ECO B   25-Apr-1996                     Alpha and VAX
    
            Images:
    
            UCX$DNFSACP*.EXE		UCX V4.0-10B
    
    	Problem:
    
    	An access violation in the access_file routine can happen
            with BACKUP/REPLACE if there are enough files to force
            garbage_collect to take away fifo structures when recovering
            memory.
    
            Solution:
    
    	In File_Create_Version, when superseding a file, the code
            must perform check_access on the file before zeroing the
            file length and overwriting the file.  The
            CHECKED_SUPERSEDE_STATE was added.  PSC added some
            additional tracing with this update.
    
    	Reference:
    
    	CFS.38084
    
    
    ECO D   12-JUN-1996                     Alpha and VAX
    
            Images:
    
            UCX$DNFSACP*.EXE                UCX V4.0-10D
    
            Problem:
    
            A PGFIPLHI system crash can happen in UCX$DNFSACP when
            accessing the argument stack.
    
            Solution:
    
            Preload the addresses of arguments into registers before
            raising IPL.
    
            Reference:
    
            CFS.41981
    
    
    ECO 3 updates:
    --------------
    
    ECO E   24-SEP-1996                     Alpha and VAX
    
            Images:
    
            UCX$DNFSACP.EXE			UCX V4.0-10E
    
    	Problem:
    
    	UCX V4.0/4.1 clients cannot operate with TCPware server.
    
    	Solution:
    
    	The code which prevented interoperation was deleted.
    
    	References:
    
    	CFS.40279, CFS.42359
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 RSH Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    
    ECO A   16-Nov-1995 			Alpha and VAX
    
            Images:
    
    	UCX$RSH.EXE                     UCX V4.0-10A
    
    	Problem:
    
    	Output from RSH is not correct both in leading and ending
            newlines.  The output logfile is missing blank lines and the
            output is prematurely truncated (is not being flushed).
    
            Solution:
    
    	Sense the device type of SYS$OUTPUT and modify the
            write_output() routine to generate the proper output.
            Ensure that the buffer is flushed.
    
    	Problem:
    
    	There is a problem using /SYSERROR in the RSH command.
    
            Solution:
    
    	Alter the order for create/bind/connect sockets in
            setup_network_environment().  When diagnostics/error
            messages need to be sent to a device other than stdout, the
            code needs to execute so that sock_1 gets
            created/bound/connected first.  No new code was added, but
            the order of execution was changed.
    
    	Reference:
    
    	CFS.31263
    
    
    ECO B   24-Jan-1996			Alpha and VAX
    
            Images:
    
    	UCX$RSH.EXE                     UCX V4.0-10B
    
    	Problem:
    
    	Command lines not enclosed in quotes are converted to lower
            case.
    
            Solution:
    
    	Parse the command line appropriately.
    
    	Problem:
    
    	Fragments of the output stream are lost if it contains NULL
            character(s).
    
    	Solution:
    
            Corrected.
    
    
    ECO 2 updates:
    --------------
    ECO C   17-Jun-1996                     Alpha and VAX
    
            Images:
    
            UCX$RSH.EXE			UCX V4.0-10C
    
    	Problems:
    
    	1.  Requests have been made for the ability to enable TCP
                KEEPALIVE similar to FTP and TELNET clients.
            2.  Interactive mode does not work properly.
            3.  The output of RSH/REXEC is slow (300 baud).
            4.  The output of RSH/REXEC generates lines of single
                characters when output is directed to a non-terminal.
    
    	Solutions:
    
    	Corrected.
    
    	References:
    
    	CFS.33696
            CFS.38608
            CFS.40055
            CFS.40513
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 FTP Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    ECO A   05-Feb-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE         UCX V4.0-10B
    
    	Problems:
    
    	1.  An FTP 'get' from an IBM host hangs after the file
                is copied.
    	2.  FTP defaults to FILE.TXT and cannot use mixed-case.
    	3.  Using the /INPUT qualifier causes FTP to hang without
                executing the commands in the specified file.
    	4.  UCX$FTP_RAW_BINARY, UCX$FTP_KEEPALIVE, and UCX$FTP_STREAMLF
                logicals are not being translated correctly.
    	5.  The port number cannot be specified when using FTP in
                ULTRIX mode ( ftp :== $ucx$ftp/ultrix).
            6.  /USER and /INPUT do not work together.
            7.  The put command fails to the HP3000.
            8.  Wild-card processing does not appropriately return
                RMS errors.
            9.  %SYSTEM-F-ACCVIO occurs due to an invalid command (type).
           10.  Files and directories created are always owned by the
                FTP user instead of the owner of the parent directory.
           11.  The FTP server always expects to work on port 21.
           12.  Protection problems occur when starting up anonymous
                FTP.  The read/write log file cannot be accessed once it
                gets created.
           13.  Inconsistent results occur when using search lists and/or
                rooted logical names with various FTP commands (list,
                dir, get, put, cd, pwd, lcd, show default, set default,
                set default/local, and show default/local).
           14.  A file will not accept an APPEND when its filename
                contains mixed-case characters.
           15.  It is inconvenient to set up FTP as a foreign command
                with /ULTRIX simply to be able to specify mixed-case
                filenames without quotes.
           16.  Performing a PUT/GET results in the output file being
                created without the maximum record size (longest record)
                field being set.
           17.  Window size cannot be set beyond 32K.
           18.  There are miscellaneous problems associated with ANONYMOUS
                access.
           19.  Support has been added for record mode transfer.  When
                record structure is specified (STRU RECORD), the code
                issues EOR markings between records instead of the normal
                NVT characters for file structure.
    
    	Solutions:
    
    	Corrected.
    
    
    ECO B   04-Mar-1996  			Alpha and VAX
    
    	Images:
    
    	UCX$FTP.EXE			UCX V4.0-10B
    
    	Problem:
    
    	An RMS error occurs on doing a 'get', when a window
            size of 64K is specified.
    
    	Solution:
    
    	Fixed.
    
    
    ECO 2 updates:
    --------------
    ECO C   21-Mar-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	The PUT command fails when a source directory other than the
            one the user is defaulted to is specified.   A workaround is
            to do a 'cd' first to that directory.
    
            Solution:
    
            The parsing mechanism for remote and local file specs was
            fixed.
    
    
    ECO D   16-Apr-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	Files sometimes become corrupted when a large window size
            is used in VMS-PLUS mode.
    
            Solution:
    
            Setting 'xfr_len' to a multiple of 512 was insured.
    
    	Problem:
    
    	A case problem exists with 'get/fdl' and 'put/fdl' commands.
    
    	Solution:
    
    	A new function 'AllUpperCase' was added to routines
            'send_data' and 'recv_fdl'.  Code that forced lowercase
            conversion ('conv_to_locase()') in routine 'send_data' was
            removed.
    
    	References:
    
    	CFS.39422, CFS.39450
    
    ECO E   01-May-1996                      Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	The FTP client 'sunique' command no longer works.
    
    	Solution:
    
    	The 'version' check in the 'send_data' routine which
            was inadvertantly left out has been restored.
    
    	Reference:
    
    	CFS.40617
    
    
    ECO F   10-May-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	The FTP command procedure quits with an error after
            copying just a few files
    
            Solution:
    
    	A problem in 'send_normal_bin' was fixed, so that a normal
            %RMS-E-EOF does not cause an error, as was the case in doing
            multiple image-mode 'puts' to a non-VMS system.
    
    	Reference:
    
    	CFS.40744
    
    
    ECO G   13-May-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE                    UCX V4.0-10G
    
    	Problem:
    
    	Record mode transfer does not work correctly.
    
    	Solution:
    
    	A problem in 'send_ascii' has been fixed.
    
    	Reference:
    
    	CFS.29927
    
    
    ECO H   16-May-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTP.EXE
    
    	Problem:
    
    	COPY/FTP does not work correctly.
    
            Solution:
    
    	The 'DCL_Copy_Command' was modified so that it no longer
            nullifies the remote filename if it is quoted; also if no
            remote filename is specified, the local filename is used.
    
    	Reference:
    
    	CFS.39938
    
    
    ECO I   19-Jun-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	The put command fails to an HP3000. This is an old problem
            that is occurring again.
    
            Solution:
    
    	A problem was fixed in 'send_data' '&&' was used instead
            of '||' when checking for valid character that might indicate
            a version number. ( *(v+1) >= '0') && ( *(v+1) <= '9')
    
    
    ECO J   24-Jun-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE			UCX V4.0-10J
    
    	Problem:
    
    	A %SYSTEM-F-BADPARAM error message appear during an attempt to
            connect to heavily used system.
    
            Solution:
    
    	'Hookup()' was fixed so that a %SYSTEM-F-BADPARAM error no
            longer occurs  as a result of having a hostname with multiple
            addresses.
    
    
    ECO 3 updates:
    --------------
    ECO K   28-Jun-1996                      Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	COPY/FTP and DIR/FTP do not work correctly.
    
            Solution:
    
            Fixes were added to 'wldcrd_put_process', 'wldcrd_get_process',
            'getreply', 'recv_data', 'send_data', and 'DCL_Copy_Command'.
    
    	References:
    
    	CFS.39938, CFS.42372
    
    
    ECO L   03-Jul-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTP.EXE
    
    	Problem:
    
    	A 'SET DEFAULT/LOCAL' or 'lcd' when using '..' does not work.
    
            Solution:
    
            A check for '..' was added to 'SetLocalDefault'.
    
    	Reference:
    
    	Local testing.
    
    	Problem:
    
    	A client ACCVIO occurs when an 'mdelete' command is done.
    
            Solution:
    
    	A check for the NULL 'file_fab' pointer was added to
            'wldcrd_get_process'.
    
    	Reference:
    
    	Local testing
    
    	Problem:
    
    	There is no way to stop a 'view' command if the /PAGE qualifier
            is not used.
    
            Solution:
    
    	Code was added to trap ^C and ^Y to stop output.
    
    	Reference:
    
    	Local testing
    
    
    ECO M	30-Jul-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTP.EXE
    
    	Problem:
    
    	The local default directory spec gets set to an invalid
            directory spec when doing an 'lcd' to an invalid directory
            or device.
    
    	Solution:
    
    	Before the default directory and device are changed, the
            current values are saved; if an invalid device or directory
            is specified, the saved values are restored.
    
    	Reference:
    
    	CFS.42163
    
    
    ECO N   8-AUG-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTP.EXE
    
    	Problem:
    
    	FTP/INPUT does not work when it is called from a command
            file.
    
            Solution:
    
    	The batch flag has to be disabled when /INPUT is used.
    
    	Reference:
    
    	CFS.42969
    
    
    ECO O	23-Aug-1996                      Alpha and VAX
    
    	Image:
    
    	UCX$FTP.EXE
    
    	Problem:
    
    	The 'Put' command does not work when a remote filename is
            not specified and the local name is a logical.
    
            Solution:
    
    	The FTP$PUT routine was modified to use information from the
            RMS 'nam' block when the remote filename is omitted.
    
    	Reference:
    
    	CFS.43837
    
    ECO P	23-Aug-1996                     Alpha and VAX
    
    	Image:
    
    	UCX$FTP.EXE                     UCX V4.0-10P
    
    	Problem:
    
    	Performing a wildcard 'mget' on files with non-VMS filenames
            fails with an RMS syntax error.
    
    	Solution:
    
    	'Wldcrd_get_process' was modified to use 'ConvertFilenameToVMS'
            on the initial error.
    
    	Reference:
    
    	CFS.43919
    
    
    ---------------------------------------------------------------------------
    Corrections for Digital TCP/IP Services V4.0 FTPD Images
    ---------------------------------------------------------------------------
    ECO 1 updates:
    --------------
    ECO A   15-Feb-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTPC.EXE			UCX V4.0-10A
    
    	Problems:
    
    	An FTP 'get' from an IBM host hangs after file the is
            copied.
    
            FTP defaults to FILE.TXT and cannot use mixed-case characters.
    
            Using the /INPUT qualifier causes FTP to hang without
            executing the commands in the specified file.
    
            UCX$FTP_RAW_BINARY, UCX$FTP_KEEPALIVE, and UCX$FTP_STREAMLF
            logicals are not being translated correctly.
    
            The port number can not be specified when FTP is used in
            ULTRIX mode ( ftp :== $ucx$ftp/ultrix).
    
            The /USER and /INPUT qualifiers do not work together.
    
            The 'put' command fails when it is issued to an HP3000.
    
            Wild-card processing does not return RMS errors when
            it should.
    
            A %SYSTEM-F-ACCVIO occurs due to use of an invalid command
            (type).
    
            Files and directories created are always owned by the
            FTP user instead of the owner of the parent directory.
    
            The FTP server always expects to work on port 21.
    
            Protection problems occur when Anonymous FTP is started.
            The log file cannot be read from or written to once it
            gets created.
    
            Inconsistent results occur when search lists and/or rooted
            logical names are used with various FTP commands (e.g.,
            list, dir, get, put, cd, pwd, lcd, show default, set
            default, set default/local, and show default/local).
    
            An APPEND cannot be performed on a file when its filename
            contains mixed-case characters.
    
            It is inconvenient to set up FTP as a foreign command with
            /ULTRIX simply to be able to specify mixed-case filenames
            without quotes.
    
            Performing a PUT/GET results in the output file being
            created without the maximum record size (longest record)
            field being set.
    
            Window Size cannot be set beyond 32K.
    
            There are miscellaneous problems associated with ANONYMOUS
            access.
    
    	Solutions:
    
    	Corrected
    
      	References:
    
            CFS.36835, CFS.38094, CFS.37556
    
    	Problem:
    
    	The UCX$FTPC process hangs in an RWAST state.
    
    	Solution:
    
    	When a system-wide logical is defined
            ("UCX$FTP_SERVER_DBG"), Resource Wait mode is disabled,
            allowing system services to report any error status in its
            log file.
    
    	Reference:
    
    	CFS.29480
    
    	Problem:
    
    	When an invalid username is specified, FTP issues an
            'Invalid username' message without prompting for
            a password.  If an account is specified that has been
            set with a secondary password, this message is also
            passed on.
    
            Solution:
    
    	Security corrections have been made in 'user()' and 'pass()'
            so that no useful information is given regarding a rejected
            login (such as XXX is unknown' or 'Usernames with two
            passwords not allowed FTP access').
    
    	Problem:
    
    	STRU RECORD (record structure) does not appear to
            work.
    
    	Solution:
    
    	Issue EOR markings in between records instead of the
            normal NVT characters for file structure.
    
    	References:
    
    	CFS.29927, CFS.33514
    
    	Problem:
    
    	The 'cd' command is restricted to using brackets as
            opposed to '..', '<>' or no brackets at all.
    
    	Solution:
    
    	Fixed.
    
    	Reference:
    
    	CFS.38258
    
    
    ECO B   04-Mar-1996                      Alpha and VAX
    
            Images:
    
    	UCX$FTPC.EXE			UCX V4.0-10B
    	UCX$FTPD.EXE			UCX V4.0-10B
    
    	Problem:
    
    	An RMS error occurs on doing a 'get', when specifying a
            window size of 64K.
    
    	Solution:
    
            Fixed.
    
    
    ECO 2 updates:
    --------------
    ECO C   21-Mar-1996                     Alpha and VAX
    
            Images:
    
            UCX$FTPC.EXE
    
    	Problem:
    
    	Anonymous FTP may cause an ACCVIO or cause a server to loop
            under certain conditions.  An anonymous account may be
            allowed to access directories beyond what is defined by the
            UCX$FTP_ANONYMOUS_DIRECTORY, and may, sometimes, not be
            allowed to use those already defined.
    
    	Solution:
    
    	Error checks in CheckAnonymousAccess have been fixed.  A new
            scheme for keeping track of logical name translation has
            been devised and added.
    
            Reference:
    
    	CFS.38258
    
    
    ECO D   22-Mar-1996 			Alpha and VAX
    
            Images:
    
            UCX$FTPC.EXE
    
    	Problem:
    
    	Anonymous FTP appears to hang when the
            UCX$FTP_ANONYMOUS_DIRECTORY system logical is defined to
            contain a full directory listing of a CD drive ( [*...] ).
    
    	Solution:
    
    	The caching algorithm has been corrected so that the code
            no longer scans through all the directories and subdirectories
            on a connect, but simply parses the directory spec when
            needed.  SetUpAnonymousDirectories and CheckAnonymousAccess
            have also been modified.
    
    	Problem:
    
    	Anonymous FTP users are allowed to access 'World' readable
            directories outside of SYS$LOGIN when the system logical
            UCX$FTP_ANONYMOUS_DIRECTORY is defined.
    
    	Solution:
    
    	Made sure that SYS$LOGIN and its "...]" are added to the
            access list regardless of whether or not the system logical
            is defined.
    
    
    ECO E   29-Mar-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTPC.EXE
    
    	Problem:
    
    	The FTP client will hang after the FTP server child process
            ACCVIOs during a long listing.
    
    	Solution:
    
    	In 'SendData', an error message is not being retrieved
            correctly which causes a pointer to be NULL.
    
    	Problem:
    
    	The maximum record size for files is not always being set
            correctly on 'get' operations.
    
    	Solution:
    
    	'Fdlgenerate_in_mem' has been modified to ignore the RMS xab
            field.
    
    	Problem:
    
    	The FTP server child process UCX$FTPC_xx aborts prematurely
            because process quota is exceeded.
    
    	Solution:
    
    	The system logical UCX$FTP_SERVER_DBG is left defined.
            This causes the process to abort instead of going
            into a resource wait, as it normally would have temporarily
            until the resource became available. Removing the check
            for this logical allows for the default action of going
            into RWAST state as needed.
    
    
    ECO F   05-Apr-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTPC.EXE
    
    	Problem:
    
    	The server becomes out of sync with a client when a 'put'
            operation results in an RMS-W-RTB error.  This causes the
            client to hang.
    
    	Solution:
    
    	The hang occurs because the server is waiting for the RMS
            operation to finish. The 'rms_posted' flag in the
            'resc_ascii' routine needs to be reset.
    
    	Reference:
    
    	CFS.39833
    
    
    ECO G   12-Apr-1996                     Alpha and VAX
    
            Images:
    
    	UCX$FTPC.EXE
    
    	Problem:
    
    	Files sometimes become