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
DEC TCP/IP] UCXALP_E10041 TCP/IP V4.1 ECO Summary
TITLE: DEC TCP/IP] UCXALP_E10041 TCP/IP V4.1 ECO Summary
 
Modification Date:  21-DEC-2000 
Modification Type:  DOCUMENTATION:  Removed references to OpenVMS V7.2.
                                    TCP/IP V4.1 is not supported on V7.2.  

NOTE:  An OpenVMS saveset or PCSI installation file is stored
       on the Internet in a self-expanding compressed file.
 
       For OpenVMS savesets, the name of the compressed saveset
       file will be kit_name.a-dcx_vaxexe for OpenVMS VAX or
       kit_name.a-dcx_axpexe for OpenVMS Alpha. Once the OpenVMS
       saveset is copied to your system, expand the compressed
       saveset by typing RUN kitname.dcx_vaxexe or kitname.dcx_alpexe.
 
       For PCSI files, once the PCSI file is copied to your system,
       rename the PCSI file to kitname.pcsi-dcx_axpexe, then it can
       be expanded by typing RUN kitname.pcsi-dcx_axpexe.  The resultant
       file will be the PCSI installation file which can be used to install
       the ECO.

Copyright (c) Compaq Computer Corporation 1999.  All rights reserved. 


PRODUCT:    DIGITAL TCP/IP Services for OpenVMS V4.1

OP/SYS:     OpenVMS Alpha

SOURCE:     Compaq Computer Corporation

ECO INFORMATION:

     ECO Kit Name: UCXALP_E10041 (DEC-AXPVMS-UCXECO_41_10-V1000--4.PCSI) 
     ECO Kits Superseded by This ECO Kit: UCXALP_E09041 
                                          DEC-AXPVMS-UCXECO_41_9-V0900--4
                                          DEC-AXPVMS-UCXECO_41_8-V0800--4
                                          DEC-AXPVMS-UCXECO_41_7-V0700--4
                                          DEC-AXPVMS-UCXECO_41_6-V0600--4
                                          DEC-AXPVMS-UCXECO_41_5-V0500--4
                                          DEC-AXPVMS-UCXECO_41_4-V0400--4
                                          DEC-AXPVMS-UCXECO_41_3-V0300--4
     ECO Kit Approximate Size:  30880 Blocks
     Kit Applies To:  DIGITAL TCP/IP Services for OpenVMS V4.1
                      OpenVMS Alpha V6.1 and higher
     System/Cluster Reboot Necessary:  Yes
     Installation Rating:  None

     Kit Dependencies:

       The following remedial kit(s) must be installed BEFORE
       installation of this kit:

         None 

       In order to receive all the corrections listed in this
       kit, the following remedial kits should also be installed:

         None 



ECO KIT SUMMARY:

An ECO kit exists for DIGITAL TCP/IP V4.1 on OpenVMS Alpha V6.1 and
higher.  The following sections describe the corrections to each facility.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 INSTALL Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------

SPECIAL NOTE 20-SEP-1996

        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 problem. Sites
        using manual NFS server startup should do one or both
        of the following:

        1. Use automatic startup instead.

        2. Edit SYS$MANAGER:UCX$NFS_SERVER_STARTUP.COM as
           follows:

           - Find the RUN command following the MANUAL_STARTUP:
             label.

           - Change the last two continuation lines of the RUN
             command, /UIC=[1,4] - /NORESOURCE  to  /UIC=[1,4]
             thereby eliminating the /NORESOURCE_WAIT qualifier.

        Reference:

        CFS.34717.


ECO A   19-AUG-1996      Alpha and VAX

        Image:

        UCX$VERSIONS.EXE        UCX V4.1-12A

        Problem:

        UCX$VERSIONS shows the wrong images on VAX.
        The V6 images are shown on V5 and V5 images on V6.

        Solution:

        Corrected.

        References:

        Internal report.

ECO B   24-NOV-1996      Alpha and VAX

        Image:

        None.

        Problem:

        UCX$FINGER_SHUTDOWN purged all logs,
        not just UCX logs.

        Solution:

        Purge old log files at startup.

        References:

        Internal report.

ECO C   30-DEC-1996      Alpha and VAX

        Image:

        None.

        Problem:

        Shutting down OpenVMS from either an RLOGIN
        or TELNET session resulted in the session being
        aborted before the system was shut down.

        Solution:

        If invoking UCX$SHUTDOWN.COM on a TN device,
        display an appropriate message and exit the
        shutdown procedure.  UCX remains running
        until the system is shut down.
        This behavior is the same as that of DECnet on RT terminals.

        References:

        CFS.47157.

ECO D   14-JAN-1997      Alpha and VAX

        Image:

        None.

        Problem:

        The METRIC daemon runs using the UIC and
        default privileges of the user who started it.
        The image is not installed during startup
        unless either RSH or REXEC is enabled.

        Solution:

        Correct the startup logic for the METRIC daemon so
        that it utilizes its own UIC and installs the images 
        whenever appropriate.

        Reference:

        CFS.47535.

ECO E   6-FEB-1997	Alpha and VAX

	Images:

        None

	Problem:

	Files get purged in SYS$MANAGER upon startup.

        Solution:

	UCX$STARTUP calls other startup scripts in SYS$MANAGER,
        and they purge files they should not be purging. This problem
        occurs because there are 2 identical copies of
        startup/shutdown files for some components: one in the login
        directory and one in SYS$MANAGER.
        
        Removed purge commands from several startup scripts.

	Reference:

        CFS.48550.

ECO F   7-FEB-1997	Alpha and VAX

	Images:

        None	

	Problem:

	UCX$SNMP_SHUTDOWN.COM cannot find the
        SYS$SYSTEM:UCX$SNMP_AGENT.EXE file.

        Solution:

	Because the images has been replaced by 
	SYS$SYSTEM:UCX$ESNMP_SERVER.EXE, correct the file name and 
	process name. In addition, change the DCL code so that it 
        correctly identifies the process being stopped.

	References:

	Internal report.

ECO 9 updates:
--------------
ECO I   8-FEB-1998      Alpha and VAX

        Image:

	UCX$VERSIONS.EXE			UCX V4.1-12I

	Sources:

	UCX$SNMP_SHUTDOWN.COM V1.0-02
	UCX$SNMP_STARTUP.COM  V1.0-02

	Problem:

	Inconsistencies in startup/shutdown of subagents.  
	Also enclose some process names (e.g., those ending in a hyphen) 
	in quotation marks so as not to confuse DCL.

        Solution:

	Made sure both subagents handled, and enclosed results 
        of getjpi for PRCNAM within quotation marks.  Also made checking 
        of privileges, installation and removal of images, and 
        enable/disable of service consistent between the procedures.
	
	The UCX$SNMP_SHUTDOWN.COM must be run from a privileged 
	account. It deinstalls UCX SNMP images and disables the 
	SNMP service.

	UCX$SNMP_STARTUP.COM runs in two modes:

	Default: 
		The non-privileged the mode in which the
		procedure is called from UCX$STARTUP.COM and for 
		autostart from the Auxiliary server.
	Full:
	     Intended for interactive startup from
	     a privileged account.  Use the command
	     $ @SYS$MANAGER:UCX$SNMP_STARTUP FULL.
	     This mode is required if you want to restart SNMP
	     after running UCX$SNMP_SHUTDOWN without stopping and
	     restarting UCX.
          
	Reference:

	Internal testing.

ECO 10 updates:
---------------
ECO K   28-APR-1998     Alpha and VAX

        Sources:

        [INSTALL]UCX$SHUTDOWN.COM

        Problem:

        When logged in on a system with tn device and trying to
        shutown UCX, the customer gets unrecognized command messages.

        Solution:

        Define SAY as SYS$OUTPUT at the top of the UCX$SHUTDOWN.COM
        file.

        Reference:

        PTR 30-1-446, CFS.53292

        Sources:

        UCX$LPD_STARTUP.COM             	UCX V4.1-01
        UCX$LPD_SHUTDOWN.COM            	UCX V4.1-01

        Problem:

        Some UCX$*.COM files are not handling the UCX$LPD_PRINTCAP
        logical correctly.

        Solution:

        In UCX$LPD_STARTUP.COM, only DEFINE UCX$LPD_PRINTCAP if it is
        not already defined.  In UCX$LPD_SHUTDOWN.COM, do not DEASSIGN
        UCX$LPD_PRINTCAP.

        Images:

        UCX$VERSIONS.EXE        		UCX V4.1-12K

        Problem:

        UCX$HR_MIB.EXE not displayed for $ UCX SHOW VERSIONS/ALL

        Solution:

        Add UCX$HR_MIB.EXE to the code.

        Reference:

        None

ECO L   16-OCT-1998	Alpha and VAX

        Sources:

        UCX$SNMP_STARTUP.COM

        Images:

        None.

        Problem:

        Remove purge statements from UCX$SNMP_STARTUP.COM

        Solution:

        Comment out the following lines from UCX$SNMP_STARTUP.COM:

        $ SAVE=5+2*F$GETSYI("CLUSTER_NODES")
        $ PURGE/KEEP='SAVE'

        References:

        None.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 Kernel Images
---------------------------------------------------------------------------
ECO 1 updates:
--------------
ECO A	8-AUG-1996	Alpha and VAX

	Image:
	    
	UCX$BGDRIVER.EXE			UCX V4.1-12A  (Alpha)
	UCX$INTERNET_SERVICES.EXE		UCX V4.1-12A
	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.1-12A
	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.1-12A
	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.1-12A
	UCX$INETACP.EXE				UCX V4.1-12A


	Problems:

        1.  The routing table becomes filled with entries that
            have the RTF_UP flag bit cleared but have a 
            non-zero reference count.

        2.  A system crash might occur in the ip_output routine because
            inp_route.ro_rt points to a deallocated entry.
 
	3.  On OpenVMS Alpha V7.0, a system crash might occur when a 
            reference is made to unallocated memory that is likely
            a 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 doing an RTFREE of the 
            rtentry associated with the route. The result was an 
            rtentry whose refcnt was permanently increased by 1, 
            and which, therefore, never goes away.  The solution 
            is to do the RTFREE.

	2.  In routine rtpurge, an incorrect call to rtfree has the 
	    possibility of deallocating an rtentry while leaving an 
	    inp_route.ro_rt field still pointing to it.  This is the 
	    same situation cited above.  The solution is to remove 
	    the call to RTFREE.

	3.  The problem occurs when the user issues:

		UCX SET CONFIGURATION COMM/LARGE=MIN=31

	    31 large Ethernet buffers need more than 64K of memory 
	    for a cluster of buffers with OpenVMS V7.0 because the 
	    size of a VCRP has grown.  The amount of space to allocate 
            is calculated, but the value is more than 16 bits.
	    When the space needed is specified, the low order bits are 
            used incorrectly.  The unallocated space is then used and 
            causes the system to crash.

	    The correction consists of four parts:

              a.  A new INETCB$B_MAX_NR_DATA_CLST field is created
                  in the NETCB.  The declaration of this field 
                  occurs in INET_MACROS.MAR.  The new field is in 
                  a previously reserved area of the INETCB that was 
                  used only for alignment purposes, and, therefore, 
                  the INETCB has not grown in size.  There is no
                  need to re-assemble many modules to use this new 
                  field.

              b.  In the INETACP_MOUNT routine in INETACP_INIT.MAR,
                  the largest number of large buffers that fit
                  in a maximum-sized cluster is calculated.  A maximum
                  sized cluster is at least one byte less than 64K.
                  The newly-calculated number is then put into the
                  new INETCB$B_MAX_NR_DATA_CLST field.

              c.  In INET_MBUF.MAR where the clusters of large
                  buffers are allocated, 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 is minimized.

              d.  Some code cleanup is done in the SET_MIN_LARGE,
                  SET_MIN_SMALL, and INET_SET_SIZES_MIN routines
                  in INET_SETMODE.

	References:

 	1. None
	2. CFS.43319
	3. CFS.43704


ECO B	23-AUG-1996	Alpha and VAX

	Image:

	UCX$BGDRIVER.EXE			UCX V4.1-12B  (Alpha)
	UCX$INTERNET_SERVICES.EXE		UCX V4.1-12B
	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.1-12B
	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.1-12B
	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.1-12B
	UCX$INETACP.EXE				UCX V4.1-12B


	Problem:

	A potential problem exists for multicast on SLIP lines.  
	Once a datagram for an IP multicast address has been 
	received in a SLIP VCRP, the VCRP will, from then on, 
	continue to indicate that any datagrams processed in 
	that VCRP were received via a "broadcast" datalink 
	address.

	Solution:

        In the ALLOCATE_SLIP_RCV_VCRP routine, the datalink
        received header field (@VCRP$A_LAN_R_HEADER which points 
        to VCRP$A_LAN_R_HEADER+4) is reinitialized to zero.


