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 UCXECO8-032 TCP/IP V3.2 for OPENVMS VAX/Alpha ECO Summary

NOTE: An OpenVMS saveset or PCSI installation file is stored on the Internet in a self-expanding compressed file. The name of the compressed file will be kit_name-dcx_vaxexe for OpenVMS VAX or kit_name-dcx_axpexe for OpenVMS Alpha. Once the file is copied to your system, it can be expanded by typing RUN compressed_file. The resultant file will be the OpenVMS saveset or PCSI installation file which can be used to install the ECO. *DEC TCP/IP] UCXECO8-032 TCP/IP V3.2 for OPENVMS VAX/Alpha ECO Summary Copyright (c) Digital Equipment Corporation 1995. All rights reserved. PRODUCT: DEC TCP/IP Services V3.2 for OpenVMS VAX DEC TCP/IP Services V3.2 for OpenVMS Alpha OP/SYS: OpenVMS VAX OpenVMS Alpha SOURCE: Digital Equipment Corporation ECO INFORMATION: ECO Kit Name: UCXECO8-032 ECO Kits Superseded by This ECO Kit: UCXECO7-032 ECO Kit Approximate Size: 42,606 Blocks Kit Applies To: OpenVMS VAX V5.5-2, V6.0, V6.1 OpenVMS Alpha V1.5, V6.1 System/Cluster Reboot Necessary: Yes ECO KIT SUMMARY: An ECO kit exists for DEC TCP/IP Services V3.2 on OpenVMS VAX V5.5 through V6.1 and OpenVMS Alpha V1.5 through V6.1. This kit addresses the following problems. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 Kernel images --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 29-Nov-1994 AXP and VAX Images: UCX$BGDRIVER.EXE UCX V3.2-9A (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9A UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9A UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9A UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9A o Problems: 1. A system crash may occur in the INET_SOACCEPT when it refers to the socket structure pointed to by the Listener UCB. 2. A system crash due to corrupted pool may occur if the when the 'UCX SHOW COMM/MEM' command is used. Solutions: 1. By the time that INET_SOACCEPT is called, the socket that belonged to the Listener UCB may already be deassigned. In that case, the UCB$L_BG_SOCKET field in the Listener UCB will be zero and a reference to the structure will cause a crash. Code has been added to look for this possibility and avoid the access violation if the field has been zeroed. 2. In the INET_SENSE_MBUF_COUNTERS routine in INET_SENSEMODE.MAR, some byte arithmetic was incorrect when the byte value was greater than 128 decimal (i.e., 80 hex). The 80 hex is a negative integer and, as a result, the size of an allocated pool buffer was calculated incorrectly which caused it to use more space than it had allocated. ECO B 4-Jan-1995 AXP and VAX Images: UCX$BGDriver.EXE UCX V3.2-9B (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9B UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9B UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9B UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9B o Problem: When two processes (such as a parent and a child) share a socket, only the actual creator is allowed to perform IO$_DEACCESS QIOs. Solution: The code now performs the following checks: 1. Is the socket is shareable? 2. Does the issuing process have the SHARE privilege? 3. Does the issuer's parent process owns the device. Access is denied only if all these checks fail. When access is disallowed, the SS$_NOPRIV error is returned rather than SS$_ACCVIO. ECO 2 Updates: -------------- ECO C 9-Jan-1995 AXP Images: UCX$BGDriver.EXE UCX V3.2-9C (Alpha) o Problem: Use of the #pragma member_alignment preprocessor option on Alpha has led in one instance to a misalignment of data structures between the C code and Macro code. The data structure in question is the inpcb structure. Although it is not certain what all the ramifications of this problem are, this bug has probably contributed to several un-explained Alpha crashes, especially those involved with dynamic routing. Solution: An explicit word filler was introduced into the $INPCBDEF in INET_NPGD.SDL, and the INET_SETMODE.MAR module was recompiled after the libraries were rebuilt. This should have resynchronized the data structures. However, the source for INET_NPGD.SDL is now in the [...SRC_PAT.NET] tree for V3.1. A build for ...SRCLIB SRCLIB... was done only for the two Alpha streams. Thus, users who are running VAX systems should avoid doing a library rebuild during the rest of the life of V3.1 and its ECOs. Note: This is the same action that was taken for ECO R of V3.1. ECO D 12-Jan-1995 AXP and VAX Images: UCX$BGDriver.EXE UCX V3.2-9D (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9D UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9D UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9D UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9D UCX$INETACP.EXE UCX V3.2-9D o Problems: 1. A system crash occurs in the INET_IPINTR+1F3 routine when it references the supposed IF_UCB structure pointed to by R8. The crash occurs because R8 contains zero. 2. During the execution of a SHOW INTERFACE command, a system crash may occur. A crash may also occur in the UCX$INET_ROUTED process. 3. A system crash occurs in the INETACP routine at INETACP_SERV_ACCEPT+1B1 in INETACP_CREPROC.MAR. 4. A system may hangs for 10 to 15 minutes when FTP is aborted from a remote Macintosh [R]. Solution: 1. At this point in the code, R8 is pointing at the IF_UCB of the interface over which the current MBUF is received. Since the loopback interface does not have an IF_UCB structure, if the current MBUF has been received over the loopback interface, the system will crash. For now, the crash will be prevented by simply dropping the packet if R8 is set to zero. 2. If the local interface, LO0, is deleted through a 'SET NOINTER LO' command, the BGDRIVER database is left in an inconsistent state. The solution is to disallow the deletion of this interface at the driver level. In the INETACP_DELETE_ETHERNET subroutine in the INETACP_ETHERNET.MAR module, a test is made to determine if the interface to be deleted is that of LO0. If it is, the request is terminated. 3. Acceptance of a connection may fail because the maximum number of sockets has been surpassed. During clean-up a system crash occurs after a reference to the REQCB$L_UCB_2 which has not been initialized in this path. The solution is to initialize this field and REQCB$W_CHAN_2 when the REQCB is created in the INET_REMOTE_ACCEPT routine in INET_ACCESS. 4. In the INET_ENQ_IO subroutine in the the INET_RCV_XMT.MAR module, if R1 contains a negative number, the result would be a long loop, encompassing billions of passes, at elevated IPL. To eliminate this possibility, a sanity check has been introduced into the loop. ECO 4 Updates: -------------- ECO E 24-Jan-1995 AXP and VAX Images: UCX$BGDriver.EXE UCX V3.2-9E (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9E UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9E UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9E UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9E UCX$INETACP.EXE UCX V3.2-9E o Problem: A system crashes occurs in the INET_FREE_MBUF_CHAIN when calling @VCRP$A_DEALLOC_RTN and trying to deallocate a VCRP. Solutions: The IP_INPUT_VMS.C module explicitly declares several instances of invocations of the "sizeof" function used in comparisons to be of the type (int). This would force the generated code to use signed comparison instructions. The problem caused packets to be destroyed with spurious options. *NOTE* The crash was caused by something clearing the VCRP$A_DEALLOC_RTN field and that we never demonstrated how the evident error, which did cause us to mangle a received datagram, actually caused the crash. However, given that the error did cause destruction of data, it is not too much to accept that it also led to the crash. ECO F 17-Feb-1995 AXP and VAX Images: UCX$BGDRIVER_SEC.EXE UCX V3.2-9F (Alpha) UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9F UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9F o Problem: The Security Driver interface is broken. When it calls @ip_secvec$l_ip_input, R8 is supposed to be pointing to the IF structure, not the IF_UCB structure. Solutions: The code has been fixed so that it places the correct value in R8. ECO G 21-Feb-1995 AXP and VAX Images: UCX$BGDRIVER_SEC.EXE UCX V3.2-9G (Alpha) UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9G UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9G UCX$INETACP.EXE UCX V3.2-9G o Problem: 1. Due to a change in behavior for OpenVMS AXP T6.2-FT2, the LOGINOUT.EXE image needs to be specified instead of the DCL.EXE image, when starting a new server process. 2. One code path in the ECO F fix for the Security Driver does not properly setup R8. Solution: 1. The Auxiliary Server uses the LOGINOUT.EXE image. 2. The code problem has been corrected. ECO 5 Updates: -------------- ECO H 21-Mar-1995 VAX / AXP Images: UCX$BGDRIVER_SEC.EXE UCX V3.2-9H (Alpha) UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9H UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9H UCX$INETACP.EXE UCX V3.2-9H o Problem: When using SELECT with null lists on a multi-processor, it fails with a strange error code in the IOSB. When called with null lists, the INET_SELECT_BUILD_LIST routine was not setting a status code into R0. As a result, the previous contents of R0 were retained. On single CPU systems, this previous value was SS$_NORMAL, however on multi-processor systems this value was a system address in the data structure associated with IOLOCK_8. Solution: Initialize R0 to SS$_NORMAL on entry to INET_SELECT_BUILD_LIST. ECO 6 Updates: -------------- ECO I 3-Apr-1995 VAX / AXP Images: UCX$BGDRIVER_SEC.EXE UCX V3.2-9I (Alpha) UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9I UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9I UCX$INETACP.EXE UCX V3.2-9I o Problem: A system crash at INET_SEL_READ_ALL+14 may occur due to the fact that the temporary space allocated for a SELECT has been deallocated. In the preprocessing of a SELECT operation, a test is made to determine if the UCB that serves as the head of the SELECT list is already active. If so, an SS$_DEVACTIVE is returned and the call is terminated. Unfortunately, the temporary space associated with the first SELECT call was also being deallocated. When an event occurred, the system crashed due to the absence of the temporary list. Solution: In a failure in preprocessing for SELECT, avoid deallocating the temporary space if the space was NOT allocated explicitly during this call. ECO 7 Updates: -------------- ECO J 10-May-1995 VAX and AXP Images: UCX$BGDriver.EXE UCX V3.2-9J (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9J UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9J UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9J UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9J UCX$INETACP.EXE UCX V3.2-9J o Problem: The following system crashes occur: 1. In SBDROP which calls PANIC due to what appears to be an inconsistent receive socket buffer; and 2. In PWIP, in adjTCPwindow, with an access violation due to referencing a stale UCB. Solution: Both of the above crashes may be triggered when the PWIP application chooses to close a connection before it has deallocated all the MBUFs that have been passed to it. The solution to both of these problems can be achieved by redesigning the mechanism used to handle deferred TCP window adjustment for PWIP. Formerly, two UCB fields, UCB$L_BG_So_cc and UCB$L_BG_So_mbcnt, were used to keep track of the SO_CC and SO_MBCNT values associated with MBUFS passed up to Pathworks or DECnet/OSI. The redesigned mechanism makes use of a new structure, the DWAB (Deferred Window Adjustment Block), to keep track of these quantities. This redesign goes hand in hand with PWIP changes to PWIPDRIVER_READ.C and PWIP_DRIVER_SUPP.C. It is imperative that both changes (i.e., NET and PWIP) be installed simultaneously. ECO 8 Updates: -------------- ECO K 27-Jun-1995 VAX and AXP Images: UCX$BGDriver.EXE UCX V3.2-9K (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9K UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9K UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9K UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9K UCX$INETACP.EXE UCX V3.2-9K o Problems: 1. When an ICMP_NETMASK_REQUEST is issued by a host whose address is 0.0.0.0, it is expected that an ICMP_NETMASK_REPLY will be broadcast in response, providing such a feature is enabled. An initial problem exists in that icmp_input() does not enable broadcasts via the IP_ALLOWBROADCAST flag when it replies through ip_output(). As a result, an EACCESS error is returned by the interface code. 2. The second problem is that this option is supposed to be "settable". No facility currently exists to directly control such a feature. A guideline is that only gateways tend to generate such replies and although a specific host could be so enabled, this is not common. Therefore, this feature will only be enabled for gateways. To enable the feature, issue the command: $UCX SET PROTOCOL ICMP /UNREACHABLE 3. A case of incorrect synchronization in the UCX$INETACP can hang the system with the UCX$INETACP in RWAST state waiting for I/O to rundown on a BG device that the ACP has tried to DEASSIGN. 4. A crash in INETACP_SERV_ACCEPT_CLOSE occurs due to a non-zero value in the REQCB$W_CHAN_2 field. The non-zero value indicated that a valid channel existed and that the corresponding REQCB$L_UCB_2 was valid. 5. A system crash may occur in INET_SEL_READ_ALL with the pointer to the temporary space allocated for select set to zero. Solutions: 1 and 2. Change IP_ICMP_VMS.C to include OpenVMS conditional code which senses the `ipgateway' flag (set by the above command), and calls ip_output() with the IF_ALLOWBROADCAST flag. If the `ipgateway' flag is set to FALSE, broadcasts will not be allowed. Requests from 0.0.0.0 will be rejected by the UCX ethernet layer which returns EACCES. 3. The synchronization error occurs when attempts are made to execute substantive code in an AST thread in the UCX$INETACP. The AST thread was triggered by a Read ATTN completion. Nothing but code should ever be executed to queue a REQCB in the context of the AST. The fix is to do that in the INETACP_USER_INFO_AST routine and to move the substantive code to INETACP_USER_INFO_AST_CONT. 4. The interpretation of the REQCB_W_CHAN_2 field is modified to take into account the fact that this field is overlayed with the REQCB$W_PROTO field. Given that this latter field can only take the values 0 and 1, and given that valid channel numbers are 10, 20, 30, etc., all in hex, a non-zero number is now interpreted with the low bit clear as a valid channel and anything else (e.g., 1) as a non-channel. 5. Upon entry to INET_SELECT, the field that holds the pointer to the temporary space is no longer cleared until after sanity checks are performed. Previously, when the caller passed a bad parameter or called to select upon an already selected device, the pointer to the temporary space allocated for a previous select call was erased. ECO L 7-July-1995 AXP and VAX Images: UCX$BGDriver.EXE UCX V3.2-9L (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9L UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9L UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9L UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9L UCX$INETACP.EXE UCX V3.2-9L o Problem: The system will crash at INETACP_USER_INFO_AST_CONT in the UCX$INET_ACP process, due to a corrupted SERV$L_REXEC_FLNK queue. Solution: In the code added to fix Problem #2 in ECO K, a problem was introduced that corrupted the SERV$L_REXEC_FLNK queue. In an attempt to remove all substantive code from the INETACP_USER_INFO_AST, it was overlooked that, at the time the routine is called, the REQCB in question is already queued on the SERV$L_REXEC_FLNK queue. Then when the same, already queued REQCB is queued to the AQB, the former queue gets corrupted. The solution is to REMQUE the REQCB while still in AST context and before INSQUEing again. ECO M 21-July-1995 AXP and VAX Images: UCX$BGDriver.EXE UCX V3.2-9M (Alpha) UCX$INTERNET_SERVICES.EXE UCX V3.2-9M UCX$INTERNET_SERVICES_V6.EXE UCX V3.2-9M UCX$INTERNET_SERVICES_SEC.EXE UCX V3.2-9M UCX$INTERNET_SERVICES_SEC_V6.EXE UCX V3.2-9M UCX$INETACP.EXE UCX V3.2-9M o Problem: A system crash may occur in the UCX$INET_ACP process with KRNLSTAKNV. Solution: The source of this problem is that the UCX$INET_ACP process is calling UCX$ACCESS_SHR routines from kernel mode. These routines result in calls to RMS which does not support being called from kernel mode. The solution is to introduce a mechanism that allows the ACP to essentially continue a thread begun in kernel mode into user mode and then back to kernel mode. The implementation includes reorganizing the ACP's use of its kernel mode stack. From now on, the ACP will switch to a private kernel mode stack as soon as it enters kernel mode. When it wants to continue a thread into user mode, it will call the INETACP_CONTINUE_IN_USER_MODE routine which will wrap up its current private stack context, switch back to the normal kernel stack, and return back to user mode where the request will be processed. When the user mode request is finished, a call back to kernel mode at routine INETACP_CONTINUE_KERNEL will be made. Processing will pickup the context left on the private stack and continue. ECO N 11-Aug-1995 AXP and VAX Image: UCX$INETACP.EXE UCX V3.2-9N o Problem: A previous fix (ECO M) had the side effect of causing incorrect offset data to be returned by IO$_ACPCONTROL QIOs in which a HOSTENT_OFFSET or NETENT_OFFSET structure was requested. This problem prevents the NFS client from operating properly. Solution: Update the offsets in the copy of the buffer which will be returned, not in the original buffer written by UCX$ACCESS_GET. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$INETDRIVER.EXE --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 06-Jan-1995 VAX Images: UCX$INETDRIVER.EXE o Problem: A system crash occurs with the KNRLSTAKNV error code. The crash is due to the occurrence of an IPL 3 (RESCHED) interrupt while the SP is at or near a page boundary and the page at the next lower address range has never been modified (i.e., the M bit is clear in the PTE). The problem arises from the inability of some CPUs to handle an M bit trap while pushing the PC/PSL onto the kernel stack. Solution: "Pre-modify" the pages of the newly allocated kernel stack. ECO 7 Updates: -------------- ECO B 28-Apr-1995 Images: UCX$INETDRIVER.EXE UCX V3.2-9B o Problem: A PGFIPLHI bugcheck occurs in IOC$VERIFYCHAN when it is called from INET_CANCEL. Solution: Release the forklock before calling IOC$VERIFYCHAN. ECO 8 Updates: -------------- ECO C 20-Jun-1995 Images: UCX$INETDRIVER.EXE UCX V3.2-9C o Problem: A system hang when a process, running in a Kernel AST thread, tries to re-acquire the I/O Database Mutex that it already owns. Solution: In the INET_CANCEL routine which calls EXE$CANCELN, explicitly release the I/O Database Mutex before calling EXE$CANCELN and explicitly re-acquire it after the return from EXE$CANCELN. This is done because EXE$CANCELN lowers IPL to 0, thereby leaving the process open to being interrupted by an AST that might try to re-acquire the Mutex. The INET_CANCEL routine has been reorganized. o Problem: Thread startup fails to initialize the OP_R_FLAGS. This can lead to problems with asynchrony and I/O completion. Solution: When initializing the thread, clear the OP_R_FLAGS to ensure that the initial context is clear. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$TNDRIVER.EXE --------------------------------------------------------------------------- ECO 3 Updates: -------------- ECO B 26-Jan-1995 Images: UCX$TNDRIVER.EXE UCX V3.2-9B o Problem: A system crash with CPUSPINWAIT may occur due to a corrupted TIMER queue. Solution: Synchronize the use of UCB-based TQE between TN$CANCEL_TIMER and the various timer routines that are invoked. The UCB$L_TN_TIMER_FLAG field which is normally set to zero has been added. In TN$CANCEL_TIMER, the call to EXE$RMVTIMQ does NOT remove the TQE because it has already been REMQUEd by the system and its thread is presumably looping, waiting to acquire the spinlock. The UCB$L_TN_TIMER_FLAG will be set to -1. Then in the three timer routines, TN$DISCONN_TIMEOUT, TN$FREE_UCB_TIMER, and TN$LOGIN_TIMER, the flag is tested. If it is negative, it is cleared and the call is simply dismissed since it was the intention of the caller of the TN$CANCEL_TIMER to cancel the timer in the first place. ECO D 8-Feb-1995 Images: UCX$TNDRIVER.EXE UCX V3.2-9D o Problem: When the UCX TELNET server received both a DO ECHO and a WILL ECHO from the remote host, only the first would get a response. Solution: Set the remote echo flag, rather than the local echo flag, when a WILL ECHO message is received. ECO 5 Updates: -------------- ECO E 3-Mar-1995 AXP AND VAX Images: UCX$TNDRIVER.EXE UCX V3.2-9E o Problem: System crashes with INVEXCEPTN may occur due to sub-negotiation buffer overrun when receiving data from a XYPLEX Terminal Server. Solution: Initialization of the sub-negotiation buffer incorrectly calculated the end of the buffer. When an illegal sequence of thousands of bytes of data arrived, the buffer overran and destroyed a pointer which led to a crash. The solution is to correctly limit the size of the sub-negotiation buffer. ECO 6 Updates: -------------- ECO F 4-Mar-1995 AXP AND VAX Images: UCX$TNDRIVER.EXE UCX V3.2-9F o Problem: A system crash with DOUBLDEALO due to a TNDRIVER UCB overrun into following ORB. Solution: The UCB$T_TEL_REM_HOST_PORT field is filled in by a MOVC3 instruction whose length operand is picked up from the associated BG UCB without verification. New code has been added to verify that the length is no bigger than the size of the field and to limit to the MOVC3 to this upper bound. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$IPC_SHR.EXE --------------------------------------------------------------------------- ECO 8 Updates: -------------- ECO A 14-June-1995 AXP AND VAX Image: UCX$IPC_SHR.EXE UCX V3.2-9A o Problem: When one thread is blocked doing I/O, in a multi-threaded environment other threads were intermittently also blocked. Solution: The DECthreads environment does not always correctly handle the case where threads are sharing an event flag and each thread is waiting for it to be set. Modify the UCX socket library so that a new event flag is allocated for each operation, rather than using the same event flag over and over. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$TELNET.EXE --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 09-Nov-1994 AXP AND VAX Images: UCX$TELNET.EXE V3.2 - 9A o Problem: The PRINT-SCREEN function on AXP returns "file not found". Solution: In [TELNET]RMSFILEIO.BLI, the new macro ACTUALPOSITION() was added to replace the existing macro ACTUALNUMBER(), which does not function properly due to a compiler bug. Instead of attempting to create the file, it always attempts to append to it. o Problem: If the server requests a print screen on VAX, a loop with the error message "file not found" is entered. Solution: In [TELNET]STESCREEN.B32, clear the PRINTING flag to prevent the STE from continuously attempting to print on an error. The error handler unwinds and continues with the flag left clear to prevent the same error from occurring over and over again. ECO 6 Updates: -------------- ECO C 2-Feb-1995 Images: UCX$TELNET UCX V3.2-9C o Problem: An unprivileged user may get the OPER privilege authorized in a subprocess (SPAWN commmand). Solution: Modify the SPAWN routine to take away the OPER privilege if it is not authorized. ECO G 06-Apr-1995 AXP/VAX Images: UCX$TELNET.EXE V3.2-09G o Problem: When using IBM-3278-4 model terminals, the TN3270 signals the message "network resource not available". Solution: In [TELNET]TELNET$CLIENT_NET.C, the IO$M_NOWAIT modifier to the write $QIO has been removed. This allows TELNET to wait for the transmission of the data instead of returning to command mode with a resource problem. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 BIND Server --------------------------------------------------------------------------- ECO 7 Updates: -------------- ECO B 16-MAY-1995 Images: UCX$NSLOOKUP.EXE UCX V3.2-9B o Problem: The "mcr ucx$nslookup" command with the wrong bind-server name in command line caused an ACCESS VIOLATION. With the wrong server-name passed, an error loop was invoked which apparently invoked the "perror" call with a null string. VAXC could not handle "perror" when a null string was passed as an argument. Solution: The ACCESS VIOLATION was replaced with an error message. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 BIND resolver --------------------------------------------------------------------------- ECO 7 Updates: -------------- ECO B 03-Apr-1995 AXP/VAX Images: UCX$ACCESS_SHR.EXE UCX V3.2-9B o Problem: When the BIND resolver receives a response from a nameserver indicating that datagram truncation has occurred, then fails to establish a stream (TCP) connection, and finally tries the next server in the list, the resolver uses an excessive timeout in waiting for a response from this second server. If this occurs when the UCX$INETACP process is calling the resolver, the result can be an apparent UCX-wide system hang. Solution: In RES_SEND.C, bounds checking is performed on the timeout calculation. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$BOOTP.EXE --------------------------------------------------------------------------- ECO 2 Updates: -------------- ECO A 16-Jan-1994 AXP/VAX Images: UCX$BOOTP.EXE V3.2-09A o Problem: The BOOTP server is not providing the optional vendor data for boot file size (i.e., tag type 13 in RFC1497). This is confusing code, that expects to find the file size in the BOOTP database, when in fact the server looks up the file size directly. Solution: Remove the check for file size in the BOOTP database record and just use the size, if any, from the GetFileSize() routine. o Problem: The BOOTP server is not providing the optional vendor data for Gateways (i.e., tag type 3 in RFC1497). Arguments in a memcpy() call were transposed. Solution: Fix the error. ECO 8 Updates: -------------- ECO C 7-Aug-1995 AXP and VAX Images: UCX$BOOTP.EXE UCX V3.2-09C o Problem: Boot replies are sent to the wrong port on the bootp relay servers. Can't run interactively for testing. ACCVIO when bootp client name isn't defined. Can't find client load file. No client host name in boot reply. Omit file version number in load file name. Obtain all local IP addresses from kernel, and send proper one for each client. Clean up references to 'gateway' when 'relay' is the proper term. Solution: Fix check for relay agent address in giaddr for BOOTREQUEST, not BOOTREPLY op code. Send replies to relay ('gateway') servers' ServerPort. Use the terms 'ClientPort' and 'ServerPort' to be consistent with RFC951. Fix the socket()/bind() problem to appropriately run the bootp server interactively Fix BootRequest() to handle clients that have no host name - this caused an ACCVIO Fix GetFileSize() to properly handle file name construction when there is no HostName. Fix VendHost() to handle null or abbreviated HostName. Move file name to Bootp response in GetFileName, and leave off the file version number. Instead of trusting that gethostname() returns the host name that points to ALL interfaces, read the ifnet structure from the kernel, and build a table of known local IP addresses for outgoing responses to use in Siaddr. Match subnetmasks to select the appropriate address to send. Put the server name in the response packet, according to the the name associated with the interface, (i.e., gethostbyaddr()). Have the Trace routines refer to the relay as a relay, not a 'gateway'. The semantics are confusing enough (RFC 951). It's a relay, not a gateway. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$TFTP.EXE --------------------------------------------------------------------------- --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$FTP.EXE. --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 5-Dec-1994 AXP and VAX Images: UCX$FTP.EXE UCX V3.2-9A o Problem: GET strips the device and directory from a local filespec. Solution: This code has been removed. ECO B 7-DEC-1994 VAX/AXP Images: UCX$FTP.EXE UCX V3.2-9B o Problem: The user gets a message saying that a number of bytes transferred even if none did. Solution: Fix send_data and recv_data to eliminate this. ECO 2 Updates: -------------- ECO C 27-DEC-1994 VAX/AXP Images: UCX$FTP.EXE UCX V3.2-9C o Problem: A tape needs 14 bytes minimum on a sys$write. Solution: Fix recv_bin and recv_normal_bin to pad to 14. ECO 7 Updates: -------------- ECO D 11-APR-1994 VAX/AXP Images: UCX$FTP.EXE UCX V3.2-9D o Problem: The disable port does not work. Solution: Fixed initconn to use the correct port if the PORT command is disabled and to add REUSEADDR on control port because it may be used as a dataport. A test of sendport == -1 was changed to sendoport == 1. Sendport cannot be -1. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 UCX$FTPC.EXE and UCX$FTPD.EXE --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 17-Nov-1994 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9A o Problem: Using node:: syntax produces errors on get and put. Solution: Do not attempt to check file access or determine if the file is a directory over the network. Notes: 1) This means that one can copy a file that is a directory, but it will be garbage on the target end. 2) The error, if the access is denied, is not a privilege error. It is 'Failed to open file'. ECO B 30-Nov-1994 AXP/VAX Images: UCX$FTPC.EXE UCX V3.2-9B o Problem: File parsing in rnfr and retr do not correctly handle multi-directory linked logicals. Solution: An error in check_filetype that was leaving assigned was fixed channels. ECO C 2-DEC-1994 AXP/VAX Images: UCX$FTPC.EXE UCX V3.2-9C o Problem: When an even number of subdirectories is involved in checkdir_access, the user gets a 'privilege' error. Solution: Fix btest of NAM$V_DIR_LVLS to check all 3 bits. ECO 2 Updates: -------------- ECO D 21-DEC-1994 AXP/VAX Images: UCX$FTPC.EXE UCX V3.2-9D o Problem: Cannot write to tape at all. Solution: Recv_vms_plus_bin and recv_normal_bin were changed to handle tape requests by not checking access if a tape device is specified. o Problem: A RMS-write error occurs when writing to tape. Solution: Fixed appe_vms_plus_bin, appe_normal_bin, recv_normal_bin and recv_vms_plus_bin to make all tape writes >= 14 bytes. Changed l_print call to dev_cls. Fixed code to write at least 14 bytes to tape (tape driver restriction). o Problem: DIR with node:: does not work. It gives a "NO privilege" and outputs an incorrect string. Solution: Do not perform a checkfl_access (in list). Pass the correct buffer to prntdirinf. ECO E 11-JAN-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9E o Problem: A put cannot be performed to a searchlist logical. Solution: Fixed a problem in stor(). ECO 4 Updates: -------------- ECO F 23-JAN-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9F o Problem: The $parse leaves channels behind if a search list is involved. Solution: Many routines were modified to clean up channels after the $parse. A new routine was added to make the clean-up happen. ECO G 27-FEB-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9G o Problem: A write cannot be performed to a non-directory device (e.g., LTA:, terminal). Solution: Do not check the directory on such devices. ECO 5 Updates: -------------- ECO H 21-MAR-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9H o Problem: A put to a concealed device with a directory of [000000] fails. Solution: Stor no longer pre-checks directory access. ECO 7 Updates: -------------- ECO I 11-APR-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9I o Problem: Sendport (disable port) does not work. Solution: 1. Dataconn was modified to use the correct port if the PORT command is disabled. 2. The connect in dataconn will now retry for 32 seconds. 3. All retry_cnt loops were changed to 32 instead of 30. ECO J 20-APR-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9J o Problem: The checkdir_access is looking for ']' if there are subdirectories in the target specification of a 'put' command. If the angle brackets are used, this search fails, causing a 'protection' error on a 'put'. Solution: Stor does not checkdir_access if an '<' is present. ECO K 25-APR-1995 VAX/AXP Images: UCX$FTPC.EXE UCX V3.2-9K UCX$FTPD.EXE UCX V3.2-9K o Problem: Exclamation points in UCX$FTP_SERVER_ANNOUNCE and UCX$FTP_ANONYMOUS_WELCOME messages caused problems. Solution: The FTP$SERVER_ANONYMOUSD\send_server_message call was modified to sendreply and FTP$SERVER_ANONYMOUSD\send_client_message call was changed to postreply. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 SMTP Mail Facility --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A VAX/AXP Images: UCX$SMTP_MAILSHR.EXE UCX V3.2-9A UCX$SMTP_RECEIVER.EXE UCX V3.2-9A UCX$SMTP_SYMBIONT.EXE UCX V3.2-9A UCX$SMTP_PARSESHR_TV.EXE UCX V3.2-9A UCX$UUENCODE.EXE UCX V3.2-9A UCX$UUDECODE.EXE UCX V3.2-9A o Problem: If mail comes in from a non-SMTP user to a user who has forwarded their mail via SMTP on the local system, the VMSmail From line will reject the reply command. If the non-SMTP transport from which the mail comes is DECnet, the From line is enclosed in double quotes. If the non-SMTP transport is MTS, the From line is enclosed in double quotes and also contains backslashes preceding the inner double quotes in the address. The old code would produce: From: "SOMNOD::SOMEBODY" rather than From: SOMNOD::SOMEBODY; or this: From: "MRGATE::\"MRGATE::SUMNOD::SENDING_USER\"" rather than From: MRGATE::"MRGATE::SUMNOD::SENDING_USER" Solution: This has been fixed. o Problem: UCX SMTP does not recognize mail to be delivered to the domain specified by the substitute domain as local. This required the workaround of defining an alias in the local host database matching the substitute domain. For example, if UCX host "abc.def.com" has an SMTP substitute domain of "def.com" defined and mail goes to host "abc.def.com" addressed to "jones@def.com", this mail would not be recognized as local and delivered locally to user jones unless an alias "def.com" for the host "abc.def.com" was defined in the local host database. Solution: This problem has been fixed. UCX SMTP now recognizes mail sent to the substitute domain as local. In the event that you do not want it to recognize mail sent to the substitute domain as local, define the system logical UCX$SMTP_NO_SUBS_DOMAIN_INBOUND before starting the SMTP mail queue. o Problem: For inbound mail, UCX SMTP will not put anything in to the VMSmail CC line. Solution: For inbound mail, UCX SMTP now sets the VMSmail CC line. (See the next problem/solution for more information.) o Problem: For inbound mail, UCX SMTP will unconditionally put the RFC To header in to the VMSmail To: line. Solution: For inbound mail, UCX SMTP now puts the X-VMS-To RFC header in the VMSmail To: line for inbound mail if an X-VMS-To RFC header is present. If one is not, then the RFC To: header will go into the VMSmail To: line. The same is now true for the VMSmail CC: line. That is, if an X-VMS-Cc RFC header is present it will go in to the VMSmail CC: line. Otherwise, any RFC CC header will go in to the VMSmail CC: line. If it is not desireable to put the X-VMS-... headers in the VMSmail To: and CC: lines then define the system logical UCX$SMTP_INBOUND_NOXVMS before SMTP execution queue startup. ECO 5 Updates: -------------- ECO B 23-Mar-1995 VAX/AXP Images: UCX$SMTP_MAILSHR.EXE UCX V3.2-9B UCX$SMTP_RECEIVER.EXE UCX V3.2-9B UCX$SMTP_SYMBIONT.EXE UCX V3.2-9B UCX$SMTP_PARSESHR_TV.EXE UCX V3.2-9B UCX$UUENCODE.EXE UCX V3.2-9B UCX$UUDECODE.EXE UCX V3.2-9B o Problem: The VRFY and EXPN commands do not work. Even though the VRFY command is optional in its implementation, some systems rely on it by performing a VRFY on a user or an EXPN on a list before sending mail to it. Solution: This problem has been fixed. o Problem: The UCX SMTP receiver cannot handle a multi-line reply to the HELO command. Solution: This problem has been fixed. ECO 7 Updates: -------------- ECO C 5-Jun-1995 VAX/AXP Images: UCX$SMTP_MAILSHR.EXE UCX V3.2-9C UCX$SMTP_RECEIVER.EXE UCX V3.2-9C UCX$SMTP_SYMBIONT.EXE UCX V3.2-9C UCX$SMTP_PARSESHR_TV.EXE UCX V3.2-9C UCX$UUENCODE.EXE UCX V3.2-9C UCX$UUDECODE.EXE UCX V3.2-9C o Problem: When many inbound SMTP connections are made at the same time, UCX SMTP will sometimes create control file names that are identical for more than one mail. This causes UCX SMTP to deliver one of the versions of the control file multiple times and not to deliver the rest at all. Solution: UCX SMTP is now sensitive to the file version number so that files with the same name are handled appropriately. o Problem: It is impossible to send a file using UCX SMTP with lines greater than 512 characters and less than 1000 characters. UCX SMTP inserts . The SMTP RFC allows up to 1000 characters. Solution: The buffer size has been changed to 1000 (inclusive of the ). Note that this fix applies to outbound mail. For mail received from SMTP and delivered locally via VMS mail, line breaks () must still be added every 255 characters because this size is a VMS mail limit. o Problem: If SYS$SCRATCH is defined to a bad value for the SMTP symbiont process (i.e., a directory where a file cannot be created), the UCX SMTP symbiont cannot deliver any local mail. Solution: RMS Parse now calls to check SYS$SCRATCH directory validity in the mainline of the SMTP symbiont. If it is invalid, then SYS$SCRATCH is redefined to point to the postmaster directory. o Problem: SMTP addresses placed in SMTP mailing list files could not contain comments. This applies to the mailing lists in SYS$SPECFIC:[UCX_SMTP] which contain SMTP addresses and are processed by the SMTP symbiont. This does not apply to VMS mail distribution lists which contain SMTP addresses in the SMTP%"..." format. Solution: This problem has been fixed. o Problem: SET FORWARD/USER=username SMTP%"..." cannot be used to send to multiple SMTP addresses. Solution: SET FORWARD/USER=username SMTP%"..." can now be used to forward mail to multiple recipients. For example, if the following forward is defined on host xyz.com: MAIL> SET FORWAR/USER=HOTLINE SMTP%"""kim@xyz.com, joe@abc.xyz.com""" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | More than one name here -->--->------->-----+ This will cause mail sent to the user HOTLINE to be sent via SMTP to kim@xyz.com and to joe@abc.xyz.com. If mail is being sent to HOTLINE from the host on which the forwarding has been defined that mail can be sent to that username directly like this: MAIL> send To: HOTLINE ... If you are on another host you can send to hotline@xyz.com and UCX SMTP on host xyz will expand the mail to go to kim@xyz.com and to joe@abc.xyz.com. Note that this is limited by maximum length of a VMS mail command line, 256 characters. o Problem: 1. On Alpha systems, ANALYZE MAIL/REPAIR frequently terminates with the "%SYSTEM-F-IVLOGNAM, invalid logical name" message. 2. Mail directories which are specified with "<",">" instead of "[","]" (e.g., dka0:) are not being handled correctly which results in an access violation. 3. Usernames of 12 characters in length are not being handled correctly which results in the following error message in ANALYZE MAIL/REPAIR: %UCX-W-ANA_QUEACC, queue access failure -JBC-F-INVPARLEN, invalid parameter length ..... Solution: This problem has been fixed. o Problem: A control file error occurs when mail is sent from a user whose mail directory is obtained from a concealed logical name. Solution: This problem has been fixed. ECO 8 Updates: -------------- ECO D 28-Jul-1995 VAX/AXP Images: UCX$SMTP_MAILSHR.EXE UCX V3.2-9D UCX$SMTP_RECEIVER.EXE UCX V3.2-9D UCX$SMTP_SYMBIONT.EXE UCX V3.2-9D UCX$SMTP_PARSESHR_TV.EXE UCX V3.2-9D UCX$UUENCODE.EXE UCX V3.2-9D UCX$UUDECODE.EXE UCX V3.2-9D o Problem: ANALYZE MAIL/DELETE submits zero-block control files to the symbiont rather than just deleting them. Solution: Zero block Control files greater than 12 hours old are deleted. o Problem: If a user account exists but the mail directory does not, there is no need to signal a warning/error message. Do not display any error message if a mail directory is not found. This has been suppressed to avoid any unnecessary concerns that may be raised when a message such as this is seen :" .. directory cannot be accessed", "... bad parameter error". Solution: This problem has been fixed. o Problem: Various ANALYZE MAIL/DELETE problems exist. Solution: This problem has been fixed. Note that /DELETE will delete control files as long as they are not already in the queue. If they are, they will be released and the message will be processed. The /DELETE and /REPAIR qualifiers work properly for all cases when they are used together. o Problem: UCX LPD Received: RFC headers were missing a required ";" before the date field. Solution: This problem has been fixed. o Problem: When delivering a mail to MTS (aka Message Router), the symbiont puts "UCX_SMTP" into the From field. If the from field is passed to MTS as intended (i.e., smtp%"user@host") and MTS tries to deliver the mail to VMSmail, MTS will bounce the mail. This is because it has to construct a From address with an SMTP address inside an MTS address which is impossible since VMS mail cannot currently handle the nested double quotes that would result. An innocuous UCX_SMTP value is the used so that the mail goes through, even with an incorrect from field. Note that the from field that should be passed to MTS is preserved in an X-Original-From header. However, there is no need for this work-around when the mail is to be delivered by MTS to All-in-1. The All-in-1 address format can handle this situation and MTS will not bounce the mail. Solution: For sites whose users are forwarding their mail through MTS to All-in-1, the following command should be executed prior to queue start-up: $ DEFINE/SYSTEM UCX$SMTP_MTS_ALLIN1 1 This disables the SMTP symbiont function that makes UCX_SMTP part of the from field. This allows the correct address to be received by All-in-1 mail users. NOTE: If there are VMSmail users on the system, defining this logical will cause their mail to bounce. This workaround was included only to deal with VMSmail's inability to handle nested double quotes and will be removed once VMSmail is updated. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 LPD Facility --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A VAX/AXP Images: UCX$LPD_SHR.EXE UCX V3.2-9A UCX$LPD_SMB.EXE UCX V3.2-9A UCX$LPD_RCV.EXE UCX V3.2-9A UCX$LPQ.EXE UCX V3.2-9A UCX$LPRM.EXE UCX V3.2-9A UCX$LPRSETUP.EXE UCX V3.2-9A UCX$TELNETSYM.EXE UCX V3.2-9A o Problem: The LPD receiver signals a protocol error if it receives the "Print any waiting jobs" command. This command is indicated by a control byte equal to 1. Solution: The LPD receiver now ignores this command by acknowledging it and continuing. No protocol error occurs. o Problem: If SYS$SCRATCH is not defined in the system table and an inbound print request with a mail notification request comes in, the UCX$LPD_QUEUE symbiont dies with %MAIL-E-OPENOUT, -RMS-F-DEV errors. A previous fix for SMTP prevented the SMTP symbiont from defining SYS$SCRATCH in the system table which was not correct behavior for SMTP. However it had the positive side-effect of disguising this problem in LPD because SYS$SCRATCH was always defined. Solution: Check to see if the SYS$SCRATCH logical is defined in the LPD symbiont process. If it is not, then define it to UCX$LPD_SPOOL in the LPD symbiont process's process logical table. o Problem: An inbound job completion OPCOM message is no longer generated even if the LPD service log option 'LOGOUT' is set. Solution: This problem has been fixed. o Problem: LPD_RCV and LPD_DEBUG diagnostics logicals provide no diagnostics to track what the LPD client sends over a link and what the receiver receives. Solution: The LPD_RCV and LPD_DEBUG diagnostics logicals have been enhanced to provide some information more useful to customers in diagnosing problems. For those customers who have used the old LPD diagnostics by defining the system logicals LPD_RCV and LPD_DEBUG to 65535, the new value to get the same effect is 7. So, replace: $ DEFINE/SYSTEM LPD_DEBUG 65535 $ DEFINE/SYSTEM LPD_RCV 65535 with $ DEFINE/SYSTEM LPD_DEBUG 7 $ DEFINE/SYSTEM LPD_RCV 7 LPD_DEBUG and LPD_RCV are bit-mapped values. The low order three bits are used (hence a value of 7) to give the effect previously produced by all the bits being set (old value of 65535). Additionally, a new diagnostic has been added to LPD_DEBUG and LPD_RCV. If the fourth bit is set (value 8) then the LPD symbiont will log each buffer that it sends over the TCP/IP link to the log file and the LPD receiver will log each buffer that it receives from the TCP/IP link to the log file. This provides a way to see exactly what the LPD is sending (for outbound jobs) and receiving (for inbound jobs) in order to diagnose problems. To turn on just this new diagnostic and no other diagnostics, set the fourth bit of the LPD_DEBUG and LPD_RCV logicals by defining them to 8. To get the old diagnostics along with this new one, define LPD_DEBUG and LPD_RCV to 15. Use of these is only recommended in the diagnosis of problems. Leaving the diagnostics on during normal use will greatly slow the performance of LPD and will produce large log files. Note that the LPD_DEBUG and LPD_RCV logicals are independent. LPD_DEBUG applies to outbound jobs (the LPD client) where LPD_RCV applies to inbound jobs (the LPD server). LPD_DEBUG will cause diagnostics to be written to an LPD queue's log file. LPD_RCV will cause diagnostics to be written to the receiver's log file, UCX$LPD_RCV_LOGFILE.LOG. ECO 2 Updates: -------------- ECO B 16-Jan-1994 AXP Images: UCX$LPD_SHR.EXE UCX V3.2-9A UCX$LPD_SMB.EXE UCX V3.2-9A UCX$LPD_RCV.EXE UCX V3.2-9A UCX$LPQ.EXE UCX V3.2-9A UCX$LPRM.EXE UCX V3.2-9A UCX$LPRSETUP.EXE UCX V3.2-9A UCX$TELNETSYM.EXE UCX V3.2-9A o Problem: Outbound PRINT/PASSALL of a file with an embedded carriage control adds extra line feeds. If a PRINT/PASSALL of a non-stream LF file which contains an embedded carriage control is done to an outbound LPD queue and the embedded carriage control does not end text lines in a line feed, then an extra feed is inserted for each line. This problem manifests itself as doublespaced printing. The most common cause of this is printing a non-stream LF file from an application that ends its text lines with line feed carriage control rather than carriage return line feed. Solution: This problem has been fixed. If a problem occurs with /PASSALL printing, the previous behavior can be returned by doing: $ DEFINE/SYSTEM UCX$LPD_STREAM_PASSALL 1 This should be unnecessary. If a problem with /PASSALL printing is fixed by this definition, please report it to Digital. o Problem: Contention over the shared LPD receiver log file (UCX$LPD_RCV_LOGFILE.LOG) makes problem diagnosis more difficult. Solution: All UCX LPD receiver diagnostics are now written to UCX$LPD_RCV_STARTUP.LOG. UCX$LPD_RCV_LOGFILE.LOG is obsolete. o Problem: A receiver fix included in ECO C to handle a control file before data files caused mis-handling of multiple LPD jobs per session. If multiple jobs are printed in quick succession from U*ix, then some jobs are lost by the LPD receiver. Solution: This problem has been fixed. o Problem: UCX LPD does not honor OpenVMS flag page print options. Outbound LPD jobs (client): The only way to suppress flag/banner pages is to print with /PARAM=NOFLAG. Since there is no way to set a queue to a /DEFAULT=/PARAM=NOFLAG, there is no way for OpenVMS applications that submit jobs to print queues with $SNDJBC to control printing of flag pages without changing them to submit with /PARAM=NOFLAG. It would also be more intuitive for OpenVMS users and system managers if LPD supported PRINT/[NO]FLAG. Inbound LPD jobs (server): The presence of an 'L' control card in the incoming control file indicates that a flag page is to be printed. However, when the UCX LPD submits an incoming job to the final destination queue it submits the job neither with /FLAG nor /NOFLAG. Thus, it ignores the presence/absence of the 'L' card and leaves the flag page generation up to the default of the destination queue. Solution: There is a new logical, UCX$LPD_VMS_FLAGPAGES, which, if defined, tells UCX LPD to honor what OpenVMS tells it to do with flag pages for outbound jobs and to submit inbound jobs explicitly with /FLAG or /NOFLAG based on the presence of the 'L' card in the control file. To access the new behavior, the following should be added to UCX$LPD_STARTUP.COM: $ DEFINE/SYSTEM UCX$LPD_VMS_FLAGPAGES 1 * For outbound jobs: - When this logical is defined /PARAM=NOFLAG has no effect. - If this logical is defined UCX LPD will honor the /FLAG or /NOFLAG qualifiers from the PRINT command and from the /DEFAULT= and the /SEPARATE= settings on the queue itself. - Though the /[NO]FLAG qualifier is a positional qualifier on the OpenVMS print command, it cannot be honored since the LPD print protocol provides no way to express that one file in a job should receive a banner page and another one should not. This works: $ PRINT/FLAG/que=outbound-LPDQ file1.txt, file2.dat ^^^^^ while this does not: $ PRINT/que=outbound-LPDQ file1.txt,file2.dat/FLAG ^^^^^ - For inbound jobs: - If the logical is defined, the UCX LPD symbiont (running in the UCX$LPD_QUEUE queue) submits the inbound job as /FLAG if the control file says to print a banner page (i.e., includes an 'L' card) and it submits the job as /NOFLAG if the control file says no banner page (no 'L' card). - A problem occurs for those depending on the old incorrect behavior of FLAG pages for inbound jobs. - If the destination queue is set up with the default being NOFLAG and a job comes in indicating that a flag page is to be printed, then the job will be submitted with a flag page. This could cause difficulties for a site that depended on the old behavior, for example, printing has been working in UCX LPD without suppressing the flag/banner page. It was working (i.e., a flag page is not printing) because UCX LPD did nothing with respect to flag pages and the destination queue happened to be set up with /DEFAULT=NOFLAG. With the new LPD server, an unwanted flag page will print. The only way to get around this is to force the user to print explicitly with flag page suppression. - For both inbound and outbound jobs: - UCX$LPD_VMS_FLAGPAGES is only translated once at symbiont startup. Different behavior on each queue can be obtained by defining the logical before queue startup if the new behavior is desired. If the old behavior should occur, deassign the logical before start-up for that particular queue. - The corresponding UCX$LPRSETUP has been changed for the addition of a remote printer. - Regardless of whether or not the logical is defined, UCX$LPRSETUP now inquires if the default for the new remote queue should be printing with a flag page. If the response is yes, then the queue is created with /DEFAULT=FLAG. The queue startup text in the UCX$LPD_STARTUP.COM file for the queue also contains the /DEFAULT=FLAG. For sites that do not define the new logical, this behavior will be harmless because the symbiont will ignore the /DEFAULT=FLAG. - If use of this new feature is desired, please edit the queue startup commands in UCX$LPD_STARTUP.COM to have a /DEFAULT=FLAG for each outbound LPD queue that should default to printing flag pages. - The old behavior is preserved if the UCX$LPD_VMS_FLAGPAGES logical is not defined. That is, everything will work exactly as it did before. The only way to suppress flag pages is to PRINT/PARAM=NOFLAG ECO 5 Updates: -------------- ECO C 22-Mar-1995 AXP Images: UCX$TELNETSYM.EXE UCX V3.2-9C o Problem: The very end of files do not print when the link idle timeout logical (UCX$TELNETSYM_IDLE_TIMEOUT) is not defined. Solution: This problem has been fixed. o Problem: There are various problems associated with bringing down the link immediately at the end of each job (i.e., the link idle timeout logical has not been defined). The workaround for these problems was to define the link idle timeout logical. Solution: These problems have been fixed. o Problem: TELNET symbiont process names default to SYMBIONT_nnn after the first process created. Solution: The first TELNET symbiont process creates itself as UCX$TNSYM1. The second calls itself UCX$TNSYM2, etc. o Problem: OPCOM messages sent by TELNETSYM do not specify the remote printer for which they are sending information. This makes it impossible to know which execution may have problems. Solution: OPCOM messages now include name of execution queue. o Problem: If there is an idle link to the printer (i.e., no print job is in process and the idle link timeout is configured for the printer but has not yet expired) and the power on the printer is cycled, the TELNET symbiont does not recognize that the link has gone away until the next job is printed. This print job fails with NOIOCHAN. Solution: Because the TELNETSYM did not keep an outstanding read on the TCP link to the printer, it could not discover the link was gone until it tried to write to the link when the next print job came in. The TELNETSYM now keeps an outstanding read on the link at all times so it detects channel loss immediately. Note that in the case where the printer goes dead (i.e., is powered off and on), this will only be recognized as a dead link by the TELNETSYM if you have configured TELNETSYM keepalive for that execution queue. To configure TELNETSYM keepalive, invoke the following DCL command before starting the queue: $ DEF/SYS UCX$TELNETSYM_KEEPALIVE 1 Further, the timing of when the dead link is recognized as such is set by the drop and probe time on the link. The system defaults can can be used for these (visible using the UCX SHO PROTO TCP/PARAM command) or either or both of these values can be set by defining the logicals UCX$TELNETSYM_DROPTIME and UCX$TELNETSYM_PROBETIME. For example, to set the drop time to 20 seconds and the probe time to 15 seconds execute the following commands: $ DEF/SYS UCX$TELNETSYM_KEEPALIVE 1 $ DEF/SYS UCX$TELNETSYM_DROPTIME 20 $ DEF/SYS UCX$TELNETSYM_PROBETIME 15 before starting the queue. (Remember that the drop time must be greater than the probetime.) o Problem: TELNETSYM log files are not automatically purged. Solution: The new TELNETSYM logical, UCX$TELNETSYM_LOG_KEEP, sets the maximum number of logs to be maintained. Use the following command to let TELNETSYM know that no more than 3 copies of a log file should be kept: $ DEF/SYS UCX$TELNETSYM_LOG_KEEP 3 o Problem: Symbiont crashes can take up to 16 execution queues down. This is especially problematic for production environments. Solution: A new TELNETSYM logical, UCX$TELNETSYM_STREAMS, sets the number of execution queues that a TELNETSYM symbiont process can serve. The legal value for this logical is between 1 and 16, inclusive. This logical can be used to effectively turn the TELNET symbiont into a single threaded symbiont if it is defined to 1. For example: DEF/SYS UCX$TELNETSYM_STREAMS 1 If the logical is going to be used in this way, it makes the most sense to define the logical once and let the value stand for each queue that is started. If TELNETSYM is run as a single-threaded symbiont, then a symbiont crash will only bring down the one execution queue in which the crash occurred. This TELNETSYM change is obviously only a workaround. For those familiar with modified print symbionts, the value entered for UCX$TELNETSYM_STREAMS is passed to the PSM$PRINT system routine in the "streams" argument. If this logical is not defined, then the behavior of the TELNETSYM remains as it was before. It will run with the OpenVMS maximum of 16 execution queues per symbiont process. o Problem: TELNETSYM crashes with PSM-F-BADLOGIC if the following sequence of events occurs: 1. A job is printed to a TELNETSYM queue but a link cannot be established to the printer because the printer is not responding. The printer may be busy printing another job, be out of paper, etc. 2. This queue is stopped with a STOP/QUEUE/RESET; and 3. A TELNETSYM queue (either another queue or the first one) is started and the remote printer pointed to by the queue that is started is available. Solution: This problem has been fixed. o Problem: Another problem like the previous one existed too. If the same sequence occurred, but a DELETE/ENTRY is done on the job rather than a STOP/QUEUE/RESET on the queue, then the queue would hang. Solution: This problem has been fixed. ECO 8 Updates: -------------- ECO D 28-Jul-1995 AXP Images: UCX$LPD_SHR.EXE UCX V3.2-9D UCX$LPD_SMB.EXE UCX V3.2-9D UCX$LPD_RCV.EXE UCX V3.2-9D UCX$LPQ.EXE UCX V3.2-9D UCX$LPRM.EXE UCX V3.2-9D UCX$LPRSETUP.EXE UCX V3.2-9D UCX$TELNETSYM.EXE UCX V3.2-9D o Problem: If the LPQ or the LPRM command is submitted in a .COM file *or* if a DEFINE/USER of SYS$OUTPUT is pointing output to a file, then output is extended across multiple lines of the .LOG/output file. Solution: This problem has been fixed. o Problem: In the conversion between a network file name (cFA123host.domain.com) and an OpenVMS legal filename (cFA123host_domain.com) the file name is truncated to 32 characters. This is expected behavior. However, if the first character after the truncated filename is a "-", an RMS-F-SYN, file specification syntax error will occur. Solution: Trap for this special case and substitute the "-" with a "_". o Problem: When trying to delete a printcap entry, LPRSETUP sometimes issues the message "Can't unlink spool directory, RMS-F-SYN, file specification error." Solution: This problem has been fixed. o Problem: It is necessary to create separate OpenVMS print queues, each with its own print forms, if print forms for jobs sent to the UCX LPD server are being used. Solution: UCX LPD now supports a new printcap field, "fm", for local printcap entries. This field contains the name of the OpenVMS print form with which the job should be submitted. All that is necessary to create multiple LPD printcap entries with different values for the "fm" field and point the "lp" value to the same local printer. Here are two example printcap entries: BOGUS_P_FORM1|bogus_p_form1:\ :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM1.LOG:\ :lp=SOME_PRINTER:\ :fm=FORM1:\ :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM1: BOGUS_P_FORM2|bogus_p_form2:\ :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2.LOG:\ :lp=SOME_PRINTER:\ :fm=FORM2:\ :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2: Jobs sent to printer "BOGUS_P_FORM1" will be printed with FORM1 to the OpenVMS queue SOME_PRINTER. Jobs sent to printer "BOGUS_P_FORM2" will be printed with FORM2 to the OpenVMS queue SOME_PRINTER. Note that the printcap key fields differ so that these printers appear to the LPD client as two printers. However, since they share the same value in their "lp" fields there is only one OpenVMS print queue - SOME_PRINTER. UCX LPD now supports a similar printcap field which says that a job is to be submitted as /PASSALL. This field is the "pa" field and has no value. Its presence in the printcap entry tells the symbiont to submit it /PASSALL. BOGUS_P_FORM2_PA|bogus_p_form2_pa:\ :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2_PA.LOG:\ :lp=SOME_PRINTER:\ :pa:\ :fm=FORM2:\ :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_FORM2_PA: Jobs printed to this printer will be submitted to the OpenVMS printer SOME_PRINTER with /FORM=FORM2 /PASSALL. Notes: 1. UCX LPRSETUP support for these fields has not yet been added. 2. UCX LPD will not verify the value of the "fm" printcap field. If it is incorrect, then the job will get an error in the final destination print queue. o Problem: LPD clients that do not support the Digital Printserver LPD protocol Extensions cannot make use of the OpenVMS print capabilities provided by PRINT/PARAMETER when printing jobs to the UCX LPD server. Solution: Eight new printcap fields, one for each of the eight available /PARAMETER slots, are now supported for local printcap entries. The fields are p1 through p8 and work in a similar fashion to the new "fm" and "pa" fields. For each one entered, the corresponding PRINT/PARAMETER will be assigned that value. For example: BOGUS_P_LAND|bogus_p_land:\ :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_LAND.LOG:\ :lp=SOME_PRINTER:\ :p1=data=postscript:\ :p2=page_o=landscape:\ :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_LAND: In this example, all inbound LPD print jobs for printer BOGUS_P_LAND will be submitted as: $PRINT file/PARAM=(data=postscript,page_o=landscape)- /QUE=SOME_PRINTER The maximum number of characters for each of these fields is 255. Since the symbiont matches the slot of the printcap field with the corresponding /PARAM value, this can can also be used when printing to queues that are sensitive to having certain data in specific /PARAMETER slots. For example: BOGUS_P_HUH|bogus_p_huh:\ :lf=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_HUH.LOG:\ :lp=SOME_PRINTER:\ :p1=data=postscript:\ :p2=page_o=landscape:\ :p8=huh:\ :sd=/SYS$SPECIFIC/UCX_LPD/BOGUS_P_HUH: In this example, all inbound LPD print jobs for printer BOGUS_P_LAND will be submitted as: $PRINT file/PARAM=(data=postscript,page_o=landscape,,,,,,huh)- $_ /QUE=SOME_PRINTER Notes: 1. UCX LPRSETUP support for this field has not yet been added. 2. UCX LPD will not parse the values in these fields. If they are in error, then the job will get an error in the final destination print queue. o Problem: The UCX LPD retry mechanism sometimes leaves jobs in the "Holding" state rather than in the "Holding until..." state. Solution: This problem has been fixed. o Problem: The value that the UCX$TELNETSYM uses for the PSM$PRINT BUFSIZ parameter is fixed at 256. There is no way to configure the TELNETSYM to use a different value for optimization like one can do with LATSYM. Solution: The TELNET symbiont now supports this with a new logical, UCX$TELNETSYM_BUFSIZ. Define this system logical to any value from 1 to 2048 and the value specified will be sent to the PSM$PRINT routine in the BUFSIZ argument. For more information about this, please see the section in the "VMS Utility Routines Manual" on the PSM$ routines. o Problem: UCX TELNETSYM resets the link idle timer when data comes in from the printer/terminal server. If TELNET implementation in the printer/terminal server keeps sending data then the link will never be released. Solution: Do not reset the link idle timer for incoming data. Only set it for outgoing data. o Problem: When printing with the TELNET symbiont with /HEADER, the Page 1 header would never be printed. Solution: This problem has been fixed. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 Management Control Program (UCP) --------------------------------------------------------------------------- ECO 8 Updates: -------------- ECO B 16-Jun-1995 AXP and VAX Images: UCX$UCP.EXE UCX V3.2-9B o Problem: The /HOLD qualifier is not supported in UCX ANALYZE MAIL/REPAIR even though it is documented. Solution: Provide parser support in UCP for the /HOLD qualifier. The other part of this fix is in SMTP (and is included in ECO A for SMTP images) to provide the rest of the support to place entries on hold after an ANALYZE MAIL /REPAIR has been executed. ECO C 8-AUG-1995 AXP and VAX o Problem: The SET CONFIGURATION INTERFACE cannot add pseudointerfaces with numbers beyond four. The problem occurred due to the insufficient length of one of variables which caused another variable to be changed from the subroutine. Solution: Fix the length of the variable. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 PORTMAPPER --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 16-Dec-1994 AXP and VAX Images: UCX$PORTMAPPER.EXE UCX 3.2-9A o Problem: Portmapper loops writing error messages to a log file when registration fails. Solution: Break from the loop when a matching registration is found and cannot be replaced. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 RPC and XDR routines --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 06-Jan-1995 AXP and VAX Images: UCX$RPCXDR_SHR.EXE UCX$PORTMAPPER.EXE o Problem: Improper pointers cause the XDR object pointer to increment in fours, instead of in elsize units in xdr_vector(). Solution: Make eladdr the pointer instead of a pointer-to-pointer like addrp. o Problem: The XDR_VECTOR() addrp argument is an incorrect type. Solution: Correct the definition and usage of the addrp argument. o Problem: Portmapper loops writing error messages to a log file when registration fails. Solution: Break from the loop when a matching registration is found and cannot be replaced. o Problem: CLNT_SPERRNO(), CLNT_SPCREATE_ERROR() and CLNT_SPERROR() are missing VAX transfer vectors and AXP symbol vectors. Solution: Add the appropriate vectors to make the procedures accessible ECO 7 Updates: -------------- ECO B 31-May-1995 AXP and VAX Images: UCX$RPCXDR_SHR.EXE UCX V3.2-9B o Problem: An error in the XDR routine `xdr_float()', caused an assignment instead of a test when decoding an IEEE float from the network into a local F_Float value. Solution: The typographical error has been fixed. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 RSH --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 06-Jan-1995 AXP and VAX Images: UCX$RSH.EXE o Problem: RSH hangs when executing on a non-terminal and redirected output is incorrect. Solution: Check for the device type and handle it correctly. Change the output mechanism. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 PWIP Driver and ACP --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 11-Nov-1994 AXP and VAX Images: UCX$PWIPACP.EXE UCX V3.2-9A UCX$PWIPDRIVER.EXE UCX V3.2-9A UCX$PWIPSHUT.EXE UCX V3.2-9A UCX$SDA.EXE UCX V3.2-9A o Problems, solutions and/or enhancements: - On rare occasions, Pathworks sends down a mis-typed mblk/dblk/buffer set for transmit. The data in this set is correct, but the type field is not. It should be type M_DATA, but is type M_PROTO. PWIPdriver did not properly deal with this circumstance. It went into a state that effectively blocked all further transmissions on the connection in question. This is a Pathworks inspired problem, and the Pathworks Engineering Group will be providing a fix. They have requested that the type checking for all properly identified transmission sets (which this is) be relaxed, and an assumption made that the type is M_DATA. This ECO allows that assumption to be made. - The UCX SDA backend has been upgraded to support additional counters, etc. - Zero length transmissions are supported as described in the supporting specifications. - Naked M_DATA transmissions on TCP connections are supported as described in the supporting specifications. - Check to ensure that UCX is running before allowing PWIP to start. If UCX is not running, abort the PWIP ACP startup. - T_addr_req/t_addr_ack processing did not always return the requested information. If the connection in question was a listener, it always returned the local IP address as zero (0). Whether the local system was multi-homed or not, it only returned one (1) local address. The logic has been modified to fix the above deficiencies. ECO B 16-Nov-1994 VAX and AXP Images: UCX$PWIPACP.EXE UCX V3.2-9B UCX$PWIPDRIVER.EXE UCX V3.2-9B o Problem: Premature connect reject failure. If the QIO fails for an incoming connection rejection, do not return an error acknowledgement. Rather, setup and call disconReq_ast to deassign the associated channel. If the deassign completes successfully return a T_DISCON_REQ ok acknowledgement, or return an error acknowledgement. Solution: Change the acp_ok_ack to process the T_CONN_REQ / automatic T_BIND_REQ Pathworks work-around before acquiring IOLOCK8. This removes the need to release and re-acquire the lock later. ECO 7 Updates: -------------- ECO C 18-May-1995 AXP/VAX Images: UCX$PWIPDRIVER.EXE o Problem: The system will crash in PANIC called from SBDROP, due to an inconsistent receive socket buffer showing a non-zero character count with no mbufs hanging off the socket buffer. Solution: This problem is due to premature clearing of the UCB$M_BG_Defer_WinAdj flag in the PWIPDRIVER_SUPP.C pwip_handshake_transport routine. This fix eliminates the clearing of this bit in this routine. ECO D 18-May-1995 AXP/VAX o Problem: Doing arithmetic on fields of a stale UCB causes the system to be in adjTCPwindow. This problem is triggered by an upstream mbuf being freed after the connection has been closed. Previously, mbufs passed upstream had a pointer to the UCB and if the mbuf was not deallocated before the connection disappeared, a stale UCB might be used. Solution: The new structure, DWAB (Deferred Window Adjustment Block), has been created. It is guaranteed to persist until the last mbuf is returned. The mbufs are now pointed to the DWAB instead of at the UCB. Note that this fix entails changes to both PWIPDRIVER and to the NET facility (UCX$INTERNET_SERVICES.EXE for VAX and UCX$BGDRIVER.EXE for ALPHA). --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 SNMP_ AGENT --------------------------------------------------------------------------- --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 NFS Server --------------------------------------------------------------------------- --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 NFS Client --------------------------------------------------------------------------- ECO 8 Updates: -------------- ECO A 3-Mar-1995 AXP and VAX Images: UCX$DNFSACP*.EXE o Problem: Directory updates made locally at the server are delayed in becoming visible at the client, even with small values for the directory cache and attributes cache timeouts. Solution: Zero the finfo->last_read time if the directory cache has timed out this forces CHECK_ACCESS to do a real GETATTR. ECO A 1-Jun-1995 AXP and VAX Images: UCX$DNFSACP*.EXE o Problem: GRPPRV privilege was required to get access to a file owned by a same-group user with group access allowed. Solution: This problem has been fixed. ECO A 28-Jun-1995 AXP and VAX Images: UCX$DNFSACP*.EXE o Problem: Normally, directories do not need and do not have ADF files. However, a SET DIR /VERSION_LIMIT does result in creation of an ADF. This is fine until the directory is deleted. Since a directory is being deleted, an rmdir is attempted on both the directory and the ADF. The ADF deletion fails. Solution: A new parameter has been added to the calling sequence of the Fremove_Init routine to specify whether a directory or regular file is being deleted. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 CFS_SHR.EXE images --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 17-Nov-1994 AXP Images: UCX$CFS_SHR.EXE UCX V3.2-9A o Problem: If a file containing any form of variable length records is accessed with format conversion enabled, a message of the type "thread exits while holding resources" is written to _OPA0:. Subsequently, the content of the file is not converted and the server may eventually enter a hang or loop condition when an attempt to close the file is made. The problem lies in the file system OPEN and READ services. If a variable length record's length shortword is on an 8KB boundary in the file, the conversion scanning code will exit with an access violation. The locked buffer will remain locked and the message is generated. The problem is that the thread exit code does not properly clean up the lock's context causing it to remain in a locked state. When an attempt to close the file is made, the locked buffer will cause the server to enter an AST loop. If an attempt to flush the buffer from the cache via the LRU mechanism is made, the server can enter a hang condition. Solutions: 1. Correct the code which cleans up the locked resource. This removes the hang and looping problems. 2. Correct the code in the OPEN and READ services. This removes the corruption and the console message problems. o Problem: If ADD EXPORT was done with /OPTIONS=PURGE_VERSIONS, the presence of a file with a null name and extension (e.g., .;1) makes the rest of the files in the directory invisible to the ls command. Solution: An additional check for file name length of 1 was added to the decision for stripping the version number from the file name. This prevents confusion from special casing the .;1 file and not stripping the version even though there are not multiple versions. o Problem: The file system would crash if the final record of a file crossed the end-of-file (EOF) mark. Such a file is technically invalid, and RMS-32 would ignore the record. A typical way to recreate this problem would be to SET FILE/END_OF_FILE when the EOF references the middle of a disk block. Note that this in effect corrupts the data at the end of the file and may result in unexpected results when reading from or appending to the file. Solution: When scanning the file at access time, stop building the RMAP structure when a record crosses EOF. In addition, do not include the record in the converted size of the file. ECO 3 Updates: -------------- Back to original image UCX$CFS_SHR.EXE UCX V3.2-9 ECO 4 Updates: -------------- ECO B 20-Feb-1995 VAX and AXP Images: UCX$CFS_SHR.EXE UCX V3.2-9B o Problem: When building the RMAP, the data buffer descriptor remains in a locked state (with PENDCNT > 0), causing a loop when an attempt to close the file is made. Solution: The lack of a pair of parenthesis resulted in the complementing of the address of the status variable. This caused a premature exit from BUILD_RMAP, leaving the descriptor with a non-zero pend count. ECO 5 Updates: -------------- ECO C 01-Mar-1995 VAX and AXP Images: UCX$CFS_SHR.EXE UCX V3.2-9C o Problem: When `REAL_SIZE' determination is enabled in UCX$CFS_SHR (via logical UCX$CFS_MODUS_OPERANDI mask 512), writes to certain files result in corruption. Solution: An access check in BFS$OPEN_FH() was in error. Its purpose was to reaccess files for write after they have been accessed for read. When REAL_SIZE is enabled, a request to read access a file after it is accessed for write should result in a nop, but instead would reaccess the file in read-only mode. The subsequent write operations would internally result in the error SS$_NOPRIV, which the user did not see. ECO 8 Updates: -------------- ECO D 28-Jun-1995 VAX and AXP Images: UCX$CFS_SHR.EXE UCX V3.2-9D o Problem: In a directory exported with /option=purge_versions, an ls command may display and purge only the first several files in the directory. Each succeeding ls on the same directory then lists and purges one additional file. This happens because the reply buffer overlays the request arguments. In the case of the wildcard lookup for purge_versions, the file handle is refetched after it has been over-written and the operation terminates with an error (generally ss$_notvolset). Solution: V3.3 was changed to move the file handle to a local variable. This is retrofitted to V3.2. ECO E 12-Jul-1995 VAX and AXP Images: UCX$CFS_SHR.EXE UCX V3.2-9E o Problem: Reading a fixed, sequential file which has an incomplete last record resulted in the loss of the partial record. This fix removes the application of a previous fix from ECO A as it pertains to sequential files containing fixed length records. Solution: Remove the FAT$C_FIXED from the case statement and add in the support for FAT$C_VFC. --------------------------------------------------------------------------- Fixes for DEC TCP/IP Services V3.2 PCNFSD --------------------------------------------------------------------------- ECO 1 Updates: -------------- ECO A 8-Dec-1994 VAX and AXP Images: UCX$PCNFSD.EXE UCX V3.2-9A o Problem: If the PC client sent a fully qualified host name in its RPC request to print, the PCNFSD constructed a spool subdirectory name on the form of [SPOOLDIR.host.domain1/domain2]. Failure occurred during the attempt to create the subdirectory. Solution: If the client sends a fully qualified host name on print_start, throw away the domain name before constructing the name of the spool subdirectory. o Problem: On renaming the print file into the spool subdirectory, if a file by the same name is already queued up for printing, PCNFSD attempts to avoid name collision by appending some random digits during the rename into the spool subdirectory. It was getting confused and appending the digits to the host level spool directory instead of the file name. Solution: Code appending the random number was moved. 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 must be rebooted. REFERENCES: IBM is a registered trademark of International Business Machines. Macintosh is a registered trademark of Apple Computer, Inc. PostScript is a registered trademark of Adobe Systems Incorporated. UNIX is a registered trademark licensed exclusively by X/Open Company Ltd.



This patch can be found at any of these sites:

Colorado Site
Georgia Site



Files on this server are as follows:

ucxeco8-032.README
ucxeco8-032.CHKSUM
ucxeco8-032.CVRLET_TXT
ucxeco8-032.a-dcx_axpexe
ucxeco8-032.a-dcx_vaxexe

privacy and legal statement