Jump to page titleUNITED STATES
hp.com home products and services support and drivers solutions how to buy
» contact hp


more options
 
hp.com home
End of Jump to page title
HP Services Software Patches
Jump to content


» software & drivers
» ask Compaq
» reference library
» forums & communities
» support tools
» warranty information
» contact support
» parts
» give us feedback

patches by topic
» DOS
» OpenVMS
» Security
» Tru64 Unix
» Ultrix 32
» Windows
» Windows NT

associated links
» what's new
» contract access
» browse patch tree
» search patch tree
» join mailing list

connection tools
» nameserver lookup
» traceroute
» ping


Find Support Information and Customer Communities for Presario.
Content starts here
HP Services Software Patches - dec-axpvms-ucxeco_a_40_5-v0500--4
 
NOTE:  An OpenVMS saveset or PCSI installation file is stored
       on the Internet in a self-expanding compressed file.
       The name of the compressed file will be kit_name-dcx_vaxexe
       for OpenVMS VAX or kit_name-dcx_axpexe for OpenVMS Alpha.
 
       Once the file is copied to your system, it can be expanded
       by typing RUN compressed_file.  The resultant file will
       be the OpenVMS saveset or PCSI installation file which
       can be used to install the ECO.
 
Copyright (c) Digital Equipment Corporation 1997.  All rights reserved.

PRODUCT:    DIGITAL TCP/IP Services V4.0 for OpenVMS Alpha

OP/SYS:     OpenVMS Alpha

SOURCE:     Digital Equipment Corporation

ECO INFORMATION:

     ECO Kit Name:  UCXALP7_E5040 (DEC-AXPVMS-UCXECO_A_40_5-V0500--4)
     ECO Kits Superseded by This ECO Kit:  None
     ECO Kit Approximate Size:  19,904 Blocks
     Kit Applies To:  Digital TCP/IP Services for OpenVMS Alpha V4.0
     System/Cluster Reboot Necessary:  Yes
     Installation Rating:  None 

     NOTE:  In order to receive the full fixes listed in this kit,
            the following remedial kits also need to be installed:

                 None


ECO KIT SUMMARY:

An ECO kit exists for Digital TCP/IP Services for OpenVMS Alpha
on V7.0 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 INET, 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.  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.

        References:

        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
        " 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 corrupted when a large window size
        is used in VMS-PLUS mode.
       
	Solution:

	Insure that 'xfr_len' is being set to a multiple of 512.
          

ECO H   29-Apr-1996                     Alpha and VAX

        Images:

        UCX$FTPC.EXE

	Problem:

	The 'mget' operations from a V3.3/4.0 server will result in
        a client's getting filenames which include a full VMS
        directory path.

        Solution:

	The 'nlist' code has been  fixed so that it prefaces the
        full directory path when the default working directory is a
        rooted logical (like SYS$HELP).
       
	Reference:

	CFS.40440


ECO I   01-May-1996                      Alpha and VAX

        Images:

        UCX$FTPC.EXE

	Problem:

	FTP server no longer recognizes the UCX$FTP_NO_VERSION
        system logical.

        Solution:

	Restore the 'noversion' check in the 'nlist' routine which
        was inadvertantly omitted when that routine was re-written.
               
	Reference:

        CFS.40617


ECO 3 updates:
--------------
ECO J   15-Jul-1996                     Alpha and VAX

        Images:

        UCX$FTPC.EXE

	Problem:

	The FTP 'dir' command fails to display any files if there
        happens to be a protected file in the same directory.
 
	Solution:

	The 'list()' function has been modified to check the iosb
        for  a SS$_NOPRIV error when QIO done to the file.

	Reference:

	CFS.42791, CFS.42838, CFS.42230
	
	Problem:

	SYS$DISK gets redefined in the wrong table when doing
        a 'cd' or 'SET DEF' command.

        Solution:                  

	'Cwd' has been modified so that the SYS$DISK redefinition
        happens in the LNM$PROCESS table instead of LNM$DCL_LOGICAL.

	Reference:

	CFS.43063


ECO K 	24-Jul-1996                     Alpha and VAX
                   
	Images:

	UCX$FTPD.EXE

	Problem:

	Many channels to an anonymous logfile remain open even
        after all of the server child processes go away.

        Solution:                  

	Make sure that the logfile only gets opened the first
        time around.

	Reference:

	CFS.43581


ECO L	24-Aug-1996                     Alpha and VAX
                  
	Images:

	UCX$FTPC.EXE                 UCX V4.0-10L

	Problem:

	When setting the logical UCX$FTP_RAW_BINARY, a 'get' results
        in a corrupted file with what appears to be FDL information
        at the beginning of the file.

        Solution:

	An editing error in 'send_vms_plus_bin' has been fixed.

	Reference:

	CFS.43850

	Problem:

	A 'dir' command fails when a remote node is specified using
        DECnet syntax (FTP> dir node::[dir]).

        Solution:
                 
	The 'list' routine has been modified to use RMS fields for
        the nodename and for setting the 'RemoteDecnetNode' flag.

	Reference:

	CFS.43772