ECO C	10-SEP-1996	Alpha and VAX

	Retrofit forward:

	1. From ECO AI V3.3 and ECO V from V4.0.
	2. From ECO U from V4.0.

	Image:

	UCX$BGDRIVER.EXE			UCX V4.1-12C  (Alpha)
	UCX$INTERNET_SERVICES.EXE		UCX V4.1-12C
	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.1-12C
	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.1-12C
	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.1-12C
	UCX$INETACP.EXE				UCX V4.1-12C

       	Problem:

	1. 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).

	2. When a persistent window probe message is received, UCX 
	   TCP does not reply with an ACK message.  Although there 
	   is no explicit requirement to send such ACKs, certain 
	   other implementations expect them.  The lack of a response 
	   prompts other TCPs to abort connections with full receive 
	   windows, even though the connection is in fact still active.

	Solutions:

	1. This problem is 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 
	   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 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 this problem case,
	   the datalink receives so many datagrams that it does
           not finish with its tasks until the queued datagrams occupy 
           all of pool.  The included correction 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.

	2. Send back an acknowledgment (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.

	References:

	1. CFS.44630, CFS.31492
	2. CFS.43983


ECO D	16-SEP-1996	Alpha and VAX

	Image:

	UCX$INETACP.EXE				UCX V4.1-12D

       	Problem:

	When a service is disabled while it still has active 
	connections, the global service counter still counts 
	those connections. When they are closed, the global 
	counter is not updated.

	Solution:

        Decrement the service counter for all outstanding 
        connections at the time the service is disabled.

	Reference:

	CFS.42427

ECO E	17-SEP-1996	Alpha and VAX.

	This corresponds to ECO W from V4.0.

	Image:                                                     

	UCX$BGDRIVER.EXE			UCX V4.1-12E  (Alpha)
	UCX$INTERNET_SERVICES.EXE		UCX V4.1-12E
	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.1-12E
	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.1-12E
	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.1-12E
	UCX$INETACP.EXE				UCX V4.1-12E

	Problem:

	An application waiting for a given broadcast address
	incorrectly receives 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 it will 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.

	References:

	CFS.34509


ECO F	20-SEP-1996	Alpha and VAX

	Image:                                                     

	UCX$BGDRIVER.EXE			UCX V4.1-12F  (Alpha)
	UCX$INTERNET_SERVICES.EXE		UCX V4.1-12F
	UCX$INTERNET_SERVICES_V6.EXE		UCX V4.1-12F
	UCX$INTERNET_SERVICES_SEC.EXE		UCX V4.1-12F
	UCX$INTERNET_SERVICES_SEC_V6.EXE	UCX V4.1-12F
	UCX$INETACP.EXE				UCX V4.1-12F

	Problems:

	1. On 32-bit systems (i.e., VAX and Alpha before OpenVMS 
	   V7.0), systems running UCX V4.1 crash when DCE is 
	   started.

	2. On-64 bit systems, DCE gather writes do not work 
	   properly.

	Solution:

	Both problems are due to errors in a routine that only 
	deals with scatter/gather I/O.  The routine is 
	BUILD_MULTI_BUFFER_VECTOR.

	For problem 1, there was an incorrect reference to R3 
	that should have been to R6.  The result was that a 
	counter whose value should have been less than a maximum 
	of 200 was being loaded with arbitrary information. The 
        counter was then used to modify an array in memory.  When
	the counter contained large numbers, massive memory 
        corruption occurred.

	For problem 2, the error was in code that prepared 32-
	bit style descriptors for the 64-bit environment.  The 
	result was that in a gather operation that specified 3 
	buffers, the descriptors for the first buffer were 
        replicated 3 times, rather than each of the three 
	individual buffers being replicated once.


ECO G   26-SEP-1996     Alpha and VAX

        Image:

        1. UCX$TRACE.EXE                        UCX V4.1-12G
        2. UCX$BGDRIVER.EXE                     UCX V4.1-12G  (Alpha)
           UCX$INTERNET_SERVICES.EXE            UCX V4.1-12G
           UCX$INTERNET_SERVICES_V6.EXE         UCX V4.1-12G
           UCX$INTERNET_SERVICES_SEC.EXE        UCX V4.1-12G
           UCX$INTERNET_SERVICES_SEC_V6.EXE     UCX V4.1-12G
           UCX$INETACP.EXE                      UCX V4.1-12G


        Problems:

	1. The TCPIPTRACE command intermittently caused access violations.

        2. POP users notice occasional data duplication.  
	   The problem that POP sees is actually more general.  
	   The problem may occur on any non-blocking socket.  
	   The problem arises when data is sent, the current 
	   socket send quota is less than the amount of data to be 
	   sent, and there is more additional room in the current
           mbuf in the send socket buffer than the amount of 
	   remaining quota. In this infrequent case, incorrect
           I/O status is returned to the user.  It does not 
           reflect that data was actually written to the socket.
	   The result is that the user will resend data that has 
           already been sent.

        Solutions:

        1. The alignment problem on Alpha platform has been corrected.

        2. The partial send count is now properly updated after some data 
	   has been transferred.

        References:

        1. Internal report
        2. CFS.44891


ECO 2 updates:
--------------
ECO H   30-SEP-1996      Alpha and VAX

        Image:

	UCX$BGDRIVER.EXE                        UCX V4.1-12H  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12H
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12H
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12H
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12H
        UCX$INETACP.EXE                         UCX V4.1-12H

        Problem:

	Multiple ACCEPTs done to the same socket may cause an
        I/O request to be lost.  This situation results in a process 
        hanging in RWAST.  This can occur with a multi-process 
        World-Wide Web (WWW) server.

        Solution:

	The cause of this problem is that a particular UCX-specific
        field in the INET_SOACCEPT code flow in the IRP is being 
        used without being initialized.  The result is that the 
        IRP$x_BG_OOB bit, in the IRP$L_FLAGS field, is possibly 
        being interpreted incorrectly.  The solution is to introduce 
        an instruction that initializes the field to zero at the
        start of an ACCEPT operation.


ECO J   4-OCT-1996      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12J  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12J
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12J
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12J
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12J
        UCX$INETACP.EXE                         UCX V4.1-12J

        Problem:        

	1.  The UCX SHOW DEVICE command sometimes hangs.  As a 
            result, the customer shut down UCX and brought it up 
            again.  Upon doing this once, the system crashed.

        2.  At setup, select() should properly sense and return if
	    the socket has OOB data pending.  While reception of OOB 
            data causes an active select() to terminate, active 
            OOB data does not cause a new select() to terminate.

        Solution:

	1.  The cause of the hang is most likely 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, then release it when the search 
            is finished.  This solution 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 correction 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.

        2.  OOB data does not appear as data queued to the socket's 
	    MBUFs, and 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, 
	    may not have an 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.

        References:

        1. CFS.43985
        2. CFS.44644


ECO K   22-OCT-1996      Alpha and VAX

	Retrofit forward from ECO AJ V3.3.

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12K  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12K
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12K
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12K
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12K
        UCX$INETACP.EXE                         UCX V4.1-12K

        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 -- 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 L   25-Oct-1996      Alpha and VAX

        Partial retrofit forward from ECO Z V4.0.

	Image:

	UCX$BGDRIVER.EXE                        UCX V4.1-12L  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12L
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12L
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12L
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12L
        UCX$INETACP.EXE                         UCX V4.1-12L

        Problem:

	Incoming RSH connections sometimes hang.

        Solution:

        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, and so on.
	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.

        References:
        
	Several  reports.


ECO M    8-Nov-1996      Alpha and VAX

        Image:

        UCX$INETACP.EXE                         UCX V4.1-12M
                
	Problem:

	The correction in ECO D, above, was incomplete.  Although it 
	prevented the service counter from growing when active 
	services were disabled, it also led in some cases to the 
	counter being decremented past zero.  For example, disabling 
        the FTP service while one FTP connection was the only 
        activity on the system would result in the service counter 
        showing up as 65535 (-1, formatted as an unsigned word).  
        Following such underflow, no further connections for any 
        service are accepted.

        Solution:                   

	When decrementing the global service counter at service 
	disable time, set a flag in the BG UCB so that the counter 
	will not be decremented again later, when the device-socket 
	is deleted.  To provide additional protection against any 
	such problems, always check that the value of the 
        service counter is non-zero before decrementing it.

        Reference:

	Internal report.


ECO N   12-Nov-1996      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12N  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12N
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12N
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12N
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12N
        UCX$INETACP.EXE                         UCX V4.1-12N

        Problems:

	1.  The UCX$INETACP process slowly loses AST count.

        2.  A system crash can occur in INET_GET_IRP with the INETCB 
            pointer as zero.

        Solutions:

        1.  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.

        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 include a test for the 
            existence of the INETCB before using a pointer to it and 
            have the routine return an error if the test fails.

        References:

        1. CFS.46398
        2. CFS.44492


ECO 3 updates:
--------------
ECO O   14-Nov-1996      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12O  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12O
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12O
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12O
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12O
        UCX$INETACP.EXE                         UCX V4.1-12O

        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.  To resolve the problem, substitute 
            2 CMPL instructions for the offending instruction.

        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 assumes that arpoint contains a 
            valid value.  To resolve this problem, the code 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 P   27-Nov-1996      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12P  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12P
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12P
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12P
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12P
        UCX$INETACP.EXE                         UCX V4.1-12P

        Problem:

        IP datagram fragments that have the DF bit set are 
        being ignored.  

        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.

        References:

        Internal reports.

ECO 5 updates:
--------------
ECO Q   6-DEC-1996      Alpha and VAX
                      				 
	Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12Q  (Alpha)
       	UCX$INTERNET_SERVICES.EXE               UCX V4.1-12Q
       	UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12Q
       	UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12Q
       	UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12Q
       	UCX$INETACP.EXE                         UCX V4.1-12Q

	Problem:

	System crash, INVEXCEPTN, reassembling a fragmented 
	UDP datagram directed to a PATHWORKS socket.

	Solution:

	This problem is most likely due to a PWIP 
	problem, although the exact cause has not been found.  
	However, the crash is triggered by the receipt of a 
	fragmented UDP datagram, a rare event in normal
	circumstances, that is then passed up to PWIP where
        some data is being corrupted.

	A change was made to eliminate the possibility 
	of passing fragmented datagrams to PWIP.  This was done 
	by allocating adequate space to accommodate the 
	fragmented datagram and then copying the fragments 
	into a contiguous datagram.

	References:

	CFS.42878.

ECO R	16-DEC-1996      Alpha and VAX

        Image:

       	UCX$BGDRIVER.EXE                        UCX V4.1-12R  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12R
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12R
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12R
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12R
        UCX$INETACP.EXE                         UCX V4.1-12R

	Problem:

	Invoking TRACEROUTE.EXE from UCX$EXAMPLES 
	may lead to a crash.

	Solutions:

	Corrected.

	References:

	CFS.46521.

ECO S	 3-JAN-1997      Alpha and VAX

        Image:

        UCX$INETACP.EXE                         UCX V4.1-12S
        UCX$BGDRIVER.EXE                        UCX V4.1-12S
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12S  (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12S
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12S
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12S

	Problems:

	On a system using FDDI, configuring an 
	illegally large value for the minimum number 
	of large buffers causes a system crash.

	Solutions:

	This problem was introduced in ECO A, when 
	the new mechanism to dynamically calculate 
	limits on cluster sizes was added.
	The solution is to recalculate the limit at 
	the time FDDI-sized buffers are selected, 
	later in the startup process.

	References:

	CFS.47489.

ECO T	13-JAN-1997      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12T  (Alpha)
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12T
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12T
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12T
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12T
        UCX$INETACP.EXE                         UCX V4.1-12T

	Problem:

	SSRVEXCEPT, on OpenVMS V7.x, when 
	receiving OOB data.

	Solution:

	The problem was a failure to take 64-bit 
	addresses into account when returning the 
	user data to the user buffer.  For 64-bit
	systems, all data buffer descriptors are 
	normal to 64 bits.
	However, in routine, INET_SORECEIVE_IMMEDIATE, 
	the descriptor was treated as if it were a 32-bit
	descriptor.  As a result, the high 32 bits 
	of the length were picked up and used it as if 
	they were the address of the user buffer.

	References:

	Internal report.

ECO U	16-JAN-1997      Alpha and VAX

        Image:

	UCX$BGDRIVER.EXE                        UCX V4.1-12U  (Alpha)

        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12U  (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12U
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12U
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12U

	Problem:

	A memory leak occured when receiving small, 
	fragmented ICMP messages.  This problem was 
	visible with the SDA command SHOW 
	POOL /NONPAGE /SUMMARY as an unusually large 
	number of VCRPs consuming most of nonpaged pool.

	Solution:

	Deallocate the VCRP(s) containing the ICMP 
	message, once the size check shows that the 
	first fragment is too small.
           
	Reference:

        Internal report.

	Problem:	

	The getpeername() operation succeeds on a 
	socket that is not yet connected. DIGITAL  
	UNIX returns ENOTCONN in that case.
	
	Solution:

	Check for a TCP socket that is not connected; 
	return an error.
            
	Reference:

	CFS.47513.

	Problem:

	ICMP Timestamp Reply messages are sent using 
	a non-standard time value, but it is not marked 
	as such by setting the high-order bit.

	Solution:

	Set the high-order bit in the time value. It is 
	not possible at this time to send a standard value, 
	because the UCX kernel has no knowledge of Universal 
	Time, nor does it know the local timezone (which 
	would be required to calculate Universal Time).  
	Also correct the algorithm that was producing 
	a number of seconds 10 times too high.

        References:

        CFS.45971.

	Problem:

	The system crashed when issuing UCX SET NOINTER on 
	a system that had no physical interface attached 
	but had one configured.

	Solution:

	Crash occurred in shutting VCI ports but at the 
	time there was no VCIB for ARP, yet it was assumed 
	that there would be one.  The correction was to explicitly 
	test for the existence of the ARP VCIB before using
	its supposed address.

	References:

	Internal report.

ECO V	24-JAN-1997      Alpha and VAX

        Image:
        
        UCX$BGDRIVER.EXE                        UCX V4.1-12V
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12V  (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12V
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12V
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12V

	Problem:

	A remote note connected to a UCX node by a 
	serial line, where the UCX node considers the 
	serial line to be a SLIP interface, can cause 
	the UCX node to overwrite memory. This can be 
	accomplished by the remote node sending certain 
	character particular strings on the serial line.

	Solution:

        Check for this condition before adding data to the VCR.
            
	Reference:

	Internal report.

	Problem:
	
	A crash occurred while processing a RARP request on VAX received 
	via the ARP VCI port.

	Solution:

	Routine ARPINPUT was returning a bad value. This return 
	was the result of a quirk in the compiler.  However, UCX should 
        never process RARP requests received via the ARP VCI port.  
	To resolve the partial RARP support, IF_ETHER_VMS.C has been 
        disabled.
            
	Reference:

	CFS.48299.

	Problem:

	Timestamps used in timestamp option neglected 
	to set non-standard bit.

	Solution:

	Set the non-standard bit.

	Reference:

	Internal testing.

ECO W   4-MAR-1997      

        Image:

	UCX$BGDRIVER.EXE                        UCX V4.1-12W
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12W  (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12W  (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12W  (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12W  (VAX)

        Problem:
	
	System hangs when running an application that 
	"peeks" at data in a TCP socket.

	Solution:

	A bug in routine INET_SORECEIVE_STREAM caused an infinite loop 
        if while "peeking" at data, data arrived for the socket.  The
	solution is to re-work the routine.

        References:

	CFS.49095, CFS.49054.

ECO X   12-MAR-1997      Alpha and VAX

        Image:

	UCX$BGDRIVER.EXE                        UCX V4.1-12X
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12X  (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12X  (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12X  (VAX)
	UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12X  (VAX)

        Problem:

	Multicast applications do not receive copies 
	of messages transmitted by other applications 
	on the same host.

        Solution:

	Treat multicast messages like broadcast messages, which 
	were already being looped back for receive processing.

        Reference:                        

	CFS.48879.

ECO Y   2-APR-1997      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12Y
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12Y  (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12Y  (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12Y  (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12Y  (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12Y

        Problems:

	1. System crashed on a write to a BG device when P2 parameter 
	   (user buffer length) specified a negative value.

        2. When loading a proxy database of over 2048 entries,
	   certain entries became disabled.

        Solutions:

	1. Lengths of user buffers were not being properly 
	   validated and as a result, the negative value length 
	   was misinterpreted as a large positive number.
           The correction was to properly validate this length, 
	   limiting lengths to 64K-1 bytes.
           Lengths greater than this and lengths less than zero 
	   now cause the I/O request to be terminated with 
	   an SS$_IVBUFLEN status.

        2. An error in the definition of the MOVCL3 macro, which 
	   did not properly account for overlapped moves, led to 
	   corruption of the proxy database.  The macro was modified 
           (INET_MACROS.MAR) and INETACP_CREPROC.MAR, where the macro 
           is invoked, was modified to correct branch destination problems 
           that arose with the new larger macro.

        References:

        1. Internal testing.	

	2. CFS.49264.

ECO Z   8-APR-1997      Alpha and VAX

        Image:

        UCX$INETACP.MAR                 UCX V4.1-12Z

        Problem:

        Port numbers on incoming RLOGIN connections were 
	not properly parsed.

        Solution:

        Correct port number parsing.

        Reference:

        Internal testing.

ECO AA  9-APR-1997      Alpha and VAX


       Images:

	UCX$BGDRIVER.EXE                        UCX V4.1-12AA
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AA (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AA (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AA (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AA (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AA

        Problem:

        1. System crashed; call to panic from SBDROP when 
	   inconsistent data is left in the receive socket 
	   buffer.

        2. System crashed soon after boot on OpenVMS V7.1 Alpha
	   with per thread code.

        Solution:

	1. The problem arose in routine INET_SORECEIVE_ATOMIC, 
	   when: a) data arrives on a UDP or raw IP socket while 
	   un-synchronized in INET_MOVIO_TO_USER, and b) 
	   the user buffer is smaller than the datagram, which 
	   implies that the software does not consume the entire received 
	   datagram and calls SBDROPRECORD.  The correction
	   is to refresh R7, the pointer to the next datagram,
	   after resynchronizing.

        2. UCX was inadvertently clearing an IRP field via a 
	   CLRQ IRP$L_ACTION instruction, assuming (without 
	   an explicit ASSUME invocation) that IRP$L_ARG1 was 
	   in the next longword.  For V7.0 of OpenVMS Alpha, this
           assumption is no longer true, and the per thread 
	   code uses this field that was being cleared.  The 
	   solution was to replace all instances of the CLRQ 
	   IRP$L_ACTION instruction with the sequence:
           CLRL    IRP$L_ACTION
           CLRL    IRP$L_ARG1

        References:

        1. CFS.47490.

        2. Internal report.                           

ECO AB  23-APR-1997      Alpha and VAX


        Images:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AB
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AB (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AB (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AB (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AB (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AB

        Problem:

        VCRP leak over time on a SLIP interface.

        Solution:

        In routine PROCESS_SLIP_MSG, the call INET_DECOMPRESS_PACKET 
	expands the received packet. That routine returns an error 
	when the packet cannot be decompressed due to noise on the 
	line. When this situation occurred, the VCRP that contained the 
        packet was lost. The correction was to deallocate the VCRP when 
        the situationn occurs.

        Reference:

        CFS.47496

ECO 8 updates:
--------------
ECO AD 03-NOV-1997      Alpha and VAX

        Images:

	        UCX$BGDRIVER.EXE                        UCX V4.1-12AD
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AD (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AD (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AD (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AD (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AD


        Problem:

        Dynamically decreasing the maximum number of large
        or small buffers can result in a system crash.

        Solution:

        Refuse to lower the maximum number of buffers below
        the current value.

        Problem:

        Non-privileged users were able to create a SLIP
        interface.

        Solution:

        For the Create SLIP ACP function, the user's
        privileges were checked before creation.

        References:

        Internal report.

ECO 9 updates:
--------------
ECO AE  15-JAN-1998     Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AE
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AE (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AE (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AE (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AE (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AE

        Problem:

        Deassigning one channel to a particular device caused
        any pending attention ASTs to be canceled, even
        those of other channels.

        Solution:

        Only flush attention ASTs upon the final channel
        deassign operation, when the reference count drops to
        zero.

        References:

        CFS.52150.

ECO AF  23-JAN-1998     Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AF
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AF (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AF (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AF (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AF (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AF

        Problem:

        IP multicast support was compromised in ECO W.
        IGMP messages were no longer being sent, and the
        SO_BROADCAST option was required in order to send
        multicast datagrams.

        Solution:

        Skip several broadcast-related checks in the case
        of multicast data. Ensure that IGMP messages are sent
        and that other Multicast packets are looped back upon
        transmit for other sockets on the local host.
        Note that packets larger than the MTU are still not
        looped back, but this should be a highly unusual case.

        References:

        CFS.53405.

ECO AG  2-Feb-1998      Alpha and VAX

        Image:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AG
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AG (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AG (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AG (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AG (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AG

        Problems:

        1. System crash in sbappend, called from 
	   SOSEND_LOOPBACK.

        2. Large mbufs leak.

        Solution:

	1. The cause of the crash is an apparent timing window.  
	   In the recent past, the socket, for which we are 
           processing a transmit request, was paired with 
	   another socket on this host. It was determined that it
	   was going to use optimized "loopback" logic at that 
	   time. However, before it used the optimized "loopback" 
           logic, it gave up synchronization (i.e. lowered IPL) and 
           copied data from the user space into system buffers.  
           By the time it regained synchronization (raised IPL), the 
           paired socket was gone along with a pointer to it.  The
	   socket used this now zero pointer and crashed.

           The solution was to test for the existence of this 
	   pointer after we re-synchronize.  If it is no longer 
           there, then we simply deallocated the buffer chain that 
           we allocated to hold the user data, then returned.  
           This correction went into routine SOSEND_LOOPBACK.

        2. In both INET_SOSEND_ATOMIC and INET_SOSEND_STREAM, error 
	   paths were found that did not deallocate partial 
	   allocations of mbufs. As a result, over time, it was 
	   possible to lose mbufs.  The solution was to add cleanup 
	   code to these error paths.

        References:        

	1. CFS.55795.
        2. CFS.57212.

ECO 10 updates:
----------------

ECO AH  25-FEB-1998	Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AH
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AH (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AH (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AH (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AH (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AH

        Problem:

        In some circumstances, the active service counter was decremented
        past zero, resulting in an inability to accept further connections.

        Solution:

        Test to avoid decrementing this counter past zero.

	Reference:

	None.

ECO AI  14-MAR-1988	Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AI
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AI (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AI (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AI (VAX)
        UCX$INTERNET_SERVICES_SEC_V6.EXE        UCX V4.1-12AI (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AI

        Problem:

        Termination AST's for created server processes were being missed,
        leading to inaccurate service counts and occasional RWMBX hangs.

        Solution:

        Rather than queueing an AST each time a server process is started,
        queue only one.  When it triggers, queue another.

        Reference:

        CFS.56956 from Computershare PTY

ECO AK 	10-APR-1998 	Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE                        UCX V4.1-12AK
        UCX$INTERNET_SERVICES.EXE               UCX V4.1-12AK (VAX)
        UCX$INTERNET_SERVICES_SEC.EXE           UCX V4.1-12AK (VAX)
        UCX$INTERNET_SERVICES_V6.EXE            UCX V4.1-12AK (VAX)
        UCX$INTERNET_SERVICES_V6_SEC.EXE        UCX V4.1-12AK (VAX)
        UCX$INETACP.EXE                         UCX V4.1-12AK

        Problem:

        SW "LAND ATTACK" hangs VMS on Alpha and VAX (also called Denial
        of Service Attacks)

        Solution:

        Fixed.

        Reference:

        PTR 30-1-635

ECO AL  17-JUN-1998	Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE     			UCX V4.1 12AL

        Problem:

        A UCX program sends UDP packets to the limited broadcast
        address 255.255.255.255, incorrectly sends to
        {, 255}

        Solution:

        Enhance UCX to behave similarly to Digital Unix, that is, the
        conditions for broadcasting to the limited broadcast address
        are the same two that apply to Digital Unix:
          (1) The socket must be bound to a local interface, and
          (2) The SO_DONTROUTE socket option must be set.
        In an emergency the fix can be disabled by clearing the
        limited_bcast longword.

        Reference:

        PTR 30-1-440

ECO AM  27-JUL-1998	Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE               		UCX V4.1-12AM
        UCX$INETACP.EXE                 	UCX V4.1-12AM

        Problem:

        VMS 6.2 w/ UCX 4.1  Unable to make contact with cluster alias

        Solution:

        The solution was to update the cluster lock name before
        requesting it, in case multiple ARP-based cluster aliases
        are in simultaneous use.

        Reference:

	PTR 70-5-773

ECO AN  31-AUG-1998 	Alpha and VAX

        Images:

        UCX$BGDRIVER.EXE                UCX V4.1-12AN
        UCX$INETACP.EXE                 UCX V4.1-12AN

        Problem:

        UCX 4.1 ECO8 VMS 7.1 MBUF Large Buffer leak; around 180 DATA
        type buffers are lost each day.  Same IPMT as CFS.55196 case.

        Solution:

        Free the mbuf chain in the paths in tcp_usrreq() that were found
        which could allow mbufs to leak.

        Reference:

        PTR 70-5-668

ECO AO  9-NOV-1998	Alpha V7.1 only

        Images:

        UCX$BGDRIVER_SEC.EXE            UCX V4.1-12AO

        Problem:

        Errors occur when building the security driver,
        UCX$BGDRIVER_SEC.EXE.  Need a procedure and/or
        fix to avoid these errors.

        Solution:

        Problem was found in UCX$BGDRIVER_PA_V70_SEC.OPT
        This file was modified to correct the problem.

        Reference:

        PTR 70-5-246

ECO AP  1-DEC-1998	Alpha and VAX

        Sources:

        --None--

        Images:

        UCX$BGDRIVER_SEC.EXE            UCX V4.1-12AP

        Problem:

        Errors still occur when building the security
        driver, UCX$BGDRIVER_SEC.EXE.  Need a procedure
        and/or fix to avoid these errors.

        Solution:

        Changed ipforward_rt and iproute to IPFORWARD_RT
        and IPROUTE (lower case to upper case) in the
        second location of UCX$BGDRIVER_PA_V70_SEC.OPT.
        The first attempt at this fix (70-5-246) only
        changed the first location to upper case.

        Reference:

        PTR 30-2-564
        PTR 70-5-246

ECO AQ   3-DEC-1998	Alpha and VAX

        Images:

        UCX$INETACP.EXE         UCX V4.1-12AQ

        Problem:

        When a node is configured as a cluster alias, UCX$FTPD server
        process does not shut down as it should after some specified
        period of idleness.  This results in very large UCX$FTPD.LOG
        log files.

        Solution:

        Make timer identifiers non-zero, and unique, so that
        cancelling one timer will not cancel all timers.

        Reference:

        PTR 70-5-901 (CFS.63677, TKTBA4813)

ECO AR  11-DEC-1998	Alpha and VAX

        Sources:

        -NONE-

        Images:

        UCX$BGDRIVER.EXE                UCX V4.1-12AR

        Problem:

        Frequent system crashes with heap corruption due to bad
        handling of ip fragments that are received with partial tcp
        headers.

        Solution:

        Correctly handle these types of fragments.

        Reference:

        PTR 70-5-908 (CFS.63957, BCSMB0MQT)
        PTR 30-2-566

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 INETDRIVER Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A	21-APR-1997      Alpha and VAX

        Image:

        UCX$INETDRIVER.EXE      UCX V4.1-12A

	Problem:

	Multiprocessor performance problems.

        Solution:

	Implement a stack lookaside list to reduce variable 
	pool allocations.

	References:

	CFS.50024.
           
ECO 7 updates:
--------------
ECO B   16-Sep-1997     Alpha and VAX

	Images:

	UCX$INETDRIVER.EXE      UCX V4.1-12B

	Problem:

	Recent versions of the INETDRIVER would not load 
	on the Alpha platform.

	Solution:

	Modify a PSECT as well as the Linker .OPT file.

	References:

	CFS.52874

ECO 9 updates:
--------------
ECO C	09-FEB-1998      Alpha and VAX

        Image:
               
	UCX$INETDRIVER.EXE      UCX V4.1-12C

	Problem:

	I/O cancel does not return the OpenVMS error 
	SS$_CANCEL as does the TGV INETDRIVER.

        Solution:

	Added a macro to all return code translations to check
        for a valid UNIX exit code and, in the absence of one,
        return the OpenVMS error code.  This code should 
	address any problems with unusual exit codes.
            

        References:   

	None.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 IPC Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   1-JAN-1997      Alpha and VAX

        Image:

        UCX$IPC_SHR.EXE         UCX V4.1-12A

        Problem:

        Socket library routines used event flags
        allocated by LIB$GET_EF to someone else.

        Solution:

        This problem resulted from a build problem
        wherein LIB$GET_EF was being included in object
        form rather than being called in LIBRTL.
        Corrected the options file.

        Reference:

        CFS.47810

ECO 10 updates:
---------------

ECO B   28-MAY-1998	Alpha only

        Images:

        UCX$IPC_SHR.EXE                         UCX V4.1-12B

        Problem:

        gethostbyname() incorrectly errors when AFR is enabled.
        Alignment faults appear from inside gethostbyname.

        Solution:

        Fixing the source of the alignment faults would likely
        require modifying the database format, which is not feasible
        to do in an ECO and could be very risky.  (Alignment faults
        are only a performance issue, their occurrence should not
        break any functionality.) Rather, we corrected the malformed
        code to properly revert the LIB$SIG_TO_RET exception handler
        in ucx$gethostbyname() prior to its calling into the
        UCX$ACCESS_SHR.EXE library where the alignment faults
        occur.

        Reference:

        PTR 30-1-672, PTR 30-1-245


---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 Telnet Images
---------------------------------------------------------------------------
ECO 2 updates:
--------------
ECO A   16-AUG-1996      Alpha and VAX

        Image:

        UCX$TNDRIVER.EXE        UCX V4.1-12A
	UCX$TELNET.EXE		UCX V4.1-12A

	Problem:

	An outbound TELNET device stoped working if unsolicited
	input was 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.  Sense UCB$V_TEL_OUTBOUND in TN$RLOGIN_TIMER and 
	dismiss the disconnect.

        Reference:

	CFS.42083

	Problem:

	Output escape sequences are incorrect when function keys 
	are held down.

        Solution:

	Limit the number of outstanding characters in the local 
	buffer to half the buffer's size.  This solution prevents local 
	overflow and limits the number of outstanding bytes against 
	the remote host.

        Reference:
        
	CFS.3895

	Problem:

	Applications performing I/O against an outbound TELNET UCB 
	did not know that the connection was 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 
	that begin I/O after the connection is broken do not get 
	any error 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 action will reject any I/O operations that occur 
	after the connection has been broken.
              
	Reference:

	CFS.42083

	Problem:

	Line mode does not work properly; the sessions appear to hang.

        Solution:

	The previously applied optimization has been conditionalized so
        as to be used only when in character mode.

        Reference:

	CFS.43831, CFS.44575, CFS.45061, CFS.45329


ECO 3 updates:
--------------
ECO B	07-NOV-1996	      Alpha and VAX	

	Images:

	UCX$TELNET.EXE                          UCX V4.1-12B
         	
	Problem:

	In character mode, certain escape character sequences are 
	not passed through the connection unless it is 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.

	References:

	CFS.45350


ECO C	04-DEC-1996           Alpha and VAX

        Images:

	UCX$TELNET.EXE   		UCX V4.1-12C
        UCX$TNDRIVER.EXE 		UCX V4.1-12C
        
	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 multicharacter optimization.
	4. Limit the changes through SMG to only those settings that
           are changed by the client.
	5. If the pending output buffer exceeds the saved prompt buffer
	   size, 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


ECO D   04-DEC-1996      Alpha and VAX

        Image:

        UCX$TNDRIVER.EXE        UCX V4.1-12D

        Problem:

        A proxy login could be circumvented by sending unsolicited
        data through the socket before LOGINOUT had a chance to
        run.  All logins are expected to be under the control of
        the TNDRIVER but did 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.  If the proxy check
        fails (i.e., there is no valid proxy for this connection), 
        the normal login mechanism clears UCB$M_JOB before telling the
        terminal driver to start the login.

        Reference:

        CFS.46504

ECO 6 updates:
--------------
ECO E   16-Apr-1997     Alpha and VAX

	Images:

        UCX$TNDRIVER.EXE        UCX V4.1-12E

	Problem:

	VAX System crash in OpenVMS routine 
	IOC_STD$SEVER_UCB called from IOC_STD$DELETE_UCB. 
	At the time of crash, the queue of TN UCBs, headed at
	UCX$TNDRIVER static queuehead, TN$L_FLNK_UCB is corrupt.

	Solution:

	Introduced code prior to the INSQUE to verify that the 
        given element is not already on the queue. If it is, 
        the INSQUE becomes a NOP.

	References:

	CFS.50220

ECO 9 updates:
--------------
ECO F   29-JAN-1998      Alpha and VAX

        Image:

        UCX$TNDRIVER.EXE        UCX V4.1-12F

	Problem:

	System crashed in OpenVMS routine EXE$TIMEOUT
	while servicing a corrupt fork and wait queue.

        Solution:

	The problem occurred because of several factors, the most 
        important of which is that OpenVMS changed the value of the 
        name of a bit position in a TTY UCB (such as a TNDRIVER UCB) 
        in OpenVMS V6.2.  
	In particular, symbol TTY$V_FD_BUSY was defined as bit 
	8 in OpenVMS versions prior to V6.2, and it was 
	re-defined to be bit 10 in V6.2.

        The TNDRIVER distributed for all VAX platforms uses the
        old definition.  For Alpha platforms running OpenVMS V6.2,
        the TNDRIVER built for V6.1 uses the old definition.
        The result is that the wrong bit is being tested on systems
        where the definitions are not synchronized.

        The solution was to devise a new test of the condition
        that works on all platforms.
               
        References:

        CFS.52568.

ECO 10 updates:
---------------

ECO G   5-MAY-1998	Alpha and VAX

        Images:

        UCX$TELNET.EXE                 	UCX V4.1-12G

        Problem:

        OpenVMS Operating Sy V6.2 UCX V PRIORITY 3 REFER Q15732
        SECURITY PROBLEM
        Using the FIND key in TN3270 after connecting to an IBM
        system will grant the user OPER privilege in DCL subprocess
        back on the VMS host.)

        Solution:

        Change STESCRKBD.B32::SPAWN(), wrapping its LIB$SPAWN() call
        with calls to the reset_privs() routine introduced in 1995,
        similar to how TELNET$SPAWN() now works.

        Reference:

        None.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 SNMP Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A	3-MAR-1997      Alpha and VAX

        Image:

	UCX$OS_MIBS.EXE		UCX V4.1-12A

	Problem:

	The SNMP Master Agent failed and exited with an access violation.

        Solution:

        Disabled approprite conditionalized code.

	Reference:

	CFS.44123           

	Problem:

        The OS_MIBS subagent was generating some unknown adapter
        type errors when used in a system that has a DEFQA FDDI
        board.

        Solution:

        Added the DEFQA adapter to the list of supported adapters.

        Reference:

        CFS.49549.

ECO 7 Updates
-------------
ECO B   19-AUG-1997     VAX and Alpha

	Image:

        UCX$MOSY.EXE	UCX V4.1-12B

	Problem:

	Mosy would not allow a source file with extension 
	other than .MY.

	Solution:

	Remove the extension and replace with .DEFS for any 
	extension.

	Image:

        UCX$MIBCOMP.EXE	UCX V4.1-12B

	Problem:

	MIBCOMP would not preserve case of object name 
	when passing to Mosy.

	Solution:

	Quote object name in system call to Mosy.

	Reference:

	CFS.51627.

	Images:

      	UCX$SNMP_SERVER.EXE	UCX V4.1-12B
	UCX$ESNMP_SHR.EXE	UCX V4.1-12B

	Problem:

	User found 10-second maximum timeout to be too short.

	Solution:

	Increase maximum to 60 seconds.

	References:

	CFS.52680.

	Image:

	UCX$ESNMP_SERVER.EXE     UCX V4.1-12B

	Problem:

	Master was not sending traps.

	Solution:

	Corrected a bug that was causing authentication failure.

	References:

	CFS.51266, CFS.52682, CFS.51842.

ECO 9 updates:
--------------
ECO C 22-JAN-1998      Alpha and VAX

        Images:

        UCX$SNMPIVP.EXE		UCX V4.1-12C

	Problem:

	Non-initialization of status variable for 
	snmp_request() routine.

	Solution:

	Corrected.

	Reference:

	PTR 30-3-77.

	Images:

        UCX$OS_MIBS.EXE                         UCX V4.1-12C
          
	Problem:

	The display of physical address for interface group 
	(OID 1.3.6.1.2.1.2.2.1.6) was incorrect:
        - First two bytes incorrect, correct bytes start 
	  at third position, then last 2 are not displayed.
        - Wrong address for display, either mismatched, 
	  or in case of LO0, address displayed when none 
	  should be (exact problem depended on number of 
	  interfaces).

        Solution:

	Correction to string cmp routines that determined match of 
	address to interface name in table read. Also copy of physical 
        address from QIO data structure to application structure.

	Reference:

        PTR 30-1-571

	Problem:

	Display of incorrect next hop 
	(OID 1.3.6.1.2.14.21.1.7), often as 0.0.0.0.

        Solution:

        Change to copy correct data from QIO data structure.

        Reference:

        PTR 30-2-509.

	Problem:

	In-code documentation added for unfinished 
	CIDR change.

	Solution:

	Corrected.

	Reference:

        None.                            
            
	Image:

	UCX$ESNMP_SHR.EXE         	UCX V4.1-12C

	Problem:

	The shridmismat error for applications linked with 
	previous version ofthe ucx$esnmp_shr.exe.

        Solution:

        Inserted GSMATCH=lequal,a,b into options file, where 
	a,b match the values inserted by the linker for the 
	base version of UCX V4.1.

	Reference:

        None.

	Images:

	UCX$ESNMP_SHR.EXE                       UCX V4.1-12C

	Problem:

	Function missing from shareable image for API: inst2ip().

	Solution:

	For Alpha: Add SYMBOL_VECTOR to link options file.
        For VAX: Add VECTOR to macro file.

	Reference:

        None.

ECO D	17-FEB-1998      Alpha and VAX

        Image:

        UCX$ESNMP_SERVER.EXE         UCX V4.1-12D
	SYS$SYSTEM:UCX$OS_MIBS.EXE   UCX V4.1-12D         
	SYS$SYSTEM:UCX$HR_MIB.EXE    UCX V4.1-12D

	Problem:

	Incorrect MIB variable reporting, counts for if group.

	Solution:

	Needed alignment in header file.

	Reference:

        PTR 30-2-377
         
ECO 10 updates:
---------------

ECO E   21-MAY-1998	Alpha and VAX

        Images:

        SYS$SYSTEM:UCX$CHESS_SUBAGENT.EXE       UCX V4.1-12E

        Problem:

        Chess sub-agent example is linked unnecessarily against
        ucx$access_shr.exe and ucx$ipc_shr.exe.  No effect on UCX V4.2
        but good to send out an updated example for users to test
        interoperability against V5.0.

        Solution:

        Remove link of those shareables in the .opt files for Chess
        example.

        Reference:

        None

ECO F   27-MAY-1998	Alpha and VAX

        Images:

        UCX$OS_MIBS.EXE              	UCX V4.1-12F

        Problem:

        Inaccurate counts for ifTable data elements.

        Solution:

        Use values from qio call adapted from lancp code (VMS V7.1)
        (DCL command: mcr lancp show device/counters)

        Reference:

        PTR 30-1-789

        Problem:

        MIB-II subagent aborts if system has pseudo-interface
        configured.

        Solution:

        Correct clearing out of buffer area.  Also, include 
        interface name in error message for easier debugging.

        Reference:

        PTR 30-1-688.

ECO G   7-OCT-1998	Alpha and VAX

        Images:

        SYS$SYSTEM:UCX$HR_MIB.EXE               UCX V4.1-12G
        SYS$SYSTEM:UCX$OS_MIBS.EXE              UCX V4.1-12G

        Problem:

        Code for consistency with V5.
        Checking 64-bit counters; likely never implemented unless
        4.x build to be done on 7.2 Alpha (otherwise #ifdef'ed out)

        Solution:

        For 64-bit counts, check architecture and VMS version,
        adjust qiow parameter accordingly.  Add routine to check VMS
        version at run-time.

        Reference:
		
	PTR 30-3-127

        Images:

        SYS$SYSTEM:UCX$CHESS_SUBAGENT.EXE       UCX V4.1-12G
        SYS$SYSTEM:UCX$HR_MIB.EXE               UCX V4.1-12G
        SYS$SYSTEM:UCX$OS_MIBS.EXE              UCX V4.1-12G

        Problem:

        Fix for ECO C 19-May "robustness".  After unsuccessful close
        was still just trying to re-open, got dupl...

        Solution:

        See under ECO C   19-MAY-1998 for more details.

        Reference:

        PTR 30-2-534

        Images:

        SYS$SYSTEM:UCX$HR_MIB.EXE               UCX V4.1-12G
        SYS$SYSTEM:UCX$OS_MIBS.EXE              UCX V4.1-12G

        Problem:

        SNMP cannot handle display of large number (>700) sockets...

        Solution:

        Change data structure to QIO.

        Reference:

        UCX note #6390
        Images:

        SYS$SYSTEM:UCX$CHESS_SUBAGENT.EXE       UCX V4.1-12G
        SYS$SYSTEM:UCX$HR_MIB.EXE               UCX V4.1-12G
        SYS$SYSTEM:UCX$OS_MIBS.EXE              UCX V4.1-12G

        Sources:

        SYS$COMMON:[SYSHLP.EXAMPLES.UCX]CHESS_METHOD.C

        Problem:

        Chess sub-agent aborts on SET of OID
        1.3.6.1.4.1.36.2.15.2.99.4.1.4.4 to 3 (delete);
        this was on VMS 6.2, DEC C 5.7-004, link with UCX$SNMP:ESNMP.OLB

        Solution:

        An element of "method" data structure was not getting initialized
        within the calling code in esnmp_poll.c.  Both the calling code
        and the example were fixed.  Error showed up only on certain plat-
        forms and in link with .olb, not shareable; could be that under
        certain conditions the problem struct element was getting
        initialized to 0 by chance or because of architecture, DEC C
        version, etc.

        Reference:

        UCX note #6453

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 SDA Images
---------------------------------------------------------------------------
ECO 9 updates:
--------------
ECO A   25-APR-1997      Alpha and VAX

        Image:

	UCX$SDA.EXE     UCX V4.1-12A

	Problem:

        The memory display for large, dynamic buffers 
	is incorrect.

        Solution:

        The information shown was for the last small, 
	dynamic buffer that was displayed.

	Reference:

	Internal report.
              

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 Finger Images
---------------------------------------------------------------------------
ECO 2 updates:
--------------
ECO A   6-SEP-1996      Alpha and VAX

        Image:

	UCX$FINGER.EXE		UCX V4.1-12A

	Problem:

	The Finger client passed an uppercase query instead of 
	lowercase and did not remove quotation marks around the query.

        Solution:        

	Unless quotation marks are used, DCL always converts values to 
	uppercase. Now it checks for the presence of quotes and if 
        they exist, they are removed.  If the query does not contain 
        quotation marks, it is converted to lower case.

	Reference:

	Internal report.


ECO B   18-SEP-1996      Alpha and VAX

        Image:

        UCX$FINGER.EXE          UCX V4.1-12B
	UCX$FINGER_SERVER.EXE	UCX V4.1-12B

	Problem:

	Finger stops looking at system processes once it sees 
	a suspended process.

        Solution:

	Delete the lib$signal call via loop_error in the 
	SYS$GETJPIW loop.

ECO 5 updates:
--------------
ECO C   20-FEB-1997      Alpha and VAX
                  
        Images:

        UCX$FINGER.EXE		UCX V4.1-12C
        UCX$FINGER_SERVER.EXE	UCX V4.1-12C
         
	Problem:

	Finger was not handling set/restore 
	privileges correctly.

        Solution:         

	Save original privileges then restore them.

        Reference:

        Internal report.

ECO D 14-APR-1997

	Images:

        UCX$FINGER.EXE              UCX V4.1-12D
        UCX$FINGER_SERVER.EXE       UCX V4.1-12D

	Problem:

	The Finger client was exiting with an access violation on the 
	following syntax: "FINGER USERNAME /QUALIFIER".

	Solution:

	Improper check added nonexistent users to the tree.


ECO 6 updates:
--------------
ECO E 19-JUN-1997        Alpha and VAX

	Images:

        UCX$FINGER_SERVER.EXE

	Problem:

	The Finger server would not exit after handling a request.

	Solution:

	After request is handled, the socket is closed and the 
	descriptor set to -1. The code then checked for 
	a -1 and fell into a loop waiting for requests (as
	though we were started without a socket). Changed 
	check for socketdesc == -1.
	
	Reference:

	None.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 BIND Images
---------------------------------------------------------------------------
ECO 3 updates:
--------------
ECO A	27-NOV-1996      Alpha and VAX

        Images:

	UCX$ACCESS_SHR.EXE	UCX V4.1-12A

        Problem:

	If one of the records that a given MX record points 
	to cannot be resolved, a UCX$ACCESS_GET_MX call
	failed 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, that record is skipped and the
        code continues.  
        
        Reference:   

	CFS.33206, CFS.41627

ECO 5 updates:
--------------
ECO B    9-JAN-1997      Alpha and VAX

        Image:

        UCX$ACCESS_SHR.EXE      UCX V4.1-12B

        Problem:

        Attempting to resolve a null (zero-length) hostname caused 
        an access violation because of a DEC C problem with generated 
        Alpha code overflowing into the 33rd bit when referencing 
        index =1 of an array. When done from the kernel, this can 
        lead to a loop or a lingering resource lock on the 
        UCX$HOST.DAT file.

        Solution:

        Make sure the length is greater than zero before
        attempting to access the character at [length-1].

        Reference:

        CFS.45918

ECO C   17-JAN-1996      Alpha and VAX

        Image:

        UCX$METRIC.EXE                  UCX V4.1-12C

        Problem:

        The METRIC daemon process would hang after the first
        load report.

        Solution:

        Eliminate a sleep(0) from the main loop.
        This apparently can cause the process to sleep
        forever in some cases.

        Reference:

        CFS.47535.


ECO 9 updates:
--------------
ECO E   19-DEC-1997      Alpha and VAX

        Images:

        UCX$ACCESS_SHR.EXE      UCX V4.1-12C

        Problem:

        Absolete IQUERY calls need to be removed for
        compatibility with other implementations.

        Solution:

        Replace the call to FindHostInfo that uses
        IQUERY with GetHostByAddr().

        Reference:

	None.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 BIND_SERVER Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A	23-DEC1996      Alpha and VAX

        Image:

	UCX$BIND_SERVER.EXE

	Problem:

	If RR ttl is set to less than 5 minutes, the server 
        reset the ttl of cached RR to 5 minutes.

        Solution:

	Change the min_cache_ttl to 0.

	Reference:

	CFS.47406

ECO B   17-FEB-1997      Alpha and VAX

        Image:

	UCX$BIND_SERVER.EXE		UCX V4.1-12B

	Problem:

	Sometimes incorrect root nameservers on the list 
	prevented the resolution of nonauthoritative 
	names from working correctly.

        Solution:

	Check for incorrect root NS records.
        Also update the NAMED.CA file in UCX$CONFIG.COM.
            
	Reference:

	Internal report.

ECO 9 updates:
--------------
ECO D   19-DEC-1997      Alpha and VAX

        Images:

        UCX$BIND_SERVER.EXE

        Problem:

        DNS fails to check for hostnames that contain spaces.

        Solution:

        Correct the dn_expand() to do some validation on the host
        name.

        Reference:

        PTR 30-1-525.

ECO 10 updates:
--------------
ECO E   12-Mar-1998	Alpha and VAX

        Images:

        UCX$BIND_SERVER.EXE		UCX V4.1-12E

	Problem:

        The name server sorts the response based on the subnet locale.
        It shouldn't do that for cluster names.

        Solution:

        Fix ns_req() routine.

        References:

        PTR 30-1-694
	PTR 70-5-694
---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 PWIP Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   16-JAN-1997      Alpha and VAX

        Image:

        UCX$PWIPACP.EXE                 UCX V4.1-12A
        UCX$PWIPDRIVER.EXE              UCX V4.1-12A

        Problem:

        UDP was allowed only on ports 137 and 138.

        Solution:

        In order to allow UDP over all
        port numbers, several things were done including
        simplifying special case of port specific code that
        retrieves the peer IP address from either the
        global name_server_sockaddr_in or the global
        datagram_server_sockaddr_in, to instead obtain the
        information from the new passed parameter,
        and simplifying UDP special case port specific code that
        passed either name_server_sockaddr_in or
        name_server_sockaddr_in in IRP$L_ARG4 to now
        always pass server_sockaddr_in.

        Reference:

        Internal development request.

        Problem:

        Multiple chained UDP datagrams were passed back to
        the user collectively rather than one by one.

        Solution:

        To force individual UDP datagrams to be sent to the 
        user level, one at a time, the interface to pwip_read 
        was changed and it no longer passes back any value.  
        Instead, it calls msgToUser itself each time it 
        develops an mblk_t that describes a single UDP datagram.

         Reference:

         CFS.42878.

ECO B   28-JAN-1997      Alpha and VAX

        Image:

        UCX$PWIPACP.EXE                 UCX V4.1-12B

        Problem:

        Unnecessary error messages in PWIP log caused
        user concern.

        Solution:

        Removed generation of messages added in V4.0
        that contain "IO$M_SHUTDOWN error" string.
        These messages were included at the same time that
        corrective code was added to deal with synchronization
        problems.  The appearance of the messages in the log file
        document when the corrective code was invoked
        redundantly and do not really indicate an error.
        Therefore, they were removed.

        Reference:

        CFS.47933.

ECO C  30-MAY-1997     Alpha  and VAX

	Images:

	UCX$PWIPACP.EXE              UCX V4.1-12C
        UCX$PWIPDRIVER.EXE           UCX V4.1-12C

	Problem:

	ECO B was discovered to have problems interacting 
	with some releases of PATHWORKS.  Symptoms included
	network freezes and system lockups.

	Solution:

	For this release, the PWIP component has been rolled 
	back to base level for 4.1. A more complete solution 
	incorporating the changes of the previous ECOs should 
	be forthcoming.

	Reference:

        Internal reports.

ECO 6 updates:
-------------
ECO D   20-JUN-1997     Alpha  and VAX
	
	Images:


        UCX$PWIPACP.EXE              UCX V4.1-12D
        UCX$PWIPDRIVER.EXE           UCX V4.1-12D
        UCX$PWIPSHUT.EXE             UCX V4.1-12D

	Problem:

	A more complete solution for problems discovered 
	in the ECO B release was needed, which also 
	included the added features of ECOs A and B.

	Solution: 

	Selected portions of previous changes were backed 
	out. A hybrid approach has been used to maintain 
	compatibility with earlier implementations while 
	adding newer desired functionality.


	Problem: 

	Some memory leakage was detected under error 
	conditions.

	Solution: 

	Deallocate mblk as appropriate in error path.

	Reference:

        None.

ECO 9 updates:
--------------
ECO E   22-JAN-1998      Alpha and VAX

        Image:

        UCX$PWIPACP.EXE          UCX V4.1-12E

	Problem:

	Several different symptoms, including crashes, 
	memory corruption, loss of PWIP connections, and so on.

        Solution:

        A variable in routine getChan() was incorrectly 
	declared to be static. The result was that
	if the routine was ever entered simultaneously
        (such as in normal mode and in an AST), data could be 
	corrupted.  This problem went undetected until the 
	latest release of PATHWORKS.  With older versions,
	conditions were such that the routine was never entered 
	simultaneously.  However, the new release of PATHWORKS
        has a different set of calls into PWIP and the problem was
        uncovered. The solution was to make the variable a normal 
        automatic variable.

	Reference:

	Many reports.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 UCP Images
---------------------------------------------------------------------------
ECO 3 updates:
--------------
ECO A   20-NOV-1996      Alpha and VAX

        Image:

	UCX$UCP.EXE          UCX V4.1-12A

        Problem:
                  
	The /REJECT and /ACCEPT lists from communication 
	configuration were not taken upon startup.

        Solution:

	In the START COMM/INIT action routine, set dynamic 
	communication options AFTER the communication 
	has been started instead of before.

	Reference:

	Internal report.
                 
ECO 7 Updates
-------------
ECO B 19-JUN-1997      Alpha and VAX

	Images:

	UCX$UCP.EXE	UCX V4.1-12B

	Problem:

	If the user does not have SYSLCK privilege,
	REMOVE PROXY command removes the permanent proxy 
	but fails to modify active client proxy.

	In both ADD and REMOVE, there were several iterations 
	of the problem.

	Solution:

	Check for SYSLCK privileges before adding or deleting 
	any proxy information. If the user does not have all the
        required privileges, do not modify anything but display 
	the appropriate error message(s).

	References:

 	CFS.46875, CFS.46875

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 BOOTP and TFTP Images
---------------------------------------------------------------------------
ECO 3 updates:
--------------
ECO A   23-OCT-1996      Alpha and VAX

        Image:

	UCX$TFTP.EXE          UCX V4.1-12A        

	Problem:

	The 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 ask only for partial last block.

	Reference:

	CFS.44865.

ECO C   10-SEP-1996		Alpha and VAX

        Image:

        UCX$BOOTP.EXE          UCX V4.1-12C

	Problems:

	BOOTP responded with incorrect IP address in the case of 
	more than 1 Ethernet systems.

        Solutions:

	Modified get_iproute() function. Pass network mask 
	of the iptarget to get_iproute(). Isolate subnet 
	of the iptarget by Anding iptarget with it's network 
	mask. Scan the  routing table for a routing record 
	that matches subnet.  Check for default route. If 
	it is not a default route, check to determine if it is a
        host route. If not, check to see if it is 
	a network route.

	References:

        CFS.42642
        
ECO 5 updates:
--------------
ECO E   11-APR-1997             Alpha and VAX

	Image:

	UCX$TFTP.EXE          UCX V4.1-12E

	Problems:

	1. Concurrent downloads do not work.
 
	2. Concurrent transfers did not work correctly.

	3. On slower systems, the TFTP would not work 
	   correctly when it initially starts up.

	Solutions:

	1. FileByteCount updates have been corrected.

	2. The loop that does the concurrent transfers was 
	   missing a statement to go to the next transfer. 
	   Once corrected, everything started working.

	3. Change the scheduling mechanism. Now new tasks are
	   appended to the list so that they are served FIFO.
	   The algorithm checks the timeout and if less than
	   minimum, it doesn't start another transfer to the same
	   client.

	References:

	CFS.49535, CFS.49605.

ECO 9 updates:
--------------
ECO F   04-FEB-1998             Alpha and VAX

        Image:

	UCX$BOOTP.EXE		UCX V4.1-12F

	Problems:

	BOOTP replies with the wrong server address on a
        multiple interface host.

        Solutions:

	Correct a problem in the subnet_match() routine. Pass subnet
        mask of the BOOTP client to subnet_match(). The responding
        interface must be in the same subnet as the BOOTP client.
                  
	References:
                
	CFS.54174.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 FTP Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A	10-OCT-1996		Alpha and VAX

        Image:

	UCX$FTP.EXE
        
	Problem:

	When wild cards are used to specify the file name 
        for an mget command, the local file specification
	was missing the extension.

 	Solution:

	Corrected.

        Reference:

 	CFS.45570

ECO B	20-JAN-1997	Alpha and VAX

        Image:

        UCX$FTP.EXE		UCX V4.1-12B

	Problem:

	The default directory cannot include a network access 
	string.

	Solution:

	Allow client to include quotes in the default string.
	Modify the server to make NAS part of the device string.

	References:

	CFS.46497.

ECO C 10-APR-1997

ECO D 24-APR-1997     Alpha and VAX

	Image:

	UCX$FTP.EXE             UCX V4.1-12D

	Problems:

	1. Commands read from the file specified with the 
	   /INPUT qualifier were not treated as "batch mode" 
	   commands.

	2. Wildcarded PUTs did not pass the target specification.

	3. The PUT/FDL command failed if the filename included
	   a version (such is the case with PUT/FDL *.*;*).

	4. Verbose messages were displayed by COPY/FTP when not 
	   asked for.

	5. Multiline responses could hang the client.

	6. Improper handling of the target specification occurred 
           when wildcarding files.

	7. RECV creates files named ".;".

	Solutions:

	1. Treat all commands that are not read from the 
	   terminal as "batch mode" commands.

	2. Add another parameter to wldcrd_put_process() to pass 
	   the information.

	3. Merge the "fdl" name modification into the type field 
	   of the file specification; don't just append it to 
	   the name.

	4. Remove the unconditional display of the reply status.

	5. Ensure that FTP client adheres to RFC 959's definition 
	   of multiline response mode.

	6. Treat the target specification has the directory specification
	   (only) when the input is wildcarded.

	7. When receiving files, merge the local name into the 
	   string or the file received appears as ".;".

	References:

	CFS.44662, CFS.49881, CFS.47027, CFS.49553, CFS.50890.

ECO E  28-May-1997     VAX and Alpha

	Image:

        UCX$FTP.EXE             UCX V4.1-12E

	Problems:

	1. Prompting was not working when mget-ing or mput-ing 
	   files; e.g. answering 'y' caused all subsequent files 
	   to be copied without any further prompting. When 
	   multicharacter replies (e.g.: "Yes"") were typed in, 
	   each character was interpreted as a separate answer.

	2. "Literal" wildcard characters and multiple dots in 
	    remote file specs did not work correctly when GETing
	    and PUTing files.

	3. Wildcard substitution in target specification did not work as 
	   intended (problems with get and copy /FTP).

	4. Copy /FTP caused an access violation by performing an unnecessary 
	   CWD /.

	5. /INPUT files were opened with write access, as shown 
	   by a privilege error generated when the protection code 
	   of the file did not allow write access.

	6. There were a number of reported problems with processing 
	   remote and local OpenVMS logical names in file specifications when 
	   PUT/GETing files or using copy /FTP.

	7. In non-VMS-Plus mode, parseable remote names resulted in 
	   incorrect local file names (e.g.: the name of the temp 
	   file used to store the NLST results).

	Solutions:

	1. Changed wildcard_[get,put]_process() to use a local copy 
 	  of cnfrmflg (tcnfrm), rather than permanently altering 
 	  the global. Increased the buffer size used for prompting. 
	  This corrects reading 'extra' reply characters if multiple 
	  character answers are typed in.

	2. Corrected recv_data() to always call ConvertFilenameToVMS(). 
	   Corrected a number of subtle problems in 
	   ConvertFilenameToVMS(). Added new macro ftp_isvalidfnamec_().

           - Changed FTP$GET() in ftp$client_cmds.c to call 
	     wldcrd_get_process() only if "wild chars" found, 
	     _and_ (parse) [i.e., globbing]. 

   	   - Changed FTP$PUT() in ftp$client_cmds.c to allow 
	     wildcard characters in the remote filename, if globbing 
	     (i.e. wildcard expansion) is off.

	3. Corrected wildcard expansion in wldcrd_get_process(). If 
	   the local file spec contained a wild card, the entire 
	   remote specification, including the node, device, and directory 
	   was substituted from the wildcard onward. Now every remote
   	   file specification is SYS$PARSED with syntax check option, and 
	   only the file extension and revision number are used as 
	   substitutes for the wild card(s).

	4. In the DCL_Copy_Command() function, checking [length-1] 
	   on a zero length string resulted in checking the byte 
	   BEFORE the char string's starting address. About 10 
	   lines of code was rewritten.

	5. Corrected freopen() on /input file to use "r" instead 
	   of "r+".

	6. Changed FTP$GET() to always SYS$PARSE() with syntax check 
	   only.

	7. In wldcrd_get_process() use the RMS 'name' block attached 
	   to file_fab when SYS$PARSE -ing NOT the one attached to 
	   the local fab. Corrected bug in same where remote file names 
	   containing wildcard characters caused subsequent files 
	   to get an incorrect name. Corrected problem where the
           user could not specify the target name of files containing 
	   wild card characters.

	References:

	CFS.47029, CFS.44883, CFS.48738, CFS.47246, CFS.48680, 
	CFS.49553, CFS.51498, CFS.50203.

ECO 6 updates:
-------------
ECO F    18-JUN-1997        VAX and ALPHA

	Image:

        UCX$FTP.EXE              UCX V4.1-12F

	Problems:

	1. COPY/FTP could not handle non-OpenVMS directory path formats.

	2. Double /incorrect messages observed when PUTing a local, 
	   locked file.

	3. USER xxx yyy (where xxx is username and yyy is password) no longer 
	   worked in /input command files.

	Solutions:

	1. Reworked the DCL_Copy_Command() function to enable 
	   the use FTP/copy with non-Open VMS servers. Note that 
           non-OpenVMS directory specifications do have to be enclosed
           in double quotation marks.

	2. Added an extra SYS$PARSE in wldcrd_get_process() when 
	   parsing remote to local file spec. Made minor changes to 
	   getreply() to ensure the software always returns a status. 
           Added an 'early' sys$open attempt in wldcrd_put_process(), and
   	   FTP$PUT() to do an early open of the local file so that 
   	   locked file is detected, prevents the sending of the 
	   STOR command, opening a data channel, etc. on such files. 

	3. Enhanced login_prompt() so that it can deal with USER 
	   xxx yyy passed on the same line in an /input file, while 
	   preserving all conceivable other legacy behaviors (with 
	   or without the USER keyword, username / password on the
   	   same, or separate lines).

	References:

	CFS.48680, CFS.44943, CFS.51434.

ECO 7 Updates
-------------
ECO H   18-SEP-1997 Alpha and VAX

	Images:

     	UCX$FTP.EXE         UCX V4.1-12H
     	UCX$FTPC.EXE   UCX V4.1-12H
     	UCX$FTPD.EXE   UCX V4.1-12H

	Problem:

	The "Get node::file" does not work.

	Solution:

	Use SYS$OPEN instead. 

	Reference:

	CFS.52398.

	Problem:

	PUT/FDL does not work to another UCX system. 
        Code to switch out of VMS-Plus mode had been removed.

	Solution:

	The code was replaced.

	Reference:

	CFS.52822.

	Problem:

	MRS field not sent in .FDL file. A previous change 
	caused LRL to be sent instead of MRS.

	Solution:

	The change has been removed.

	Reference:

	CFS.52822.

	Problem:

	It was possible to simultaneously be in VMS and VMS 
	Plus modes. This caused the "DIR" command to be 
	equivalent to "DIR/FULL." The correction for this 
	problem is what caused PUT/FDL to break.

	Solution:

	Do not allow the two to be set at once.

	Reference:

	CFS.52822.

	Problem:

	PUT/FDL file.typ;ver fails with incorrect filespec 
	when strncpy does not null-terminate the output 
	string.

	Solution:

	Explicitly null-terminate the output string.

	Reference:

	CFS.52822.

	Problem:

	PUT/FDL puts incorrect name in FDL file. In the case 
	of "PUT/FDL a.b c.d", "c.d" was inserted as the 
	filename.


	Solution:

	Distinguish between VMS-Plus mode and PUT/FDL. In 
	the former case, the output file should be the 
	name. In the latter case, the input file.

	Reference:

	CFS.52822.

	Problem:

	Get from magtape with large blocksize breaks. Code 
	used wndsiz as FAB$W_USZ. When the blocksize was 
	larger than wndsiz, a data overrun occurred.

	Solution:

	Use the entire buffer size, which is now fixed at 64k.

	Reference:

	CFS.52862.

ECO 8 Updates
-------------
ECO I	31-OCT-1997	Alpha and VAX

	IMAGES:

        UCX$FTP.EXE	UCX V4.1-12I

	Problem:

	The loop which parsed the list of filenames 
	would return a CLI$_ABSENT. This status is a 
	warning and since the default ERRORLEVEL is 
	SUCCESS, FTP would exit when a PUT or GET was 
	performed if the command came from a command 
	procedure or batch job.

	Solution:

	Return FTP$_NORMAL from these routines.
	
	Reference:

	None.

ECO 9 updates:
--------------
ECO K   05-FEB-1998     Alpha and VAX

        Image:

        UCX$FTP.EXE             UCX V4.1-12K

	Problem:

	The FTP initialization file FTPINIT.INI is not used
	when FTP executes in batch mode.

	Solution:

	Correct the code path to place the FTP initialization
	into the common path independent of whether the FTP
	client is executing on a DC$_TERM.

	Reference:

	PTR 30-1-605, CFS.55947.

ECO L   05-FEB-1998     Alpha and VAX

        Image:

        UCX$FTP.EXE             UCX V4.1-12L

	Problem:

	Internal problems caused by the presence of the
	FTPINIT.INI file.  The DCL command line is lost
	if the file exists.

	Solution:

	Process the initialization file only after having
	parsed the command line.

	Reference:

	Internal testing.

ECO M	05-FEB-1998     Alpha and VAX

        Image:

        UCX$FTP.EXE             UCX V4.1-1M

	Problem:

	If the local source file of the COPY/FTP command
	does not exist (or an error signaled), that error
	is not returned to DCL for examination of $STATUS.

	Solution:

	Examination of the code revealed that the status
        FTP$_NORMAL is always being returned by the central
        FTP PUT routine, even after it signals the error.
        In addition, it does not signal the error in typical
        FTP fashion.

        The code has been modified to signal an appropriate
        error and to return an error indication to DCL.
                                          
	Reference:

	PTR 30-1-618, CFS.56104.

ECO 10 updates:
---------------

ECO N   09-FEB-1998	Alpha and VAX

        Image:

        UCX$FTP.EXE             	UCX V4.1-12N

        Problem:

        The PUT command send an unwildcarded file in its
        uppercase OpenVMS format, which is not acceptable for UNIX
        systems.

        Solution:

        When the responsibility for uppercasing moved to the
        caller of the common 'put' routine, the appropriate
        code needed in the unwildcarded put routine was
        never implemented.  The file's name from the NAM
        block is now lowercased if the connection is not in
        VMS-Plus mode and uppercase enforcement is disabled.

        Reference:

        CFS.55993 (PTR 30-1-609).

ECO O   25-JUN-1998 	Alpha and VAX

        Images:

        UCX$FTP.EXE                     UCX V4.1-12O

        Problem:

        FTP will not allow one to output results from DIR/OUT to a
        directory owned by an identifier when DISKQUOTAs are enabled
        on the volume.

        Solution:

        In dir_lst_rqst(), do not use FAB$M_TMP flag when creating
        user-specified DIR/OUT file, and no longer SYS$ENTER() it.

        Reference:

        PTR 30-1-733

ECO P   10-AUG-1998	Alpha and VAX

        Images:

        UCX$FTP.EXE                     UCX V4.1-12P

        Problem:

        FTP: 'Directory/FTP' output wrongly displayed when filename
        sizes are 20 characters (names are concatenated)

        Solution:

        Add one space to enforce at least one blank between columns.

        Reference:

        PTR 70-5-756

ECO Q   11-AUG-98	Alpha and VAX

        Images:

        UCX$FTP.EXE                     UCX V4.1-12Q

        Problem:

        FTP: Client command 'user username password' no longer works
        in a DCL procedure file.
        FTP: user xxx yyyy (xxx is username, yyy is password) is not
        working in FTP command procedure.

        Solution:

        The fix was ported from a V5 fix.
        Change ftp$prompt() to check the variable fromatty rather than
        stdin_specified to determine when to use C I/O and when to
        use SMG. Modified login_prompt() to accept input that is not
        from a proper terminal by testing both stdin_specified and
        fromatty.

        Reference:

        PTR 70-5-531, PTR 70-5-775

ECO R   25-AUG-98	Alpha and VAX

        Images:

        UCX$FTP.EXE                     UCX V4.1-12R

        Problem:

        FTP: in batch mode fails to set $status to error

        Solution:

        Port from 5.0.  Change in ftpget and ftpput.

        Reference:

        PTR 70-5-689

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 FTPD Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A	04-OCT-1996	Alpha and VAX

        Image:

        UCX$FTPC.EXE             UCX V4.1-12A

        Problem:
     
	Memory creep occurred when ls and dir commands were issued.
	Repeated FTP ls and dir commands used virtual memory 
	and did not return it until the FTP connection was
	broken and the server child process exited.

 	Solution:

	Ensure LIB$FREE_VM is called with the same memory 
	address as LIB$GET_VM. 
	Remove some calls to malloc() and alloc() that lead 
	to large memory creep.

        Reference:

 	CFS.45158.

ECO B   07-NOV-1996     Alpha and VAX

        Image:

        UCX$FTPC.EXE             UCX V4.1-12B

        Problem:

	Structure record is not supported in image mode.

 	Solution:

	Added the support for File type Image and 
	Structure Record to send_normal_bin(). 
	Also added support function doubleFF().

        Reference:

 	CFS.29927.

ECO C   10-APR-1997

ECO D   24-APR-1997     Alpha and VAX

	Images:

       UCX$FTPC.EXE             UCX V4.1-12D
       UCX$FTPD.EXE             UCX V4.1-12D

	Problems:

	1. The CWD command does not accept a network access 
	   string.

	2. Lines in directory listings are terminated 
	   incorrectly.

	3. UNIX-formatted specifications are not translated 
	   correctly.

	4. Latent problem with anonymous access determined 
	   from code review.

	5. Auditing does not show actual file specifications; 
	   it shows only what the user specified.

	6. Problems with rmd() [delete directory] 
	   specifications.

	7. Problems with mkd() [create directory] 
	   specifications.

	8. Correct misspellings.

	9. Several operations return errors but do not tell 
	   why the operation failed.

	10. STOU (store unique) creates bizarre file names 
	    that are not unique for the given time period.

	11. Loss of channels and mishandling of file 
	    specifications.

	12. The "SITE HELP" command generates a multiline 
	    response even if disabled.

	13. When wildcarding against the server and either a 
	    different directory or a search list or rooted 
	    directory is used, operations fail.

	14. Possible stack corruption caused by an 
	    asynchronous QIO with an IOSB on the routine 
	    stack; the routine has exited.

	15. Peculiar handling of the directory specified to 
	    CWD.

	16. File type checks can fail for unknown reasons.

	17. Non-OpenVMS directory listings should appear in 
	    lowercase.

	18. Various DELETE deficiencies.

	19. Correct login failures with certain passwords.

	20. Sites that have a large number of FTPC processes 
	    experience FTPD hangs.

	21. Problems with exitmsg().

	Solutions:

	1. Add support for a network access string.

	2. Terminate output lines with NVT (),
	   not just \n ().

	3. Replace the broken UnixToVms() routine and include 
	   a status return.

	4. Change `AnonymousUser' flag to be an int instead 
	   of a short; the handling was incorrect.

	5. Move auditing into lower level routines where the 
	   information is now available.

	6. Change rmd() to use RMS to perform the operations; 
	   RMS specs are now fully supported.

	7. Change mkd() to use RMS to perform the operations; 
	   RMS specs are now fully supported.

	8. Corrected spelling of several messages.

	9. Implement RFC 959 multiline responses. This can 
	   be defeated by either specifying a hyphen (`-') 
	   as the first character of the password (per RFC
           959) or setting the logical name
	   UCX$FTPD_MULTILINE_DISABLE.

	10. Use the RMS maximize version flag.

	11. Perform the RMS $PARSE and $SEARCH operations and 
	    pass a FAB around, instead of a name. FTPC now 
	    has three FABS and uses a maximum of three 
	    channels.

	12. Correct the "SITE HELP" command, which violates 
	    RFC 959's definition of multiline responses 
	    concerning if they are enabled or disabled.

	13. Expand the file names properly to ensure that 
	    the files are accessible once their names have 
	    been returned. Rooted directories, search lists, 
	    and third-party node, device and directory 
	    strings now work properly.

	14. Remove the IOSB because the code does not check it.

	15. Change CWD to use RMS to $PARSE and establish 
	    the default directory properly.

	16. Change routine check_filetype() to return an 
	    exit status.

	17. Perform the conversion properly, paying close 
	    attention to the quoted areas of the file 
	    specification strings.

	18. Allow DELETE to use the multiline response 
	    formats. Show what you deleted and what you 
	    could not delete and why (if multiline enabled).

	19. The password and password2 buffers were being 
	    mistreated and any that contained a null byte 
	    caused password verification to fail.

	20. Increase the MAX_SESSIONS to produce a larger 
	    table.

	21. The structure was handled as an array when the 
	    structure definition is available.

	References:

	Internal and external reports.


ECO E   30-MAY-1997    Alpha and VAX

	Images:

        UCX$FTPC.EXE             UCX V4.1-12E
        UCX$FTPD.EXE             UCX V4.1-12E

	Problems :

	1. Entering a user name such as "ANONYMOUS " 
	   (with an extra space) would bypass anonymous logging.

	2. Code review spotted a problem with reading the 
	   extended logging logical name.

	3. There was a quota problem with passive sockets.

	4. Error code 550 was sent to the client when 
	   reporting a successful file deletion.

	5. Deleting a locked file caused the UCX$FTPC 
	   process to crash.

	6. A number of problems were observed with logging 
	   errors. Extra characters at the end of the message
	   and missing separators were seen. Some errors were
	   not logged.

	7. Deleting multiple (wildcard-selected) files caused 
	   the client to hang if multiline responses were 
	   disabled. In such case, the server would not send
           any status or error messages to the client,
	   and the client would wait for a reply until it 
	   timed out.

	8. A code review uncovered several errors in 
	   ftp$server_ftpc.

	9. An access violation occurred when 'mput'ing a locked file. 
	   This error was traced to attempting to clean up a resource 
	   that had not been allocated.

	Solutions:

	1. Changed function user() to be less sensitive to 
	   spaces surrounding the user name when comparing 
	   to ANONYMOUS.

	2. Corrected reading of extlog in main(). The pointer 
	   was not de-referenced after reading the logical name.

	3. In createpasvsock(), the socket receive quota  
	   was not set, so a socket QIO would block forever
	   when done with IO$M_LOCKBUF. A setsockopt() call, 
	   to set the quota like it is done in createdatasock(). 
	   For easier maintenance, a new function 
	   ftp_setwindowsize() was created to perform this, 
	   called from both create*sock() functions.

	4. In function dele(), code 250 was substituted for 
	   the 550.

	5. In function dele(), error_text is now used instead 
	   of the uninitialized global ErrorMessage.

	6. LogErrorBuffer is now properly initialized, 
	   and errors are always logged.

   	   - Multiple exit paths in dele() were eliminated from 
	     the while(TRUE) loop.

   	   - The software no longer uses ReplyBuffer for building 
	     status/error messages.

   	   - Included a period (.) in sendermsg() after the last 
	     item on the format list of sprintf when composing 
	     the mailbox message. UCX$FTPD was looking for this 
	     terminating period when parsing the message, and 
	     messages ended up improperly terminated if the period
	     was omitted at the end of the message.

   	   - Ensured that messages never send blank strings by setting 
             any blank strings to "-". This solution prevents the UCX$FTPD's 
	     sscanf() reading message components into the wrong variable. 
             The software checks for NULL pointers passed in, sending 
             a dash "-" instead. Replaced all " "-s with NULL -s in 
	     sendermsg() calls.

	7. New logic was added in dele() to trace if 
	   any messages were sent.  If not, the final (summary) 
	   message is forced.

	8. In SetupAnonymousDirectories, GetErrorMessage() now 
	   assigns the return value to ErrorMessage.

   	   - In translate_error_message() the format string 
	     %X08X"  was replaced by the correct  ""%.8X".

   	   - Eliminated all malloc() and calloc() calls inside 
	     functions, as recommended before, EXCEPT the 
	     VMS-Plus /Linked List related ones. Instead of 
	     allocating memory inside functions, the softrware uses
     	     static var-s.

   	   - In sendermsg() and postrply(), changed QIO to QIOW. 
	     It seemed dangerous to use a local buffer with 
	     asynch IO.

   	   - In appe_vms_plus_bin changed QIO to QIOW, where the 
	     software was executing a SYS$WRITE of the buffer just 
	     read, without synchronization.

   	   - In appe_normal_bin changed QIO to QIOW, where the software
	     was executing a SYS$PUT of the buffer just read, 
	     without synchronization.

	9. In all appe*, send* and recv* file functions, added 
	   flags to prevent de-allocating/cleaning
	   up a resource if it has not been successfully allocated.


	References:

	CFS.51498, CFS.44943, CFS.49461, CFS.49842.


ECO 6 updates:
--------------
ECO F   18-JUN-1997     Alpha and VAX

	Images:

        UCX$FTPC.EXE                 UCX V4.1-12F
        UCX$FTPD.EXE                 UCX V4.1-12F

	Problems:

	1. Several reported problems when attempting to read 
	   read-only files.

	2. Problems and access violations with anonymous FTP logging.

	3. Random access violations when 'GET'ing files with 
	   insufficient privileges.

	4. When listing directories, a cr-lf is inserted 
	   after the file name if it is a long name. This 
	   confuses some 'automated' clients.

	5. Code review discovered several problems in 
	   ftp$server_ftpd.c.

	Solutions:

	1. Changed check_filetype() to use SYS$ASSIGN as it 
	   did several versions ago. The combination of flags 
	   used with SYS$OPEN had an unexpected side effect of 
	   an implied 'write' privilege. This caused 'get' 
	   attempts to fail when the user had read-only privileges
	   on the file.

	2. In a number of places, corrected the 
	   write_anonymous_log() call, where an incorrect 
	   argument number was specified and /or parameters 
	   were passed in the wrong order. This was causing 
	   failures in logging some anonymous transactions
	   such as get and put and apparent access violations.

   	   Wherever write_anonymous_log() is called, a 
	   distinct status variable tracks logging 
	   related errors, and an error is not returned from 
	   the function that called it if the log call fails.

	3. In send_vms_plus_bin(), after the 
	   fdlgenerate_in_mem() call, the translate_error_code() 
	   call was made with error_text instead of &error_text.

	4. Added a new variable 'glo_lineup_dir' and /sys logical name
   	   UCX$FTPD_DIR_CR_DISABLED to govern the insertion 
	   of cr-lf -s in directory listings where the name of 
	   the file is too long.


	5. Changed QIO to QIOW wherever a local iosb was used.

   	   Changed name of global variable 'status' to 
	   'glo_status'. In some functions, where a local 
	   'status' was not declared, the global variable was
	   used, resulting in side effects.  

           Declared local 'status' variables in functions that did 
           not have one.

   	   In pass(), took out the extraneous/unnecessary 
	   FAILURE(status) processing in the initial 
	   user_anonymous processing. 

	References:

	CFS.50890, CFS.51487, CFS.51803.

ECO 7 Updates
-------------
ECO H   18-SEP-1997 Alpha and VAX

        Images:

        UCX$FTPC.EXE         UCX V4.1-12H

        Problem:

        The "Get node::file" is not functioning.

        Solution:

        Use SYS$OPEN instead. Note that you still cannot get
        the dir flag of a remote file as of V7.1, making it
        possible to copy a remote directory.

        Reference:


        CFS.52398.

        Problem:

        PUT/FDL does not function when issuing with another UCX system.
        The code to switch out of VMS-Plus mode had been removed.

        Solution:

        The code was replaced.

        Reference:

        CFS.52822.

        Problem:

        MRS field not sent in .FDL file. A previous change
        caused LRL to be sent instead of MRS.

        Solution:

        The change has been removed.

        Reference:

        CFS.52822.

        Problem:

        It was possible to simultaneously be in OpenVMS and VMS
        Plus modes. This condition causes the "DIR" command to be
        equivalent to "DIR/FULL." The correction for this
        problem is what caused PUT/FDL to break.

        Solution:

        Do not allow the two modes to be set at once.

        Reference:

        CFS.52822.

        Problem:

        PUT/FDL file.typ;ver fails with incorrect filespec
        when strncpy does not null-terminate the output
        string.

        Solution:

        Explicitly null-terminate the output string.

        Reference:

        CFS.52822.

        Problem:

        PUT/FDL puts wrong name in FDL file. In the case
        of "PUT/FDL a.b c.d", "c.d" was inserted as the
        filename.


        Solution:

        Distinguish between VMS-Plus mode and PUT/FDL. In
        the former case, you want the output file as the
        name. In the latter case, you want the input file
        as the name.

        Reference:

        CFS.52822.

        Problem:

        A 'get' from magtape with large blocksize breaks. Code
        used wndsiz as FAB$W_USZ. When the blocksize was
        larger than wndsiz, a data overrun occurred.

        Solution:

        Use the entire buffer size, which is now fixed at 64k.

        Reference:

        CFS.52862.

        Distinguish between VMS-Plus mode and PUT/FDL. In
        the former case, you want the output file as the
        name. In the latter case, you want the input file
        as the name.

        Reference:

        CFS.52822.

        Problem:

        Get from magtape with large blocksize breaks. Code
        used wndsiz as FAB$W_USZ. When the blocksize was
        larger than wndsiz, a data overrun occurred.

        Solution:

        Use the entire buffer size, which is now fixed at 64k.

        Reference:

        CFS.52862.

ECO 8 Updates
-------------
ECO I   31-OCT-1997     Alpha and VAX

	IMAGES:

	UCX$FTPC.EXE		UCX V4.1-12I
	UCX$FTPD.EXE		UCX V4.1-12I

	Problem:

	The code was changed to use a fixed value of 
	32767 for FAB$W_USZ in send_normal_bin() and 
	send_vms_plus_bin(). In cases where block I/O 
	was being performed (all VMS-Plus cases, and 
	IMAGE non-VMS Plus), this caused bytes to be 
	lost, since block I/O is always performed on 
	a block boundary. In particular, with 32767, 
	the last byte of the 32K was lost, every 32K.

	Solution:

	The code was changed to use 32768 instead. This 
	has been written as 64*512 to emphasize the fact 
	that it should be a multiple of 512 bytes.

	References:

	CFS.54689, CFS 55083, CFS.55256.

ECO 9 updates:
--------------
ECO K   29-JAN-1998      Alpha and VAX

        Image:

        UCX$FTPC.EXE        UCX V4.1-12K

	Problem:

	CWD only reports syntax errors when attempting to
	establish a new default directory even though the
	device and/or directory strings might be invalid.

	Solution:

	The $PARSE SYNCHK option was being used when parsing
	the new default directory.  Turning this off allowed
	the device and directory strings to be checked for
	validity and existence.

	Reference:

	PTR 30-1-549.

ECO L   30-JAN-1998      Alpha and VAX

        Image:

        UCX$FTPC.EXE        UCX V4.1-12L

	Problem:

	The command `CWD /' returns an error.

	Solution:

	Treat `CWD /' as synonymous with `CWD ~' and `CWD':
	set the default to SYS$LOGIN:

	Reference:

	CFS.56290.

ECO M   05-FEB-1998       Alpha and VAX

        Image:

        UCX$FTPC.EXE        UCX V4.1-12M

	Problem:

	RENAME does not handle wildcard characters as it
	used to.

        Solution:

	Recode RNTO action routine to handle wildcards
	as well as multiline output.

	Problem:

	CWD does not handle logical names properly when they
        are expressed without a colon (:) at the end.

        Solution:

        Add a check for a logical name when deciding if the
        string needs to be translated from UNIX to OpenVMS format.

        Reference:

	CFS.54606, PTR 30-1-523.

ECO 10 updates:
--------------

ECO N   28-MAY-1998	Alpha and VAX

        Images:

        UCX$FTPD.EXE                         	UCX V4.1-12N

        Problem:

        When a communication number of several ftp clients and ftp
        server exceeded 1000000 times, an ftpc process of UCX isn't
        made.

        Solution:

        Reset the session_sequence counter when it exceeds 999999.

ECO O   20-AUG-1998	Alpha and VAX

        Images:

        UCX$FTPD.EXE            		UCX V4.1-12O

        Problem:

        FTPD: Server hangs in LEF state after getpeername() failure.

        Solution:

        Reenable ASTs before returning in all cases.  Always return a
        value when returning from startup_session().

        Reference:

        PTR 70-5-827

ECO P   10-SEP-1998	Alpha and VAX

        Images:

        UCX$FTPC.EXE                    	UCX V4.1-12P

        Problem:

        FTP 'put' of file named 'TT' may overwrite UCX$FTPSERVER.COM

        Solution:

        Fixed.

        Reference:

        PTR 70-5-765



---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 CFS_SHR Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   9-SEP-1996      Alpha and VAX

	Image:

        UCX$CFS_SHR.EXE                    
	 
	Problems:

        When the NFS 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.  Thus the file appears 
        to be missing its tail or have extra bytes at the end.

        Solution:
	
	If enabled by modus_operandi bit ppda$v_fake_mtime, 
	deduct a microsecond from mtime of unconverted files.  
	This solution 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 B   06-NOV-1996      Alpha and VAX

        Image:

        UCX$CFS_SHR.EXE

	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.

ECO C   13-FEB-1997      Alpha and VAX

        Image:

        UCX$CFS_SHR.EXE

	Problem:

	With the Alpha architecture, one of the routines 
	called within BFS$$SIGNAL() siezes the hardware 
	console window (instead of putting a message out 
	to OPCOM). This behavior is annoying for the	
	user.

        Solution:

	Remove stale file handle message and recover from this
        condition so the message has minimal utility.

	Reference:

	CFS.41421.

	Problem:

	When name conversion is enabled for a non-OpenVMS 
	client, the server confuses regular files and 
	directories when they have the same name (except 
	.ext) and the file is multi-versioned.

        Solution:                      

	One of the checks for OpenVMS client was changed 
	to check for name conversion.
                    
	Reference:

	CFS.46887, CFS.48850.

ECO D   4-MAR-1997      Alpha and VAX

        Image:

        UCX$CFS_SHR.EXE			UCX V4.1-12D

	Problem:

	Filename extensions for regular files may 
	be stripped for bound volume sets. The directory 
	record has a null FIB$B_FID_RVN if the file is on 
	the same member volume as the directory.

        Solution:

	If FIB$B_FID_RVN is null, replace it with the 
	one from the filehandle.

	Reference:

	CFS.49421, CFS.35040.


ECO 9 updates:
--------------
ECO E   30-MAY-1997      Alpha and VAX

        Image:

        UCX$CFS_SHR.EXE         UCX V4.1-12E

        Problem:

        8-bit filename support with /name_conversion does not
        work correctly.  The 8-bit hexidecimal value was not being
        converted to the octal string correctly.

        Solution:

        Corrected missing information in $FAO call.

        Reference:

        CFS.50214.

        16-Feb-1998     Alpha only

        Images:

        UCX$CFS_SHR.EXE         UCX V4.1-12E

        Problem:

        On Alpha, if two threads enter the BFS$$SIGNAL routine,
        they can be combined.  This situation can lead to an
        assortment of symptoms, including access violation,
        corrupted stack, SS$_OPCDEC, and looping on thread
        rundown trying to unlock an RDCB not owned by this thread.

        Solution:

        Initialize the stored ATCB pointer for
        Alpha-conditionalized code, not just for VAX.

        Reference:

        CFS.45425, CFS.50080.

ECO 10	updates:
----------------

ECO F   21-SEP-1998	Alpha and VAX

        Sources:

        CCF.H
        CFS.H
        CFS_BM.C
        CFS_DESCRIP.MMS
        CFS_MISC.C

        Images:

        No image was built for release.

        Problem:

        CFS does not compile in debug mode.

        Solution:

        Port fixes from 5.0.

        References:

        PTR 30-2-547

ECO G   23-Jul-1998	Alpha and VAX

        Images:

        UCX$CFS_SHR.EXE                         UCX V4.1-12G

        Problem:

	Under extremely heavy usage, the system could crash in
	SSRVEXCEPT.

        Solution:
	
	Remove fix that caused the problem.

	Reference:

	PTR 30-1-760

ECO H   28-SEP-1998	Alpha and VAX

        Images:

        UCX$CFS_SHR.EXE				UCX V4.1-12H

        Problem:

        Analyze Container/Repair fails on a saved backup/noimage
        from a 20GB disk.

        Solution:

        Increase the length of the structure element to a long.
        Remove the reserved word that was used for alignment purposes.
        Rename the variable to nbit$l_size to avoid confusion about
        its size.  Fix format statements that assumed that nbit$w_size
        was a word.

        Reference:

        PTR 70-5-849.

ECO I   5-OCT-1998	Alpha and VAX

        Images:

        UCX$CFS_SHR.EXE				UCX V4.1-12I

        Problem:

        NFSserver consumes 100% CPU time.
        1. 100% cpu time in CUR state.  This problem showed as a loop
        in BFS$CLOSE, an EXEC AST is queued when an RDCB is marked for
        delletion.
        2. NFS$SERVER process hangs in LEF state. This problem showed
        an ACCVIO doing an INSQUE in BFS$$CACHE module.
        3. NFS$SERVER process hangs in LEF state.

        Solution:

        Rewrite the thread AST enable and disable code.
           $$RESUME will always disable ASTs.
           $$WAIT will only enable ASTs if not returning to a thread.
           $$STARTUP will only enable ASTs if not returning to a thread.
           BFS$$AST_ENABLE will always enable ASTs.
           BFS$$AST_DISABLE will always disable ASTs.
           $$AST_ENABLE will always enable ASTs.
           $$AST_DISABLE will always disable ASTs.
        Used a BFS$$SLEEP(500) instead of scheduling another EXEC AST
        and waiting.
        Fixed the code in BFS$$CACHE that kept the state of the RDCB
        after forcing other threads to run.
        Added checking for a RDCB that could be removed from the LRU
        cache before attempting to lock it.
        Fixed the code in BFS$$CACHE_CHECK that kept state about the
        LRU cache after forcing other threads to run.
        Made the $UNLOCK_RDCB in BFS$WRITE for changing the size of a
        file to be unconditional.
        Made the $LOCK_RDCB in BFS$WRITE and BFS$READ conditional based
        on the passed in channel.
        Added conditional code based on building a debug version.  Also
        added a stack trace which gets generated on exceptions.

        References:

        PTR 70-5-774

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 DNFS Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A    24-SEP-1996      Alpha and VAX

        Image:

        UCX$DNFSACP.EXE		V4.1-12A

	Problem:

	UCX 4.0/4.1 clients can not operate with 
	TCPware server.

        Solution:	                       	

	Delete code that prevented the interoperation.
        
	Reference:

	CFS.40279, CFS.42359.

	28-FEB-1997      Alpha and VAX

        Image:

	UCX$DNFSACP*.EXE	V4.1-12A

	Problem:

	MOUNT does not require Portmapper if the
        server's MOUNT port has gone bad because of a
        reboot. Also, two other PSC cumulative corrections
        not yet reported against UCX.

        Solution: 

	After one attempt with the cached mount port,
        zero the mount port and force a Portmapper call.

	Reference:

	CFS.48976.                    	

ECO 9 updates:
--------------
ECO A 15-JUL-1997 Alpha and VAX

        Images:

        UCX$DNFSDRIVER*.EXE     UCX V4.1-12A

        Problem:

        4-digit unit devices cannot be dismounted without
        the /ALL qualifier for systems with 6-character
        host names.  The actual device name
        _HOST6C$DNFSnnnn is 16 characters long, and the
        RMS NAM block field NAM$T_DVI limits device names
        to 15 characters.  RMS SYS$PARSE and SYS$SEARCH
        yield an incorrect device name of _HOST6C$DNFSnnn.

        Solution:

        Changed the NFS driver to not prepend the host name
        to the device name.


        Reference:

        CFS.50985.

ECO 10 updates:
---------------

ECO B	16-APR-1998	Alpha and VAX

	Images:

	UCX$DNFSACP.EXE				UCX V4.1-12B
        UCX$DNFSDISMOUNT.EXE			UCX V4.1-12B
        UCX$DNFSDRIVER.EXE			UCX V4.1-12B
        UCX$DNFSMOUNT.EXE			UCX V4.1-12B

        Problem:

	NFSclient does not handle 4-digit DNFS Device Numbers
	correctly.

	Solution:

	Port the fix from 4.2 which increases the space in 
	devname[] to allow for a 4th (and even 5th digit).

	Reference:

	PTR 30-1-685

ECO C	21-APR-1998     Alpha and VAX

        Images:

        UCX$DNFSACP.EXE                         UCX V4.1-12C
        UCX$DNFSDISMOUNT.EXE                    UCX V4.1-12C
        UCX$DNFSDRIVER.EXE                      UCX V4.1-12C
        UCX$DNFSMOUNT.EXE                       UCX V4.1-12C

        Problem:

	NFS VMS to VMS sets wrong protection (full access).

        Solution:

        Port the fix from 4.2.
        Save the protection information from the lower version of the 
	file so that it gets propagated to the new version.

        Reference:

        PTR 30-1-687

ECO D   2-JUN-1998	Alpha and VAX

        Problem:

        The system crashes with a PGFLIPLHI; the current process is
        the NFS client ACP process ( DNFS1ACP )

        Images:

        UCX$DNFSACP.EXE                 	UCX V4.1-12D

        Solution:

        The solution was to correctly define $LLINK_START and
        $LLINK_END to be linkage addresses.  Due to a "BUG" in the
        linker,  the addresses need to have storage defined to get the
        correct address assigned.

        Reference:

	PTR 30-1-746

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 LPD Images
---------------------------------------------------------------------------
ECO 3 updates:
--------------
ECO A   20-SEP-1996      Alpha and VAX

        Image:

        UCX$TELNETSYM.EXE

        Problems:

        1.  When an attempt is made to create a temporary relay 
            file with a NULL byte, everything after the NULL
            byte in one of the data records is ignored.  The NULL 
            byte is being interpreted by fprintf as EOR.  By 
            changing from fprintf to fwrite, a specified buffer
            length can be written to the temporary file.  

	2.  All threads being handled by the TNS hangs 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 (i.e., the 
            printer is turned off), all queues being handled by
            that TNS process will hang.  The connection attempt 
            was made with a sync Q but has now been changed to
            make the connection attempt with an async QIO with 
            an AST.
         
        Solutions:

        1.  Use fwrite() instead of fprintf() when writing to the 
	    relay temporary file.

	2.  In open_socket, issue a non-blocking QIO specifying AST 
            open_socket_ast().
      
        References:

        1.CFS.41468
        2.CFS.42955


ECO B   24-SEP-1996              Alpha and VAX

        Image:

        UCX$LPD_SHR.EXE

        Problem:

	With UCX as the LPD client, a problem exists when large
        jobs are printed:  

          1.  UCX-LPD-client opens the TCP-connection (to port 515)
              to the LPD server.
          2.  UCX-LPD-client sends /02/0A.
          3.  UCX-LPD-client does a complete read of the print file 
              (on its own disk) to get the file size (and probably to 
              copy it to the spool area).
          4.  UCX-LPD-client sends a /03 filesize filename/0A.
          5.  UCX-LPD-client sends the contents of the data file and
              the control file.

        Step 3 consumes a large amount of time in the case of large files.

	Some LPD server implementations (e.g., LEXmark printer)
	cannot live with this long pause in an open TCP-connection and
	they disconnect due to an idle timeout. Sometimes this value
	can be configured.  In an installation with many LEXmark
        printers, the value of 10 seconds cannot be changed.  

        Solution:

	The order of handling has been changed.  Connection to the
        LPD server (when file size is available) is not made until
        after the file is read.  

        Reference:

        CFS.44328

        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:

        Do not allow the LPD retry mechanism to requeue the job.  

        Reference:

        CFS.45415

        Problem:

        LPD printing: leftover and reused DFA and CFA files.

        Solution:

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

        Reference:

        CFS.44820

	Problem:

        A job stays in the "processing" state in the 
	UCX$LPD_QUEUE, and successive jobs for other printers 
	cannot be printed.

        Solution:

        An approximated simulation showed that the symbiont is 
	trying to read data from the socket using recv().  If 
	no data is available at the socket, the receive call 
        waits for data to arrive and will 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 name UCX$LPD_RETRY_INTERVAL.

        Reference:

        CFS.43801


ECO C  25-NOV-1996              Alpha and VAX

        Image:

	UCX$LPD_SHR.EXE		UCX V4.1-12C        

	Problem:

        A print job that is sent from one UNIX system through
        an OpenVMS system to another UNIX system 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 a 
        valid OpenVMS name that does not match the file name 
        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:

        PCL files cannot be printed without adding 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 4 updates:
--------------
ECO D	8-JAN-1997      Alpha and VAX

        Image:

	UCX$LPD_SHR.EXE              UCX V4.1-12D

	Problem:

        Unexpected timeouts occur on queues assigned to
        regular printers.  The timeouts cause the current
        job to be aborted and placed in holding for a later
        retry.

        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 E  3-JAN-1997      Alpha and VAX

	Images:

        UCX$TELNETSYM.EXE              UCX V4.1-12E

	Problem:

        If the UCX$TELNETSYM_IDLE_TIMEOUT logical name is defined,
        the first job goes through successfully but the 
        next one hangs and the queue stalls.  This problem
        was introduced in ECO 3.

        Solution:

	Corrected.

	References:

	CFS.47807, CFS.47987
        
ECO 5 updates:
--------------
ECO F  30-MAR-1997      Alpha and VAX

        Images:

        UCX$LPD_SHR.EXE			UCX V4.1-12F

        Problem:
                                                 
	LPD opens multiple links with BG devices and fails to  
        close them. This problem was inserted with the ECO B 
        correction.

        Solution:

	Corrected.

	Reference:

        CFS.45791

ECO 8 Updates
-------------
ECO G  29-AUG-1997       Alpha and VAX

	Image:

        UCX$TELNETSYM.EXE		UCX V4.1-12G

	Problem:

	An access violation could occasionally occur in the TELNETSYM
	for files containing certain control sequences.

	Solution:

	Corrected.

	Reference:

	CFS.51104.

ECO 9 updates:
--------------
ECO H  22-JAN-1998      Alpha and VAX

        Images:

        UCX$LPD_SHR.EXE              UCX V4.1-12H

	Problem:

	Unable to print 700 small or medium ANSI or 
	binary files at once.

	Solution:

	Modified card_RMS() function, which on buffer 
	overflow calls flush_card() rather than signaling
        RMS$_RTB.

	Reference:

        CFS.52472.

	Problem:

	Unable to stop and delete queues in a processing state.
        It appears this issue is one of not recognizing and 
        closing damaged connections that remain in the driver, 
        unable to respond to SMB messages and so on.

        Solution:

	Added code in rresvport() to use system logical names
        UCX$LPD_KEEPALIVE (y/n), UCX$LPD_PROBETIME (1..64k) and
        UCX$LPD_DROPTIME (1..64k).

        Reference:

        CFS.51291.

ECO 10 updates:
--------------

ECO I	10-JUN-1998	Alpha and VAX

        Images:

        UCX$LPD_RCV.EXE                 UCX V4.1-12I
        UCX$LPD_SHR.EXE                 UCX V4.1-12I
        UCX$LPD_SMB.EXE                 UCX V4.1-12I
        UCX$LPQ.EXE                     UCX V4.1-12I
        UCX$LPRM.EXE                    UCX V4.1-12I
        UCX$LPRSETUP.EXE                UCX V4.1-12I
        UCX$TELNETSYM.EXE               UCX V4.1-12I

        Problem:

        When printing several files which share the same setup
        module from different queues, the second print is retained
        on error with rms-e-flk.  This problem occurs on Alpha
        UCX 4.0.  When testing with UCX 4.1 Alpha the two
        symbionts loop.

        Solution:

        Segment large buffers ( > 32K ) into 32K byte lengths.
        Log only the first and last 32 bytes of buffers that are >= 32K.
        Now that large buffers have been segmented to never exceed 32K,
        we can safely use the TCP send() function on each segment.

        Reference:

	None.

ECO K   28-SEP-1998	Alpha and VAX

        Images:

        UCX$LPRSETUP.EXE		UCX V4.1-12K

        Problem:

        LPD spool file not created since upgrade to 7.1 and ucx 4.1
        eco 4.
        UCX$LPRSETUP V4.1 ECO 2 to ECO 6 DOES NOT create the
        spool directof a remote printer on aan OpenVMS/Alpha V7.1 system.
        UCX$LPRSETUP dosn't create spool directory on Alpha running
        OpenVMS V7.1 and UCX V4.2.

        Solution:

        The mkdir() 3rd uic arg bug in VMS 7.x has been reported to
        the DECC folks (DECC Notes Conference #2659).

        In the interim, it seems viable to workaround the mkdir() by
        changing UCX$LPRSETUP to use the standard 2-arg mkdir() call
        and to properly report any problems in doing so.  Since most
        users of UCX$LPRSETUP would be privileged (System
        Administrators), they would likely have one of the GRPPRV,
        SYSPRV, or BYPASS privileges which forces even the standard
        2-arg mkdir() to create spool directories owned by the
        parent [UCX$AUX,UCX_LPD].  (The SYSTEM account is typically
        configured with such privileges.)  Unprivileged users are
        not able to create spool directories due to insufficient
        permissions anyway. With this code in place, sufficiently
        privileged users can create spool directories via
        UCX$LPRSETUP regardless of whether the release of OpenVMS
        contains the mkdir() bug or not.

        WriteEntry() was also changed to only call MakeSpool() when
        writing the entry to the PRINTCAP file, and not when writing
        it to the LOG file.  This change seems prudent -- now that
        the user is informed of mkdir() errors, the directory should
        only be created once!

        Reference:

        PTR 70-5-248, PTR 70-5-541, PTR 70-5-846.


---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 POP Images
---------------------------------------------------------------------------
ECO 3 updates:
--------------
ECO A	27-NOV-1996      Alpha and VAX

        Images:

        UCX$POP_SERVER.EXE              UCX V4.1-12A

        Problem:

        It is very difficult to isolate mail content problems
        (e.g., MIME mail decoding problems) due to insufficient
        diagnostics.

        Solution:

        The new UCX$POP_TRACE logical name has been added, which
        causes everything the POP server sends to and 
        receives from the client to be logged.
        To enable the new logical name, issue the following DCL
        commands:  

           $ DEFINE/SYSTEM UCX$POP_TRACE 1
           $ @SYS$MANAGER:UCX$POP_SHUTDOWN
           $ @SYS$MANAGER:UCX$POP_STARTUP


        Problem:

        Upgrading to patched OpenVMS V7.1 and higher that has 
        callable mail causes the POP server to fail with an access
        violation.  Return length parameters from callable mail that were 
        formerly longwords are now words.  The POP server is passing 
        the address of the uninitialized longword.  Incorrect information
        in the upper order word is no longer being cleared by 
	callable mail, causeing the access violation.

        Solution:

        Initialize the return length longwords before calling 
	callable mail.

ECO 5 updates:
--------------
ECO B   3-MAR-1997      Alpha and VAX

        Image:

        UCX$POP_SERVER.EXE              UCX V4.1-12B

        Problem:

	Routine to convert OpenVMS date to UNIX date had 
	century hardwired as 19.  This is a Year 2000 bug.

        Solution:

        Corrected.

	Reference:

	None.

ECO C   7-APR-1997      Alpha and VAX

        Images:

        UCX$POP_SERVER.EXE              UCX V4.1-12C

        Problem:
        
	If not instructed to delete a mail message that 
	has been read by the POP client, the POP server 
	always copies it to the MAIL folder. For some uses 
	of POP it would be better to simply leave mail that 
	has been read by a POP client, but not deleted, in 
	the NEWMAIL folder.

        Solution:

	UCX POP can now be configured to leave mail that 
	has been read but not deleted by the POP client 
	in the NEWMAIL folder or to move it to the MAIL 
	folder. This is done with the "Leave in NEWMAIL" 
	configuration option. The "Leave in NEWMAIL" 
	option is useful in a situation like this:        

	Users at XYZCorp have PCs at home with which they 
	dial in to the office. They also have PCs in their 
	offices. The office PCs are to be the users 
	authoritative mail reposistory where they keep 
	mail in various folders. However, the users still 
	want to read mail on their home PCs. To do this,
	they configure their home PC's POP client with the 
	"Leave on server" option so that the POP client does not
	delete the mail from the server. They configure the 
	office PC's POP client with "Delete from server". 
	Finally, the POP server itself is configured with 
	"Leave in NEWMAIL". Now, when mail is read from 
	home, it is left on the server in the NEWMAIL folder. 
	When mail is next read from the PC at the office it 
	is picked up from the NEWMAIL folder (including any 
	messages already read at home since they were left 
	in the NEWMAIL folder), and the mail is deleted.

        Note that the Netscape POP client, when configured 
	to "Leave on server", uses the UIDL command to keep 
	track of which mail it has already fetched from the 
	POP server. This has the benefit of not fetching 
	the same mail more than once when mail is left in 
	the NEWMAIL folder.

	To configure this option do:

        $ DEFINE/SYSTEM UCX$POP_LEAVE_IN_NEWMAIL 1

        Note that at this time, the "Leave in NEWMAIL" 
	feature is not configurable on a user-by-user basis. 

        Reference:

        Suggestion from NSI crew.	

ECO 7 Updates
--------------

ECO D   6-AUG-1997      Alpha and VAX

        Images:

        UCX$POP_SERVER.EXE              UCX V4.1-12D

        Problem:

        No time zone information when converting OpenVMS date
        to UNIX date.

        Solution:

        Made changes to date_vms2unix to add timezone information.
        Call UCX SMTP's arpadate() function to convert
        UNIX date to "arpa" (ie. RFC 1123) date.

        Problem:

        The Pop server fails with an access violation when it tries 
        to "byte stuff" a line that contains more than 255 characters.

        Solution:

        Increase the buffer size in function bcopy to
        contain TXTBUFSIZE+1.

ECO 9 updates:
--------------
ECO E   26-JAN-1998      Alpha and VAX

        Images:

        UCX$POP_SERVER.EXE              UCX V4.1-12E

        Problem:

        POP server cannot process mail messages with more
        than 255 bytes in a line.

        Solution:

        Change code to look at OpenVMS callable mail's
        internal buffer for the message, thereby avoiding 
        the 255-byte limit.

        Problem:

        When trying to read large mail messages, the POP
        server hangs and issues a MAIL-W-NOMOREREC error
        message to the log file.

        Solution:

        OpenVMS callable mail reads the entire mail message.
        If the process does not have enough memory, OpenVMS
        callable mail returns MAIL-W-NOMOREREC.
        The solution was to detect this condition and
        send a mail message back to the recipient with instructions
        to ask the system administrator to increase the
        server account's page file quota.

        Reference:

        PTR 30-1-600, 30-1-614.

ECO 10 updates:
---------------

ECO F   22-APR-1998	Alpha and VAX

        Images:

        UCX$POP_SERVER.EXE              UCX V4.1-12E

        Problem:

        VMSmail API was returning an incorrect number of records
        for a mail message that was in it's NEWMAIL folder. The POP sever
        uses this number to loop thru calls to mail$message_get() to get
        each line record) of the message.  Because the length of the
        message was incorrectly given as one more than the actual length,
        the call to mail$message_get() to get the last message line
        resulted in the MAIL-W-NOMOREREC error.

        Solution:

        Documents a situation where VMSmail reported 120-
        record message, but the actual external mail file contained only
        119 records as read thru the MAIL$M_RECMODE (record-at-a-time)
        method. Tolerate this offf-by-one accounting assuming it's
        identical to the prior HACK ALERT, which handles a similar
        situation with messages read via the MAIL$_MESSAGE_BUFFER method.

        Reference:

        PTR 30-1-700

ECO G   5-MAY-1998	Alpha and VAX

        Images:

        UCX$POP_SERVER.EXE              	UCX V4.1-12G

        Problem:

        PMDF (another vendor's) mail client was translating
        single-quote (') characters in From: addresses into "\s" before
        wrapping them with SMTP%"...".  This renders the address as
        illegal from RFC822 standpoint, so SMTP and POP did not recognize
        this as a proper "SMTP" From address, failing one of the three
        conditions necessary for ignore_mail11_headers operation.  While
        single-quote is a legal character for an SMTP address, embedded
        backslashes are not.

        Solution:

        If POP's patch_from_line() call to SMTP's build_path_from()
        routine fails with UCX$_SMTP_PARSERR, and the From: address begins
        with the SMTP%" jacket, then relax the ignore_mail11_headers
        constraint that the VMS mail From: address must be RFC822 and
        treat it as if it really was RFC822/SMTP compliant.  Customer is
        expected to notify the third party vendor to get the root cause
        problem in the mail client fixed.

        Reference:

        PTR 30-1-616

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 SMTP Images
---------------------------------------------------------------------------
ECO 3 updates:
--------------
ECO A   27-NOV-1996      Alpha and VAX

        Image:

	UCX$SMTP_MAILSHR.EXE            	UCX V4.1-12A
        UCX$SMTP_RECEIVER.EXE           	UCX V4.1-12A
        UCX$SMTP_SYMBIONT.EXE           	UCX V4.1-12A
        UCX$SMTP_PARSESHR.EXE (VAX)     	UCX V4.1-12A
        UCX$SMTP_PARSESHR_TV.EXE (Alpha)  	UCX V4.1-12A
        UCX$UUENCODE.EXE                	UCX V4.1-12A
        UCX$UUDECODE.EXE                	UCX V4.1-12A

        Problem:

        Symbiont processes sometime leave stray BG devices.

        Solution:

        Corrected.

        Reference:

        CFS.42659

        Problem:

        The SMTP receiver fails with an access violation 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 being delivered to users with 
	their mail forwarded to another foreign transport 
	(e.g., xyz%) is returned.

        Solution:

        Corrected.

        Problem:

        An access violation might occur during delivery of local 
        mail on certain later versions of OpenVMS.

        Solution:

        Corrected.

ECO 5 updates:
--------------
ECO B	3-MAR-1997      Alpha and VAX

        Image:

        UCX$SMTP_MAILSHR.EXE            	UCX V4.1-12B
        UCX$SMTP_RECEIVER.EXE           	UCX V4.1-12B
        UCX$SMTP_SYMBIONT.EXE           	UCX V4.1-12B
        UCX$SMTP_PARSESHR.EXE (VAX)     	UCX V4.1-12B
        UCX$SMTP_PARSESHR_TV.EXE (Alpha)  	UCX V4.1-12B
        UCX$UUENCODE.EXE                	UCX V4.1-12B
        UCX$UUDECODE.EXE                	UCX V4.1-12B

        Problem:

	If UCX$SMTP_RECV_SNAPSHOT_BLOCKS is defined,
	SMTP receiver would dump snapshot buffer even 
	if no error occurred.

        Solution:

	Corrected.

        Reference:

	CFS.49010.

	Problem:

	Delivering local mail where local part is DSN 
	address appears to function (based on the log file) 
	but never arrives at the DSN mail queue. 
	(Example address is "DSN%blah"@name.of.my.system)

        Solution:

	Corrected.

	Reference:

	CFS.47537.

ECO C   7-APR-1997      Alpha and VAX

        Images:

        UCX$SMTP_MAILSHR.EXE            	UCX V4.1-12C
        UCX$SMTP_RECEIVER.EXE           	UCX V4.1-12C
        UCX$SMTP_SYMBIONT.EXE           	UCX V4.1-12C
        UCX$SMTP_PARSESHR.EXE (VAX)     	UCX V4.1-12C
        UCX$SMTP_PARSESHR_TV.EXE (Alpha)  	UCX V4.1-12C
        UCX$UUENCODE.EXE                	UCX V4.1-12C
        UCX$UUDECODE.EXE                	UCX V4.1-12C

        Problem:

	The symbiont process leaks large amounts of memory 
	each time a mail message is bounced.

        Solution:

        Corrected.

        Reference:

        CFS.48831.

	Problem:

        Mail message text hidden inside a binary control 
	file makes the code more complicated, is prone to
	bugs, and makes problem solving more difficult.

        Solution:

	UCX SMTP no longer stores the text of the 
	message in the control file itself. It will 
	always store the text in a separate *.*_TEXT file.

        Reference:

        none.

ECO 6 updates:
--------------
ECO D   13-June-1997    ECO D   13-June-1997

        Images:

        UCX$SMTP_MAILSHR.EXE              UCX V4.1-12D
        UCX$SMTP_RECEIVER.EXE             UCX V4.1-12D
        UCX$SMTP_SYMBIONT.EXE             UCX V4.1-12D
        UCX$SMTP_PARSESHR.EXE (VAX)       UCX V4.1-12D
        UCX$SMTP_PARSESHR_TV.EXE (Alpha)  UCX V4.1-12D
        UCX$UUENCODE.EXE                  UCX V4.1-12D
        UCX$UUDECODE.EXE                  UCX V4.1-12D

        Problem:

        UCX$SMTP_MAILSHR.EXE fails with an access violaiton
        when sending a mail message with a record greater than 1000
        bytes.

        Solution:

        When reading a record from the mail file, determine
        the longest record length in the file and read in
        that length. If record length exceeds 1000 bytes, write
        out multiple 1000 byte lines in the outgoing mail
        message. Also inform the user that this is happening
        with the following message:

          %UCX-I-SMTP_LINEWRAP, Line contains more then 1000
          bytes, splitting into multiple lines.

        This change requires a change to UCX$MSG.EXE to
        display the SMTP_LINEWRAP information code.

        Problem:

        The command ANALYZE MAIL/REPAIR results in -JBC-F-MISREQPAR
        following by -SYSTEM-F_SSFAIL errors.

        Upon detecting that a job in the SMTP queue does not
        have a file associated with the job, SMTP tries to
        delete the job from the SMTP queue. However, the item
        list to the SNDJBCW was not set up correctly.

        Solution:

        Define the item list to the SNDJBCW system service
        locally within the function that deletes the job
        from the SMTP queue. Also, set up the item list
        correctly.

ECO 7 Updates
-------------
ECO E   24-JUL-1997       Alpha and VAX

        Images:

        UCX$SMTP_MAILSHR.EXE            	UCX V4.1-12E
        UCX$SMTP_RECEIVER.EXE           	UCX V4.1-12E
        UCX$SMTP_SYMBIONT.EXE           	UCX V4.1-12E
        UCX$SMTP_PARSESHR.EXE (VAX)     	UCX V4.1-12E
        UCX$SMTP_PARSESHR_TV.EXE (Alpha)  	UCX V4.1-12E
        UCX$UUENCODE.EXE                	UCX V4.1-12E
        UCX$UUDECODE.EXE                	UCX V4.1-12E

        Problem:

        In ECO 6, $mail /sub="test" NL:
        "smtp%""username@host""" results in RMS-F-USZ
        error and access violation.

        Solution:

        Previous edit to handle 1000 byte did not take
        into account the zero byte length in file.( NL:).
        Add a check for zero longest byte length and
        default to 1000 if so.

        Reference:

        CFS.52901, CFS.52901.

ECO 9 update:
-------------
ECO F   18-NOV-1997      Alpha and VAX

        Images:

        UCX$SMTP_SFF.EXE                UCX V4.1-12F

        Problem:

        Mailing list handler.

        Solution:

        Corrected.

        Reference:

        PTR 30-3-108.

ECO G   25-JAN--1998      Alpha and VAX

        Images:

        UCX$SMTP_MAILSHR.EXE            	UCX V4.1-12G
        UCX$SMTP_RECEIVER.EXE           	UCX V4.1-12G
        UCX$SMTP_SYMBIONT.EXE           	UCX V4.1-12G
        UCX$SMTP_PARSESHR.EXE (VAX)     	UCX V4.1-12G
        UCX$SMTP_PARSESHR_TV.EXE (Alpha)  	UCX V4.1-12G
        UCX$UUENCODE.EXE                	UCX V4.1-12G
        UCX$UUDECODE.EXE                	UCX V4.1-12G
        UCX$SMTP_SFF.EXE                	UCX V4.1-12G

        Problem:

        Customer tried to send file that had fixed
        length records, causing various problems.

        Solution:

        This capability is not supported. Print a warning when
        action is attempted.

        Reference:

        PTR: 30-1-529, CFS.54722.

        Problem:

        Comments in the README.TXT for ECO F incorrectly stated
        that the SFF image changes were incorporated.

        Solution:

        To keep the V4.1 and V4.2 streams the same, folded
        in the SFF build changes to the V4.1 stream.
        Images will be put into EXE$ and kitd$ but will not 
        be copied to the SYS$SYSTEM directory at install
        time because the last bits of changes needed in the
        kitting procedure were not made for V4.1 but for
        a common source stream only.

        Reference:

        None.

ECO 10 updates:
--------------

ECO H   8-JUN-1998	Alpha and VAX

        Images:

        UCX$SMTP_RECEIVER.EXE           UCX V4.1-12H

        Problem:

        SMTP receiver is not including any 'From' DOMAIN header
        information.

        Solution:

        Retro fit change from the v5/v6 code:
        smtp_reecv_serv.c :
        Add "from domain" clause into the Received: header we tack
        onto incoming messages.

        Reference:

        PTR 30-1-625

ECO I   20-JUL-1998	Alpha and VAX

        Images:

        UCX$SMTP_MAILSHR.EXE                 	UCX V4.1-12I
        UCX$SMTP_PARSESHR_TV.EXE                UCX V4.1-12I
        UCX$SMTP_RECEIVER.EXE                   UCX V4.1-12I
        UCX$SMTP_SYMBIONT.EXE                   UCX V4.1-12I

        Problem:

        When the customer starts UCX, it always displays the following
        error in the UCX$SMTP_LOGFILE.LOG:
        smtp_parse_init  2nd QIO() failed, ISOB status = 844
        Error building list of IP addresses for the local host,
        status = 844
        UCX V4.1 E8 SMTP, Inbound mail causing a %SYSTEM-F-ACCVIO on
        the UCX$SMTP_RECEIVER server, which does not deliver the mail.

        Solution:

        The correction is add logic to fetch the MAXIMUM NUBER OF
        INTERFACES and to use that value in the buffer size
        calculation. The definition of INET$C_MAX_IFNETS was added to
        inetdef.h. Delete the "comment" part of the from address.

        Reference:

        PTR 70-5-659, PTR 70-5-674

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 RSH Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   19-NOV-1996      Alpha and VAX

        Image:

        UCX$RSH.EXE                         UCX V4.1-12A

        Problem:

        Because of misordered images in the link option file,
        the UCX$RSH image was being linked in such a way as to 
        include a large, version-specific object library.
        This caused access violations to occur when using the RSH 
        command on an OpenVMS Alpha V7.1 system.

        Solution:

        Correct the link option file.  This produces an image
        that is only about 130 blocks, rather than over 1000,
        and is more portable.

        Reference:

        Internal report.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 RLOGIN Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   19-NOV-1996      Alpha and VAX

        Image:

        UCX$RLOGIN.EXE                      UCX V4.1-12A

        Problem:

        Because of misordered images in the link option file,
        the UCX$RLOGIN image was being linked in such a way
        as to include a large, version-specific object library.
        This could cause access violations to occur when using the 
        RLOGIN command on certain OpenVMS Alpha systems.

        Solution:

        Correct the link option file.  This produces an image
        which is only about 170 blocks, rather than over 1000,
        and is more portable.

        Reference:

        Internal report.

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 RPC Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   15-AUG-1996      Alpha and VAX

        Image:

        UCX$RPCGEN.EXE                  UCX V4.1-12A

        Problem:

        RPCGEN /DEFINE qualifier causes an access violation.

        Solution:

        Modify parseargs() to not uppercase the /DEFINE string
        (which was the wrong buffer, causing the access violation).
        Also change CLI_GET_VALUE() to require starting
        and ending quotes for quoted string status.
        If quoted string status, restore the stripped quotes
        in the define string.

        References:

        CFS.43990.

ECO 9 updates:
--------------
ECO B   29-JAN-1998      Alpha and VAX

        Images:

        UCX$RPCXDR_SHR.EXE      UCX V4.1-12B

        Problem:

        IEEE double precision results in the message `Server can't
        decode argument' from a UCX client.

        Solution:

        The RPC message appears to be short by four bytes.
        Checking the source revealed that if the first four
        bytes encode properly, the second four bytes will not 
        be encoded because the || condition was being used 
        instead of an && condition.

        References:

	PTR 30-1-629.

ECO 10 updates:
---------------

ECO B   27-MAY-1998	Alpha and VAX

        Sources:

        [RPCXDR]types.h

        Images:

        None. (actually most all of the .exe files change, but the types.h
               file is all that will be patched.)

        The file types.h belongs in the system directory:
                SYS$SYSROOT:[000000.SYSCOMMON.UCX$LIB.RPC]

        Problem:

        DECC compiler on Alpha fails with "%CC-E-NOLINKAGE"
               errors on typedefs: int32, uint32, int64 & uint64

        Solution:

        Use the INTS.H definitions for int32, uint32, int64 and
        uint64. This prevents the %CC-E-NOLINKAGE  errors that were
        generated at compile time if both RPC.H and PTHREAD.H were
        included.  INTS.H properly defines int32 and uint32 for both
        current platforms and properly defines int64 and uint64 for the
        Alpha platform.  However, if the platform is VAX, INTS.H does
        not define either int64 or uint64.  This is an acceptible
        solution because none of the provided source code in either
        RPCXDR or PCNFSD uses either int64 or unit664. Therefore, these
        typedefs are only used in customer applications. If a customer
        application is currently using the miss-defined 32-bit typedefs
        int64 and/or uint64 on either platform, the solution would be
        to modify the source code of the application to use int32 and/or
        uint32 and recompile.

        Reference:

        PTR 30-1-242

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 RCP Images
---------------------------------------------------------------------------
ECO 5 updates:
--------------
ECO A   27-SEP-1996      Alpha and VAX

        Image:

        UCX$RCP.EXE                     UCX V4.1-12A

        Problem:

        RCP did not handle user names 12 bytes in length.

        Solution:

        Corrected.

        Reference:

        CFS.45129.

ECO B   30-OCT-1996      Alpha and VAX

        Image:

        UCX$RCP.EXE                     UCX V4.1-12B

        Problem:

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

        Solution:

        To solve the problem, remove the stack local variable
        and allow the global variable to be used.

        References:

        CFS.43410.

ECO C   29-APR-1997

	Image:

        UCX$RCP.EXE            UCX V4.1-12C

	Problem: 

	COPY/RCP command did not parse quoted filenames 
	properly.

	Solution: 

	If quoted filename is detected, save it in an 
	appropriate place.

	References: 

	CFS.48551.


ECO 6 Updates:
--------------

ECO D   05-JUN-1997      Alpha and VAX


	Images:

        UCX$RCP.EXE		UCX V4.1-1D


	Problem:

	Explicit copies from addresses of the form 
	xx.xx.xx.128 (and above) would always return 
	RCP-CONHST. In routine rcp$get_rsocket, the 
	address or hostname is passed to ucx$inet_addr,
	which tries to make it a network value or 
	returns -1 on error. The code checked for <0 
	rather than -1 explicitly. Since the ipaddr 
	variable was declared as an int, anything of 
	the form xx.xx.xx.128 or above would be returned 
	as a negative number.

	Solution:

	Declare ipaddr as unsigned long, and compare it 
	to (unsigned long) -1 to see if ucx$inet_addr 
	failed.

	References: 

	CFS.51680

---------------------------------------------------------------------------
Corrections for DIGITAL TCP/IP Services V4.1 NTP Image
---------------------------------------------------------------------------
ECO 6 updates:
-------------
ECO A   30-MAY-1997      Alpha and VAX

	Image:

        UCX$NTPD.EXE		UCX V4.1-12A

	Problems:

	1. Exclamation mark (!) could not be used in the 
	   configuration file.

	2. Problems with synchronization to master clock 
	   and local master.

	3. Maximum timezone differential did not account 
	   for daylight saving time.

	4. Problems selecting peer is based on distance.

	5. Peer polling needs to comply with RFC 1305.

	6. Problem with NTP when there are two master 
	   servers on the local network or when 
	   synchronization sources are close.

	Solutions:

	1. An exclamation point can now be used as a comment 
           character in the configuration file.

	2. Synchronization to master clock and local master 
           is improved.

	3. A maximum timezone differential of 13 hours is 
	   allowed, instead of 12.

	4. A bug in selecting peers based on distance is corrected.

	5. The minimum and maximum peer polling intervals are 
	   changed to comply with RFC 1305.

	6. NTP no longer flip-flops between two master 
	   servers when two of them exist on the local network 
	   with the same precision and stratum, or in certain
   	   cases where the synchronization sources are close.


	Reference:

	Internal development request.

	Problem:

	NTP continually resets the clock by 7 minutes.

	Solution:

	Corrected.

	Reference:

	CFS.50430.

ECO B  2-JUN-1997       Alpha and VAX

	Image:

        UCX$NTPD.EXE		UCX V4.1-12B

	Problem:

	NTP sometimes fails to find local timezone information.

	Solution:

	Corrected.

	Reference:

	CFS.46468.

ECO C  4-JUN-1997       Alpha and VAX

	Image:

        UCX$NTPD.EXE		UCX V4.1-12C

	Problem:

	When stepping time, NTP may reset time to GMT, 
	ignoring the local timezone.

	Solution:

	Corrected.

	Reference:

	CFS.50272.


ECO 7 updates:
-------------
ECO D   30-AUG-1997      VAX and Alpha

	Images:

        UCX$NTPD.EXE    UCX V4.1-12D

	Problem:

	This corrected a problem with a 7-minute, 9-second 
	incorrect offset bug. This bug was assumed to be 
        corrected in an earlier patch (and ECO6), but one 
	occurrence of the bug still existed at that time.

	Solution:

	There was an area of manually doing 64-bit OpenVMS 
	time arithmetic that had a problem with the carry bit.  
	The UCX team originally corrected this through casting the 
	variables involved, but unfortunately also included a 
	correction for this same area when porting over new code from 
	elsewhere.  So it was corrected twice, which resulted in 
	recreating the bug. The casting change was removed, so 
	that the change of subtracting the carry bit when 
	required still exists.

	Reference:

	CFS.54260.

ECO 10 updates:
---------------

ECO E   10-SEP-1998	Alpha and VAX

        Images:

        UCX$NTPD.EXE            	UCX V4.1-12E

        Problem:

        NTP: times not adjusted in 5 node mixed cluster.

        Solution:

        Added an option similar to unix NTP which allows the correction
        of any time difference, including times greater than the
        maximum aperture.  The flag is not set by default, which means
        that if the time difference is too large (around 5.3 hours or
        so) then the following message will appear in the log
        file: seconds is too large (set clock manually or set correct-
        any) To set the option, CORRECT-ANY is added to the UCX$NTP.CONF
        file which after doing the filtering and finding the
        difference to be too large, it will reset the time.

        Reference:

        PTR 70-5-799


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. 

The DEC-AXPVMS-UCXECO_41_10-V1000--4.PCSI kit is installed using the 
PCSI utility.

   $PRODUCT INSTALL UCXECO_41_10 /SOURCE=device-name

The ECO kit checks to ensure that a valid license is installed before
proceeding.  If one is not found, the installation aborts. Restart the
installation after a valid license is installed.

This DEC-AXPVMS-UCXECO_41_10-V1000--4 kit will install on the Alpha VMS 
V6.1 and higher.

A system reboot is required after the installation of this update.

To complete the installation please do the following:

1.  Copy SYS$COMMON:[SYSMGR]UCX$SNMP_SHUTDOWN.COM  
    to SYS$SYSDEVICE:[UCX$SNMP]UCX$SNMP_SHUTDOWN.COM,

2.  Copy SYS$COMMON:[SYSMGR]UCX$SNMP_STARTUP.COM
Files on this server are as follows:
»dec-axpvms-ucxeco_41_10-v1000--4.README
»dec-axpvms-ucxeco_41_10-v1000--4.CHKSUM
»dec-axpvms-ucxeco_41_10-v1000--4.pcsi-dcx_axpexe
»ucxalp_e10041.CVRLET_TXT
privacy statement using this site means you accept its terms