NOVELL TECHNICAL INFORMATION DOCUMENT TITLE: STREAMS, TLI, SPXS, IPXS NLM Update DOCUMENT ID: TID014113 DOCUMENT REVISION: C DATE: 01AUG94 ALERT STATUS: Yellow INFORMATION TYPE: Symptom Solution README FOR: STRTL3.EXE NOVELL PRODUCT and VERSION: NetWare 3.11 NetWare 3.12 NetWare 4.01 NetWare SFT III 3.11 NetWare Asynchronous Communication Services (NACS) 3.0 NetWare for SAA 1.2 NetWare for SAA 1.3 ABSTRACT: STRTL3.EXE contains all the fixed and patches found in STRTL1.EXE and STRTL2.EXE plus some new fixes and patches to handle all SPX, TLI, and STREAMS communication and server problems. Symptom solution information for the current patches and a history of previous patches are included in this document. ------------------------------------------------------------------------------ DISCLAIMER THE ORIGIN OF THIS INFORMATION MAY BE INTERNAL OR EXTERNAL TO NOVELL. NOVELL MAKES EVERY EFFORT WITHIN ITS MEANS TO VERIFY THIS INFORMATION. HOWEVER, THE INFORMATION PROVIDED IN THIS DOCUMENT IS FOR YOUR INFORMATION ONLY. NOVELL MAKES NO EXPLICIT OR IMPLIED CLAIMS TO THE VALIDITY OF THIS INFORMATION. ------------------------------------------------------------------------------ ____________________________________ SYMPTOM The system hangs. SYMPTOM When both ends try to send disconnect request, race conditions occur. SOLUTION Apply the new SPXS.NLM. ____________________________________ SYMPTOM After SPX terminated a connection, the following abend message was displayed: MESSAGE MS Engine was handed an ECB it did not own CAUSE A race condition and error exit path existed. SOLUTION Make sure the terminate ack was being returned to the LSL through IPX, rather than being posted to the application socket. Apply SPXFIX2.NLM and SPXSFT1.NLM files included in this document. ____________________________________ SYMPTOM When SPX was terminating a connection, it was failing with an 0xEC rather than 0xED status. SOLUTION Make sure the state check to toss data packets coming into a terminating connection did not toss the ACK. Apply the SPXSFT2.NLM. ____________________________________ SYMPTOM SPX ignored a terminate ACK. CAUSE A problem was introduced in SPXDDFIX 1.0. SOLUTION Apply SPXDDFIX.NLM 2.0. SPXDDFIX.NLM 2.0 correctly handles the terminate acknowledgement packet. ____________________________________ SYMPTOM If the session did not exist, SPX failed to interpret terminate ACKs as system packets. CAUSE When an application errors out because the session does not exist, SPX posts the system buffer to the socket rather than returning it to the Link Support Layer (LSL). SOLUTION Apply the SPXNSFIX.NLM and SPXNSSFT.NLM. Solution Specifics: The SPXNSFIX.NLM for NetWare 4.01, 3.12, and 3.11 and SPXNSSFT.NLM fix the way that SPX handles the Terminate Acknowledgement packets on sessions that do not exist. ____________________________________________________________ Self-Extracting File Name: STRTL3.EXE Revision: C Files Included Size Date Time \ STRTL3.TXT (This File) \3.1X\ TLI.NLM 12474 09-14-93 10:43a IPXS.NLM 8149 08-10-93 7:53a SPXS.NLM 24238 05-17-94 9:58a STREAMS.NLM 53566 07-20-93 4:19p \3.1X\3.11\ XMDFIX.NLM 1546 02-24-94 8:30a SPXFIX2.NLM 1727 11-23-93 9:26a PATCHMAN.NLM 9632 02-04-93 10:38a SPXDDFIX.NLM 1151 03-10-94 9:44a SPXFSFIX.NLM 1155 08-20-93 2:16p SPXLISFX.NLM 1016 08-20-93 2:22p SPXMSFIX.NLM 988 02-14-94 10:02a SPXNSFIX.NLM 1047 05-26-94 8:56a \3.1X\3.12\ PM312.NLM 9221 03-24-94 11:06a SPXFIX2.NLM 1035 11-23-93 9:13a SPXCONFG.NLM 4162 07-02-93 9:40a SPXDDFIX.NLM 1148 03-10-94 9:48a SPXNSFIX.NLM 1044 05-26-94 8:45a \3.1X\SFTIII.311\ MSSHIM.NLM 1524 11-09-93 8:11a needed for loadind spxs.nlm on ms engine PM311IO.NLM 8335 02-04-94 8:53a needed for io engine patches. SPXSFT1.NLM 3003 11-23-93 9:31a SPXSFT2.NLM 3115 06-22-94 8:27a SPXNSSFT.NLM 2266 05-26-94 9:15a \4.01\ TLI.NLM 24795 09-14-93 10:17a IPXS.NLM 10363 08-23-93 8:13a SPXS.NLM 34630 03-02-94 1:20p PM401.NLM 8113 02-03-94 1:09a SPXFIX2.NLM 1023 11-23-93 8:52a STREAMS.NLM 63201 09-14-93 10:12a NCPIDFIX.NLM 1837 01-18-94 4:22p SPXDDFIX.NLM 1112 03-10-94 9:45a SPXNSFIX.NLM 1060 05-26-94 8:29a Installation Instructions: 1. Make a backup copy of each of these NLMs you are currently running. 2. Copy the new NLMs into the appropriate directories. 3. The appropriate Patch Manager must be loaded before the patches are loaded: PATCHMAN.NLM for NetWare 3.11, PM312 for NetWare 3.12, PM401 for NetWare 4.01, MSSHIM.NLM, and PM311IO.NLM for NetWare SFT III 3.11. 4. Load the patches. 5. In a NetWare 3.11 environment, make sure to replace the SPXFIX1 patch with the SPXFIX2 patch. Patch History: ================================================== STRTL2.EXE: ============================== XMDFIX.NLM This patch corrects a problem with utilities that use the SPX protocol to maintain communication with the server. Typically, the client will lose the connection to the server and the following message will be displayed: MESSAGE No more response buffers available This patch also resolves a problem with lost connections never timing out, because of infinite transmit retries. The most common occurrence is with a remote printer (RPRINTER.EXE) losing its connection to the print server (PSERVER.NLM); however, this problem may also occur with other utilities. The connection is lost when a call to SPXSendSequencedPacket() resets a session retransmit count that causes it to fail to abort the connection when the connection is broken in one direction and maintained in another. ============================== OTHER ISSUES SPXLISFX.NLM This patch resolves an extremely poor performance problem for various backup software or any SPX program that is using a limited amount of receive buffers. You should use the new SPXLISFX.NLM and SPXS.NLM together. ============================== NetWare 3.11 and NetWare 3.12 Files (These modules will run on either.) ____________________________ STREAMS NLM This is the standard 3.12 release module. ____________________________ TLI NLM This patch resolves some internal state checks that caused a Transport Level Interface (TLI) application to stop functioning. ____________________________ SPXS NLM This patch resolves a buffer management problem that caused memory to be lost, thus increasing the memory allocated by STREAMS in the short-term memory pool. This patch also ensures that the SPX connection has the correct watchdog flag set that tracks the connection to detect when it fails. ____________________________ IPXS NLM This patch allows various applications to send larger packets. ============================== NetWare 3.11 Files ____________________________ XMDFIX NLM If SPX was retransmitting a packet and a new Event Control Block (ECB) was handed to SPX to transmit, the retransmit code was reset to the maximum limit, thus causing retransmissions to occur possibly indefinitely. ____________________________ SPXFIX2 NLM If SPX sent a terminate request (DataStream type 0xfe) when the ACK (ACKnowledgement code) came back (DataStream type 0xff), the request was placed in a receive Event Control Block (ECB) posted by the application. However, the code did not release this ECB after it was finished and the ECB was lost. SPXFIX1 attempted to rectify this problem; however, it also affected the incoming terminate requests that caused ECBs to get posted twice to the socket receive list, which caused the ECB to get linked to itself. ____________________________ SPXFSFIX NLM This patch is a session table bounds check that ensures an invalid session ID in a packet from the wire will not cause problems. ____________________________ SPXLISFX NLM This patch fixes a problem with the SPXListenForConnectedPacket function that was not informing the connection partner when the window was reopened after being closed. This problem causes terrible performance problems because the window would not open again until a WatchDog packet was generated about 3 seconds later. ____________________________ SPXDDFIX.NLM This patch fixes a problem with the way SPX handles retried connect requests. If the connection had already transitioned into SESSION_TERMINATED when the retry came in, the retry was treated as a new connection request. This patch also fixes a problem where SPX was still acknowledging data packets that arrived after SPXTerminateConnection was called. This could lead to incorrect handling of the data by the application, leaving both endpoints with different information about the state and completeness of the data. NOTE: This SPX problem is masked by the SPXS.NLM that ships with NetWare Management Systems (NMS) 2.0 and by the SPXS.NLM included in STRTL2.EXE. The fix for this specific issue is addressed by the SPXDDFIX.NLM. ============================== NetWare 3.12 Files ____________________________ SPXDDFIX.NLM This patch fixes a problem with the way SPX handles retried connect requests. If the connection had already transitioned into SESSION_TERMINATED when the retry came in, the retry was treated as a new connection request. This patch also fixes a problem where SPX was still acknowledging data packets that arrived after SPXTerminateConnection was called. This could lead to incorrect handling of the data by the application that left both endpoints with different information about the state and completeness of the data. NOTE: This SPX problem is masked by the SPXS.NLM that ships with NetWare Management Systems (NMS) 2.0 and by the SPXS.NLM included in STRTL2.EXE. The fix for this specific issue is addressed by the SPXDDFIX.NLM. ============================== NetWare 4.01 Files ____________________________ STREAMS NLM This patch solves the following problems: þ Some internal timing conditions that caused protocol stacks to stop functioning. þ A CLIB relationship problem. If a new CLIB was loaded without STREAMS being reloaded, then STREAMS somtimes called the wrong address, which would probably cause an abend. þ A NetWare SAA 1.3 problem. With this patch applied, all Comm Server modules can unload properly when the csdown command is issued. ____________________________ TLI NLM This patch resolved some internal state checks problems that caused a TLI application to stop functioning. ____________________________ IPXS NLM This patch resolved a problem that caused "System Packet Receive Buffers" to be lost. This patch also resolved a problem that will now allow various applications to send larger packets. ____________________________ SPXS NLM This patch fixes the following problems: þ A lost ECBs problem that occurs when NetWare closes a session and ACKs are waiting for a send ESR to complete. þ Watchdog handling by the session not yet accepted. þ Logical size table lookup problems that occur when the initial size was the "odd ball" (not matching any of the table sizes). þ Releasing mp (T_CONN_REQ) after acknowledged while in the "old" SPX mode. þ User defined and set data stream-type problems. þ Disconnect problems (NetWare retries if discon is the response to conn ind and not timing out on snddis.) þ If the system packet that was sent after the connection request ACK packet (session accept packet) has been destined to the "old" SPX then was ACKnowledged by the piggybacked ACK, SPX freed this implicit ACK (data packet) and treated it as regular ACK. ============================== NetWare 4.01 ____________________________ SPXDDFIX.NLM This patch fixes a problem with the way SPX handles retried connect requests. If the connection had already transitioned into SESSION_TERMINATED when the retry came in, the retry was treated as a new connection request. This patch also fixes a problem where SPX was still acknowledging data packets that arrived after SPXTerminateConnection was called. This could lead to incorrect handling of the data by the application, which left both endpoints with different information about the state and completeness of the data. NOTE: This SPX problem is masked by the SPXS.NLM that ships with NetWare Management Systems (NMS) 2.0 and by the SPXS.NLM included in STRTL2.EXE. The fix for this specific issue is addressed by the SPXDDFIX.NLM. ---------------------------------------------------------------- Any trademarks referenced in this document are the property of their respective owners. Consult your product manuals for complete trademark information. ---------------------------------------------------------------- ÿ