ECO M	04-OCT-1996                     Alpha and VAX

        Images:

        UCX$FTPC.EXE		UCX V4.0-10M

	Problem:

	Memory creep occurs when ls and dir commands are issued.

        Repeated FTP ls and dir commands use virtual memory and
        do not return it until the FTP connection is broken and
        the server child process exits.

	Solution:

	Insure that LIB$FREE_VM is called with the same memory
        address as LIB$GET_VM and remove some calls to malloc() and 
        alloc() that lead to large memory creep. The following
        memory creep problems have also been fixed.  

        1.  In the CleanUp() routine, LIB$FREE_VM() is being invoked 
            with the address of the address of the buffer and not 
            the address of the buffer. This causes LIB$FREE_VM() to
            fail because LIB$FREE_VM() status is never checked.

	2.  ConvertToSpaces() is allocating 80 bytes every time it
            is called, and when a user issues a "dir" command it is
            called a lot.  ConvertToSpaces() has been updated to use
            static memory and the logic has been updated to be more 
            straight forward and efficient.  GetProtection() has
            also been modified because it allocates 50 bytes each
            time it is invoked.  Memory cleanup in is also done in
            the GetLocalDefault() routine.

        NOTE:

	In the future all calls to malloc() and calloc() should be
        removed.  There is still memory creep in this demon child
        program but this kit only includes fixes for the biggest
        problems and the ones a user could see the most. 

	Reference:

	CFS.45158

         
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 LPD Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A   15-Feb-1996			Alpha and VAX

        Images:

        UCX$LPD_SHR.EXE         UCX V4.0-10B
        UCX$LPD_SMB.EXE         UCX V4.0-10B
        UCX$LPD_RCV.EXE         UCX V4.0-10B
        UCX$LPQ.EXE             UCX V4.0-10B
        UCX$LPRM.EXE            UCX V4.0-10B
        UCX$LPRSETUP.EXE        UCX V4.0-10B
        UCX$TELNETSYM.EXE       UCX V4.0-10B

        Problem:

	When running on a system with Word Perfect queues that have
        not been de-integrated, the symbiont has problems.

        Solution:

	Spot the problem and signal in the log and on the OPCOM that
        Word Perfect queues must be de-integrated for UCX LPD to
        run.

        Reference:

        CFS.33189

	Problem:

	With inbound LPD jobs, the /DELETE that the LPD symbiont
        uses when it submits the job to the target print queue
        causes problems if that print queue expects the file not to
        be printed with the /DELETE qualifier.  For example, one
        system had a custom symbiont running in the target queue
        that passed the file on to another queue.

        Solution:

        A new "nd" flag field has been added to printcap.  If the 
        "nd" field is present for a printcap entry, UCX$LPD_QUEUE
        will submit the job without the /DELETE qualifier.  The "nd"
        field is a boolean field (like the "pa" field) in that it
        has no value.  If inbound jobs for a particular printcap
        entry should be submitted as /NODELETE, use the "nd" field
        as in this example:

        BOGUS_P_ND|bogus_p_nd:\
                :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND.LOG:\
                :lp=SOME_PRINTER:\
                :nd:\
                :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND:

        If inbound jobs for a particular printcap entry should be
        submitted the "normal" way (i.e., /DELETE), there should be
        no "nd" field in the printcap entry.  For example:

        BOGUS_P_ND|bogus_p_nd:\
                :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND.LOG:\
                :lp=SOME_PRINTER:\
                :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_ND:

        LPRSETUP will create by default a printcap entry with no
        "nd" field.  (The default is /DELETE.)

        Problem:

	No support exists for inbound LPD jobs with 'v' (Raster
        file) control card.

        Solution:

	Handle it like an 'x' (i.e., binary file).

        Reference:

	CFS.35679

	Problem:

	One PC LPD client implementation "probes" the LPD server
        when the PC user configures an LPD client printer to validate
        the remote printer.  When the printer is configured, the LPD
        client connects to the LPD server and issues a "print a
        job" command to the server for the LPD  queue.

        If the server replies successfully, the LPD client sends an
        "abort job" command and waits for the ACK before releasing
        the link.  The UCX LPD server is not ACKing the "abort job"
        command.  It is simply disconnecting the link.  This is
        causing the PC LPD client to fail the LPD configuration for
        the user.

        Solution:

	Handle the abort job like a NOOP.  ACK it, but keep the link
        up and wait for other side to disconnect or send another
        command.

        Reference:

	CFS.36109


ECO 2 updates:
--------------
ECO B   01-APR-1996                     Alpha and VAX

        Images:

        UCX$TELNETSYM.EXE		UCX V4.0-10B

	Problem:

	The temporary file created by UCX$TELNETSYM.EXE is not 
        deleted after it is used to relay a job to an LPD queue.  

        Solution:

	Create the relay Q temp file with the file owner UIC
        matching the UIC of the user who started the print job.

        References:

	CFS.36887, CFS.39480


