SEARCH CONTACT US SUPPORT SERVICES PRODUCTS STORE
United States    
COMPAQ STORE | PRODUCTS | SERVICES | SUPPORT | CONTACT US | SEARCH
gears
compaq support options
support home
software & drivers
ask Compaq
reference library
support forum
frequently asked questions
support tools
warranty information
service centers
contact support
product resources
parts for your system
give us feedback
associated links
.
} what's new
.
} contract access
.
} browse patch tree
.
} search patches
.
} join mailing list
.
} feedback
.
patches by topic
.
} DOS
.
} OpenVMS
.
} Security
.
} Tru64 Unix
.
} Ultrix 32
.
} Windows
.
} Windows NT
.
connection tools
.
} nameserver lookup
.
} traceroute
.
} ping
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-dcx_axpexe.pcsi, then it can be expanded by typing RUN kitname-dcx_axpexe.pcsi. 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 to SYS$SYSDEVICE:[UCX$SNMP]UCX$SNMP_STARTUP.COM.



This patch can be found at any of these sites:

Colorado Site
Georgia Site



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 and legal statement