ECO 3 updates:
--------------
ECO C   10-AUG-1996                     Alpha and VAX

        Images:

        UCX$TELNETSYM.EXE

        Problems:

	1.  When creating a temporary relay file with a NULL byte
            somewhere in one of the data records, every thing after
            the NULL byte in the record is being ignored.  The NULL
            byte is being  interpreted by fprintf as EOR.  By
            changing from fprintf to fwrite a specific buffer length
            can be written to the temporary file.

	2.  A problem has been encountered where all threads being
            handled by TNS will hang when one thread is waiting
            for a connection to a remote printer.  When an attempt
            is made to connect to the remote printer and the
            connection cannot be established (e.g., the printer is
            turned off), all the queues being handled by that TNS
            process hang.  The connection that was previously made
            with a sync QIOW is now made with an async QIO with an
            AST.

        Solution:

	1.  Use fwrite() in place of fprintf() when writing to the
            relay temporary file.
         
	2.  In open_socket issue non-blocking QIO specifying AST 
            open_socket_ast().
         
	References:

	1.  CFS.41468
	2.  CFS.42955


ECO D   15-AUG-1996                     Alpha and VAX

        Images:

	UCX$LPD_SHR.EXE			UCX V4.0-10D

	Problem:

        If the spool area on remote host gets filled up (even
        temporarily) and the remote host disconnects the link, LPD
        fails to delete and close properly the temporary files in
        the outgoing queue spool directory thus causing "disk space
        leak".

        Solution:

	Include a short pause between file closure and retry initiation
        in order to synchronize the process.

        Reference:

	CFS.43361


ECO E   24-SEP-1996                     Alpha and VAX

        Images:

	UCX$LPD_SHR.EXE			UCX 4.0-10E

	Problem:

	A general problem with LPD client printing of large jobs
        exists. It consumes a lot of time in case of large files.	      

	Solution:

	Change the order of handling.  First read the file and then
        connect to the LPD server (when file size is available).

        Reference:

	CFS.44328

	Images:

	UCX$LPD_SHR.EXE			UCX V4.0-10E

	Problem:

	When printing to a remote LPD queue with the /SETUP
        qualifier, multiple line setup is all sent as a single line
        with no line separators.

        Solution:

	After every setup module line read from the device 
	control library and add LF to the stream.

	Reference:

	CFS.36714


ECO 4 updates:
--------------
ECO F  23-OCT-1996

        Images:

        UCX$LPD_SMB.EXE

        Problem:

	The "unexpected symbiont termination" message is 
	displayed when a symbiont exits before the queue 
	manager has processed the stop/queue acknowledgment 
	for every queue managed by the symbiont.
	
	Solution:

	Include a pause before the exit from the symbiont.

	Reference:

	CFS.43436


ECO G  29-OCT-1996        
        
	Images:

        UCX$LPD_SHR.EXE


        Problem:

        When a 0 block job is submitted in an outbound 
	bound LPD queue (ACCHPL5S), the above error occurs
	and the LPD retry mechanism requeues the job.

	Solution:

        Show the error but do not retry the job.

	Reference:

	CFS.45415

        Images:

        UCX$LPD_SHR.EXE

        Problem:

	LPD printing causes leftover and reused DFA and CFA files.
	
	Solution:

        Always create a new version of the DFA/CFA file.
        
	Reference:

	CFS.44820

	Image:

	UCX$LPD_SHR.EXE

	Problem:

        A job stays forever in the "processing" state in  the
        UCX$LPD_QUEUE, so successive jobs for other printers can
        not be printed.

	Solution:

	An approximated simulation shows that the symbiont 
	is trying to read data from the socket using recv(),
	but if no data is available at the socket, the receive 
	call waits for data to arrive (may wait forever).
	To solve the problem a select() is used to check if the 
	socket is ready	to be read. The timeout value is taken 
	from the logical UCX$LPD_RETRY_INTERVAL.

	Reference:

	CFS.43801


ECO H  21-NOV-1996                     Alpha and VAX

        Images:

	UCX$LPD_SHR.EXE			UCX V4.0-10H
		  
	Problem:

	A print job sent from a UNIX machine through an OpenVMS
        machine to another a UNIX machine will not print.  

	Solution:

	The receive job subcommand 'receive data file' is
        constructed by using the file name that is the result of
        FIND_FILE on the spool directory.  The file name is thus a
        valid OpenVMS name which does not match the file name that is
        specified in the control file.  The solution is to open the
        control file, extract the parameter of the 'H' card and use
        it to construct the file name.

	Reference:	

	CFS.40779

	Problem:

        Requests have been made for the ability to print PCL 
        files without adding the "LF" after the setup module.

	Solution:

        Support has been added for the use of the qualifier /PASSALL
        with the PRINT command to suppress the addition of "LF" to
        the setup module.

        Reference:

        CFS.45573


ECO I  8-JAN-1997                     Alpha and VAX

        Images:

        UCX$LPD_SHR.EXE            	UCX V4.0-10I

	Problem:
        
        Unexpected timeouts occur on queues assigned to regular
        printers. The timeouts cause the current job to be aborted 
        and put on holding for retry later.

        Solution:

	The function noresponse() has been modified so that 
        select() (and thus the timeouts) will be applied only when
        the queue is UCX$LPD_QUEUE.

        References:

        CFS.43801, CFS 45791


ECO J  24-JAN-1997                     Alpha and VAX

        Images:

        UCX$TELNETSYM.EXE            UCX V4.0-10J

	Problem:

        The first job goes through fine but the second one hangs 
        (The queue stalls and stays that way).  This only happens if
        the UCX$TELNETSYM_IDLE_TIMEOUT logical is defined. (It was
        introduced in ECO 3.)

        Solution:

        Fixed.

        References:

        CFS.47807, CFS.47987

---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 SMTP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A   08-Nov-1995			Alpha and VAX

	Images:

        UCX$SMTP_MAILSHR.EXE            UCX V4.0-10A
        UCX$SMTP_RECEIVER.EXE           UCX V4.0-10A
        UCX$SMTP_SYMBIONT.EXE           UCX V4.0-10A
        UCX$SMTP_PARSESHR_TV.EXE        UCX V4.0-10A
        UCX$UUENCODE.EXE                UCX V4.0-10A
        UCX$UUDECODE.EXE                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:

	Relink.

        *** 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$SMTP_MAILSHR.EXE		UCX V4.0-10B
	UCX$SMTP_RECEIVER.EXE		UCX V4.0-10B
	UCX$SMTP_SYMBIONT.EXE		UCX V4.0-10B
	UCX$SMTP_PARSESHR_TV.EXE	UCX V4.0-10B
	UCX$UUENCODE.EXE		UCX V4.0-10B
	UCX$UUDECODE.EXE		UCX V4.0-10B

	Problem:

        ANAL MAIL will not find the files for any of the queue
        entries and  will delete the queue entries one by one. 
        Later, on the pass where it is looking for orphaned control
        files, it would find all the files that belonged to the
        queue entries that were just deleted and submit them.  If it
        had not deleted the jobs, it would not need to requeue them. 
        The problem happened only where user disks were defined as
        concealed logical names.

	Solution:

	Corrected.

	References:

	CFS.34311, CFS.33772

	Problem:

	Incorrect data appears in one particular message in the log.

	Solution:

	Corrected.

	References:

	CFS.34311, CFS.33772

	Problem:

	ANAL MAIL/DELETE will select some files to delete and some
        not to delete, regardless of the value of the BEFORE=time. 
        In some cases, files created almost at the same time are
        processed while one is deleted and another is not deleted. 
        The creation dates on the files are both well after the
        time in the /BEFORE.

	Solution:

        The OpenVMS date comparison routine has been corrected.

	References:

	CFS.34311, CFS.33772

	Problem:

	Sometimes ANAL MAIL will submit a new entry for every entry
        that is already in the queue resulting in two entries for
        each file. 

	Solution:

	Clean up the GETQUIW system service context at the beginning
        of each ANAL MAIL command with a call to GETQUIW with a
        CANCEL_OPERATION function code.

	Problem:

        When ANAL MAIL runs on a system with much SMTP activity, it
        often incorrectly performs files/queue entries created when
        the ANAL MAIL command is processing.  Sometimes it will
        mistakenly think that it has an orphaned control file (for
        example, a control file with no matching queue entry) and
        will submit the control file to the queue resulting in the
        same control file being submitted to the queue twice.  Other
        times it will think it found a queue entry with no
        corresponding control file and will delete the queue entry
        when, in fact, a corresponding control file actually exists. 
        This results in an orphaned control file.

	Solution:

	Corrected.

	Reference:

	CFS.34311

	Problem:

        When ANAL MAIL deletes a control file, the corresponding
        _TEXT file (if any) is not deleted. 

	Solution:

	Corrected.

	Reference:

	CFS.34311

	Problem:

        If a file with the extension .UCX_nodename (where "nodename"
        is the system's SCSNODENAME) appears in a users mail
        directory, ANAL MAIL  takes it be a control file even if it
        is not.

	Solution:

        A search string that uses trap for
        %%%%%%%%%%%%%%_*.UCX_nodename rather than just
        *.UCX_nodename has been created. 

	Reference:

	CFS.34311

	Problem:

	Double spacing of lines in SMTP logs occurs.

	Solution:

	Corrected.

	Problem:

	When running on a system with Word Perfect queues that have 
        not been de-integrated, the symbiont has problems.

	Solution:

	Spot the problem and signal in the log and on the OPCOM that 
        Word Perfect queues must be de-integrated for UCX SMTP to run.

	Reference:

	CFS.34311

	Problem:

        When bouncing a mail because a mail loop is detected (for 
        example, maximum hop count is exceeded), the symbiont leaves 
        the control file for the mail being bounced as a stray.

	Solution:

	Corrected.

	Reference:

	CFS.32922

	Problem:

        A bounced mail message coming into a UCX SMTP system (for
        example, a local user sends mail to a remote system that
        cannot deliver it and bounces it back) is sometimes
        undeliverable because the SMTP symbiont thinks it has too
        many RFC Received: headers.  The symbiont signals that the
        maximum number of hops is exceeded.  A routine in receiver
        to parse out headers of the incoming mail sometimes mistakes 
        the Received: RFC headers from the "Text of unsent message"
        section of the incoming bounced mail for RFC headers of the
        bounced mail itself.  The problem occurs if the sum of the
        headers for the incoming bounced mail and those that appear
        in the text of the bounced mail exceed the maximum hop
        count.

	Solution:

	Corrected The receiver has been corrected so that it will
        not miss the blank line at the end of the RFC headers of the
        mail and start looking into the text of the mail for
        Received headers.

	Reference:

	CFS.32922

	Problem:

        Diagnosing receiver and symbiont problems that occur
        periodically but are not reproducable at will requires that
        full diagnostics are turned off for the component being
        looked at (receiver or symbiont).  This causes the log
        file(s) to grow large and slows down everything with all the
        extra time spent writing to the log files.

	Solution:

        The new "snapshot" logging capability for the receiver and
        symbiont allows the system to run with full diagnostics
        turned on but only write the diagnostics to the log file if
        an error is signaled.  This saves disk space and allows the
        receiver and/or symbiont to run at a normal speed. As each
        line of diagnostic text is generated, it is saved in an 
        internal "snapshot" buffer of a size specified by a snapshot
        logical rather than to the disk.  The buffer is "circular"
        in that once it fills up, new lines of text simply start to
        overwrite the old data already there.  This provides an
        up-to-date snapshot of the last lines of diagnostic text.

        There are two logicals for turning this feature on.  One for
        the receiver, UCX$SMTP_SYMB_SNAPSHOT_BLOCKS, and one for the
        symbiont, UCX$SMTP_RECV_SNAPSHOT_BLOCKS.  The value of these
        logicals is the size of the snapshot buffer in OpenVMS
        blocks (1 block being 512 bytes).  When turning this feature
        on, definition of the other SMTP diagnostic logicals that
        tell UCX SMTP what types of logging are necessary are
        required.  (For example, for the symbiont, it is still
        necessary to define the UCX$SMTP_LOG_LEVEL to 5.)  Two
        examples of setting up symbiont and receiver snapshot
        logicals follow.

	This example sets the log level to 5 and turns on snapshot
        logging for the SMTP symbiont with a snapshot buffer of 200
        blocks.

	   $ DEFINE/SYSTEM UCX$SMTP_LOG_LEVEL 5
	   $ DEFINE/SYSTEM UCX$SMTP_SYMB_SNAPSHOT_BLOCKS 200

	This example sets all the receiver diagnostics on and turns
        on snapshot logging for the receiver with a snapshot buffer
        of 200  blocks:

	   $ DEFINE/SYSTEM UCX$SMTP_RECV_DEBUG 1
	   $ DEFINE/SYSTEM UCX$SMTP_RECV_TRACE 1
	   $ DEFINE/SYSTEM UCX$SMTP_RECV_SNAPSHOT_BLOCKS 200

	Problem:

	If bounced mail comes into the system and cannot be
        delivered, it is left as a stray control file.

	Solution:

	Send the bounced mail to the local postmaster account, 
        UCX_SMTP.

	Reference:

	CFS.32922

	Problem:

	Bounced mail generated by the UCX SMTP symbiont does not
        have a To: RFC header.

	Solution:

	Corrected.

	Problem:

	If the symbiont cannot deliver a mail and cannot bounce it, it
	leaves the bounced mail control file as a stray control file.

	Solution:

	If the software can neither deliver nor bounce mail, then
        deliver the  mail to the local postmaster account -
        UCX_SMTP.  Only if the mail cannot be delivered to the local
        postmaster account is a stray control file left.

	Reference:

	CFS.32922

	Problem:

        When bouncing mail because the software has not been able to
        send it  and has requeued it repeatedly and can no longer
        requeue it because  the SMTP configuration maximum interval
        for the mail has expired, the  symbiont leaves the control
        file for the mail being bounced as a stray.

	Solution:

	Corrected.

	Reference:

	CFS.32922

	Problem:

        If the symbiont encounters a network error sending an
        outbound mail after it sends the MAIL FROM: command but
        before it sends the RCPT TO: command, all remaining outbound
        mail will cause an access violation in the symbiont and will
        fail.

	Solution:

	Corrected.

	Reference:

	CFS.32922

	Problem:

        The UCX SMTP queue watcher program, UCX$RESTART_SMTPQ.COM,
        does not support multiple execution queue setups.

	Solution:

        UCX$RESTART_SMTPQ.COM now supports multiple execution queue
        setups up to nine execution queues (i.e., UCX SET CONFIG
        /QUEUE=9.).

	Reference:

	CFS.34311

	Problem:

	The symbiont code has mechanisms to find memory leaks but no
        mechanism to find event flag leaks.

	Solution:

	The symbiont has diagnostics to dump the number of spare
        event flags (as returned by LIB$GET_EF) at certain key
        points in the code to help find event flag leaks. To turn
        them on, enter the following:

	   $ DEFINE/SYSTEM UCX$SMTP_LOG_EFS 1
	   $ UCX STOP MAIL
	   $ UCX START MAIL

	Note:  Numerous users were reporting an insufficient event
        flags (INSEF) error being signaled in their symbiont logs
        after which no inbound mail could be delivered.  This was
        the reason for creating the new event flag leak diagnostics. 
        The problem was caused because the users on these systems
        had their mail forwarded to PCSA% addresses and there is an
        event flag leak in the PCSA MAIL$PROTOCOL code.  The problem
        is *NOT* a UCX problem.  The problem  has been reported to
        the engineering team responsible for the PCSA MAIL$PROTOCOL
        code.

	Problem:

        Users with 8-bit ASCII characters in their username see the
        characters changed by UCX SMTP before they get sent out to
        their final destination. The UCX SMTP code sets the high
        order bit to 0 even if the SMTP CONFIG /OPTION=EIGHT is set.

	Solution:

        UCX SMTP will not truncate 8-bit ASCII characters in the personal
        name if the SMTP CONFIG/OPTION=EIGHT is set.

	Problem:

	UCX SMTP does not work correctly on multi-homed hosts.

	Solution:

        This problem has been corrected.  Bind to INADDR_ANY rather 
        than to a particular one of the local addresses that gets 
        into the hostent structure for the local host.

	Reference:

	Numerous reports of problems


ECO 2 updates:
--------------

ECO C   19-Jun-1996                     Alpha and VAX

        Images:

	UCX$SMTP_MAILSHR.EXE            UCX V4.0-10C
        UCX$SMTP_RECEIVER.EXE           UCX V4.0-10C
        UCX$SMTP_SYMBIONT.EXE           UCX V4.0-10C
        UCX$SMTP_PARSESHR_TV.EXE        UCX V4.0-10C
        UCX$UUENCODE.EXE                UCX V4.0-10C
        UCX$UUDECODE.EXE                UCX V4.0-10C

        Problem:

	Sometimes local addresses in SMTP distribution files are not
        recognized as such.

        Solution:

        Corrected.

        Problem:

	On clusters, SMTP distribution files must be duplicated in each
        SYS$SPECIFIC:[UCX_SMTP] directory. 

        Solution:

	UCX SMTP now supports a new system logical for cluster
        common storage - UCX$SMTP_COMMON.  This logical may be
        defined by the system manager before UCX SMTP startup to
        point to a single directory or a directory search list.  If
        it is defined, UCX SMTP looks for its .DIS files in the
        directory or directories to which it points.  To get all of
        the UCX SMTP cluster nodes to look in the same place, define
        the logical to point to a directory visible to all the
        nodes.  It is the system manager's responsibility to define
        this logical and to create the directory and move the .DIS
        files there.

        The UCX$SMTP_COMMON logical replaces the
        UCX$SMTP_DIS_DIRECTORY logical.

        If UCX$SMTP_COMMON is not defined, UCX SMTP looks for .DIS
        files in SYS$SPECIFIC:[UCX_SMTP].

        This logical may be a search list. The UCX SMTP should check
        the the clusterwide directory first and
        SYS$SPECIFIC:[UCX_SMTP] second. For example:

           $ DEFINE/SYSTEM UCX$SMTP_COMMON WORKDISK:[SMTP_DIS], -
               SYS$SPECIFIC:[UCX_SMTP]

        Remember, UCX SMTP .DIS files must be world readable or owned by
        UCX_SMTP.

        Reference:

        CFS.37284

        Problem:

	The conventional exclamation point to start a comment is not 
	supported in SMTP distribution files.

        Solution:

	An exclamation point (!) can now be used for a comment in an SMTP 
	distribution file with the restriction that it must be the first 
	character of the line.  No leading white space is allowed.

	Problem:

	UCX SMTP has a rigid method of deciding that a domain is
        local. There is no way to configure UCX SMTP to recognize as
        local any domain from a list of domains specified by the
        system manager.

        Solution:

	The new local alias feature allows the system manager to
        define a list of domains that UCX SMTP interprets as local. 
        If it sees mail to any one of the domains specified as local
        aliases, it delivers the mail on the local system via
        callable OpenVMS mail rather than forwarding it on to
        another system via the SMTP protocol.

        To define the local aliases, simply create a file called
        UCX$SMTP_LOCAL_ALIASES.TXT.  The file can either be placed
        in the UCX$SMTP_COMMON directory or, if UCX$SMTP_COMMON is
        not defined,  the file can be placed in
        SYS$SPECIFIC:[UCX_SMTP].  Each line in the file is one
        domain that UCX SMTP should recognize as local.  For
        example:

           $ SET DEF UCX$SMTP_COMMON
           $ CREATE UCX$SMTP_LOCAL_ALIASES.TXT
           !
           ! This is a comment.
           alias1.mydomain.edu
           alias2.mydomain.edu
           alias3.mydomain.edu
           
           $ @SYS$MANAGER:UCX$SMTP_SHUTDOWN.COM
           $ @SYS$MANAGER:UCX$SMTP_STARTUP.COM

        The above example tells UCX SMTP to recognize
        "alias1.mydomain.com", "alias2.mydomain.com" and
        "alias3.mydomain.com" as local.

        The entries in the local alias file must adhere to the
        following syntax rules:

           -  There may be only one alias entry per line.

           -  Comments follow the same rules of SMTP .DIS files.  The
              comment character (1) must appear in the first column.

           -  UCX SMTP does not append the local domain name to an
              entry that it reads without a period (.) in it.  For
              example, if your local domain is "mydomain.com" and
              you want "alias1.mydomain.com" to be recognized as
              local, "alias1.mydomain.com" must be entered into the 
              local alias file.  Entering "alias1" is not
              sufficient.

        Other miscellaneous notes:

           -  When UCX SMTP compares entries in the local alias file
              with the domain of an address, it does so case
              insensitively.  For example, if the local alias file
              contains "alias1.mydomain.edu" and mail is sent to
              "ALIAS1.MYDOMAIN.EDU", a match occurs and the mail is
              considered local.

           -  The file protection must be W:RE.

           -  There is a maximum of 255 aliases each of which can be
              a maximum of 64 characters long.

           -  After changing the local alias file, UCX SMTP must be
              stopped and restarted for the changes to take effect.

        References:

	Numerous complaints

	Problem:

	Mail with a Return-Path with a quoted local part that needs
        to be rejected is sometimes sent to the local postmaster
        when it should be sent to the original sender.

        Solution:

	Corrected.

        Problem:

	If a user forwards mail via SMTP to themselves on the local
        host, the symbiont loops, crashes, and creates a corrupt
        control file.

        Solution:

	Detect this situation as a mail loop and reject the mail.

        Problem:        

	If the MX lookup for the alternate gateway is not resolvable
        when the SMTP symbiont process is started (i.e., when UCX
        START MAIL is done) one must wait until it is resolvable and
        stop and restart the symbiont to send mail through the
        alternate gateway.

        Solution:

	If an alternate gateway has been configured and the MX
        lookup for the gateway is not resolvable at symbiont startup
        time, the symbiont tries the MX lookup for the alternate
        gateway every time it sends outbound mail.

	Problem:

	If the MX records for the alternate gateway change, the
        symbiont process must be stopped and restarted for the
        changes to take effect.

        Solution:

	The symbiont refreshes the MX records for the alternate
        gateway every 24 hours.

	Problem:

        The SMTP receiver sometimes leaves stray control files of 0
        blocks in the SMTP spooler directory if the SMTP dialog is
        aborted at certain points.

        Solution:

        Corrected.


ECO 4 updates:
--------------

ECO D   27-Nov-1996                     Alpha and VAX

        Images:

        UCX$SMTP_MAILSHR.EXE            UCX V4.0-10D
        UCX$SMTP_RECEIVER.EXE           UCX V4.0-10D
        UCX$SMTP_SYMBIONT.EXE           UCX V4.0-10D
        UCX$SMTP_PARSESHR.EXE (VAX)     UCX V4.0-10D
        UCX$SMTP_PARSESHR_TV.EXE (AXP)  UCX V4.0-10D
        UCX$UUENCODE.EXE                UCX V4.0-10D
        UCX$UUDECODE.EXE                UCX V4.0-10D

        Problem:

        Symbiont processes sometimes leaves stray BG devices

        Solution:

        Fixed.

        Reference:

        CFS.42659

        Problem:

        The SMTP receiver ACCVIOs if mail comes from a host that 
	has more than 20 IP addresses.

        Solution:

        Increase the size of the buffer and add bounds checking.

        Problem:

        Inbound mail from SMTP that is being delivered to users with 
        their mail forwarded to another foreign transport  (e.g.,
        xyz%) will get bounced.

        Solution:

        Fixed.

        Reference:

	Internal report

	Problem:

        An ACCVIO occurs during delivery of local mail on certain
        later versions of OpenVMS.

        Solution:

        Fixed.


---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 RCP Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------

ECO A   19-Feb-1996                     Alpha and VAX

        Images:

	UCX$RCP.EXE                     UCX V4.0-10A
       
	Problem:

	Occasionally (or consistently from some hosts), RCP copies
        files incompletely.  In most of these instances, the 
        'NONAME-E-MESSAGE' error message is displayed.

        Solution:

	Perform 'blocked' reads on the server side so that the
        receive does not complete prematurely.  Also, enhance
        performance by increasing the buffer size from 512 to 16384. 
        As a result, the speed of the copy increased greatly.
         
	Reference:

	CFS.37432


ECO B   26-Feb-1996			Alpha and VAX

	Images:

	UCX$RCP.EXE			UCX V4.0-10B

	Problem:

	When a remote user runs out of diskquota, invocation of RCP
        to copy a file to that remote host causes the system to hang
        or give ambiguous messages.

        Solution:

	Delay sending an acknowledgment until the server can
        create/open the file for write operations. In cases where
        failures occur because of disk quota limitations, unusual
        errors can occur, especially when a request comes from
        non-UCX clients.  If a fatal error occurs under those
        conditions, exit without continuing with execution.
                 
	Reference:

	CFS.37432


ECO C   29-Feb-1996 			 Alpha and VAX
                                          
	Images:

	UCX$RCP.EXE                     UCX V4.0-10C
         
	Problem:

	More problems are created when a remote user runs out of
        diskquota and the RCP connection is not terminated.

        Solution:

	When there is enough disk quota to open/create the file but
        not enough quota to complete all the writes, the software
        must exit after sending an error message.
          
	Reference:

	CFS.37432


ECO 4 updates:
--------------

ECO D   27-AUG-1996			Alpha and VAX

        Images:

        UCX$RCP.EXE                     UCX V4.0-10D

	Problem:

	PATHWORKS RCP will not work with UCX RCP. In the first
        message received on the RSH port from PATHWORKS, instead of
        sending a NULL terminated string containing "\0" (HEX 0 == 
        ASCII NULL), PATHWORKS sends a NULL terminated string 
        containing "0" (HEX 30 == ASCII 0).

        Solution:

	Read read-and-throw-away the "0" (HEX 30 == ASCII 0).
         
	Reference: 

	CFS.38780


ECO E   27-SEP-1996			Alpha and VAX

        Images:

	UCX$RCP.EXE                     UCX V4.0-10E

	Problem:

	RCP does not handle user names 12 bytes in length.

        Solution:

	Get_userinfo() has been modified to treat the first 
        encountered blank (hex 20) or null byte  (HEX 0) as the
        username delimiter as returned by SYS$GETJPIW().

	Reference:

	CFS.45129


ECO F   30-OCT-1996			Alpha and VAX

        Images:
        
	UCX$RCP.EXE			UCX V4.0-10F

	Problem:

	Concurrent RCP commands return the wrong file content. 
        With two get operations, the first copy gets the second
        file and the second copy gets the first file.

        Solution:                    

        The first RCP converts the file to stream, file RCP_CVT.pid#1.
        The second RCP converts its file to stream, file RCP_CVT.pid#2.
        If the two PIDs are the same, the stack local variable is
        removed and the global one is used.

	Reference:

	CFS.43410

       
---------------------------------------------------------------------------
Corrections for Digital TCP/IP Services V4.0 RPC Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------

ECO A					Alpha and VAX

        Images:

        UCX$RPCXDR_SHR.EXE              UCX V4.0-10A

        Libraries:

        UCX$RPCXDR.OLB

	Problem:

	The xdr_double_T() routine [IEEE double precision floating]
        inadvertently uses a call to XDR_GETLONG() and XDR_PUTLONG()
        when fetching the double floating value.  It should be using
        two XDR_GETLONG()s.

	Solution:

	Change the code accordingly.

	Reference:

	CFS.34466

	Problem:

	DigitalC V5.2 includes support for the FD_SET macros.

	Solution:

	Change rpc/types.h to sense and set the appropriate symbol
	to prevent the conflict.


ECO B	28-Dec-1995				Alpha and VAX

        Images:

        UCX$RPCXDR_SHR.EXE              UCX V4.0-10B

        Libraries:

        UCX$RPCXDR.OLB

	Problem:

	Direct and indirect calls to pmap_unset() fail to remove
	registrations.

	Solution:

	The call to get the process ID fails to initialize the
	PID to zero.  The result is an invalid PID in the call
	to the portmapper, thereby failing to remove the entry.

	Reference:

	CFS.36309

	Problem:

	G Floating is not properly supported.

	Solution:

	The invalid exponent bias defined for the G_Floating
	data type has been corrected.

	Reference:

	CFS.35946


ECO C   19-Feb-1996				Alpha and VAX

        Images:

        UCX$RPCXDR_SHR.EXE              UCX V4.0-10C

        Libraries:

        None.

        Problem:

	More contemporary versions of the DECC header library include
        the typedef of u_int while older versions do not.  This causes
        compilation problems with DECC versions after V5.0.

        Solution:

	Work with the DECC  header file by sensing and defining
        __U_INT and u_int in rpc/types.h as appropriate.
        
	Reference:

	CFS.38074


ECO 3 updates:
--------------

ECO D   26-Apr-1996                     Alpha and VAX

        Images:

        UCX$RPCXDR_SHR.EXE              UCX V4.0-10D

        Problem:

	Errors in the XDR routines `xdr_double_D()' and `xdr_double_G()'
        result in decoding problems from IEEE `double_T()' format as
        exchanged on the network.

        Solution:

	Encode and decode have been debugged to ensure that the
        appropriate bits are being reformatted correctly.
           
	Reference:

	CFS.40529


ECO E   15-Aug-1996                     Alpha and VAX

        Images:

        UCX$RPCGEN.EXE			UCX V4.0-10E

	Problem:

	The RPCGEN /DEFINE qualifier causes an ACCVIO.

        Solution:

	Parseargs() has been modified so that it will not uppercase
        the /DEFINE string (which is the wrong buffer and causes the
        ACCVIO).  CLI_GET_VALUE() has been changed to require
        starting and ending quotes for quoted string status. If
        quoted string status exists, the stripped quotes are
        restored in the define string.

	Reference:

        CFS.43990


INSTALLATION NOTES:

In order for the corrections in this kit to take effect, the system
must be rebooted.  If the system is a member of a VMScluster, the 
entire cluster should be rebooted. 
REFERENCES:

IBM is a registered trademark of International Business Machines.
WordPerfect is a trademark of WordPerfect Corp.
Files on this server are as follows:
»dec-axpvms-ucxeco_a_40_5-v0500--4.README
»dec-axpvms-ucxeco_a_40_5-v0500--4.CHKSUM
»dec-axpvms-ucxeco_a_40_5-v0500--4.pcsi-dcx_axpexe
»dec-axpvms-ucxeco_a_40_5-v0500--4_cvr.txt
privacy statement using this site means you accept its terms