Pervasive: Knowledge Base: Status 96 from a NetWare NLM Application Knowledge Base
Status 96 from a NetWare NLM Application

ISSUE:

A NetWare NLM Btrieve application running on local server A can access Btrieve files on remote server B. The Btrieve calls from the NLM go to the BROUTER NLM on server A which establishes an SPX session with the BSPXCOM on server B. The BSPXCOM on server B forwards the Btrieve calls to Btrieve on server B for processing. In a multi-server NetWare environment with hundreds of NetWare servers, the establishment of the SPX session from the local BROUTER to the remote BSPXCOM NLM can fail with a Status Code 96 ("A communications environment error occurred"). This Status Code 96 is generated by the way BROUTER NLM identifies NetWare servers that are running the BTRIEVE NLM.

SOLUTION:

BROUTER NLM maintains two internal tables to track Btrieve servers. They are the File Server Table (FST), which lists server names and addresses, and the Server Routing Table (SRT), which lists servers known to be running Btrieve. Each of these tables has a hard-coded size of 256 entries. Prior to the 11/94 release of BROUTER.NLM, these tables were populated as follows:

1) BROUTER NLM obtains the name of the server on which it is running and puts it in the FST as
the first entry.

2) BROUTER NLM reads the NetWare Bindery to obtain the names and SPX address of the remote NetWare servers and puts as many names as will fit into the FST. If more than 256 NetWare servers exist on the network, BROUTER NLM will not be able to access all of them. The postion for a particular server name in the FST is simply the order in which the name is returned from the Bindery, thus, there is no predictive method to determine a priori whether or not the server name will be included in the FST.

3) BROUTER NLM reads the NetWare Bindery to obtain the names of the remote NetWare servers that are running BSPXCOM NLM. For each of the returned names, BROUTER NLM checks the FST to see if the NetWare server name is known to BROUTER NLM. If it is known, BROUTER NLM puts that name in the SRT. If the NetWare server name is not in the FST, BROUTER NLM discards the Btrieve server name and will return a Status Code 96 when an application attempts to access that server.

4) BROUTER NLM waits for an application NLM to make a Btrieve Open or Create request to a remote server. At that time BROUTER NLM will check the SRT to see if the server is already known. If it is, BROUTER NLM will reuse an existing SPX to access that server, or establish a new SPX connection as needed. BROUTER NLM can maintain up to three simultaneous connections to  any server, based on thread requirements. If a connection exists, but is in use by another thread, BROUTER may establish a second or third connection to the server for the thread making the Open or Create request.

Starting with the November 1994 release of BROUTER NLM (which would be v6.l0e from Novell, or v6.15 from Pervasive Software), BROUTER NLM populates these tables as follows:

1) BROUTER NLM obtains the name of the server on which it is running and puts it in the FST as the first entry.

2) BROUTER NLM waits for an application NLM to make a Btrieve Open or Create request to a remote server. At that time BROUTER NLM will check the SRT to see if the server is already known to BROUTER NLM and if so will use an existing SPX connection. If the server is not in the SRT, BROUTER NLM will read the NetWare Bindery to determine if the the remote server is running BSPXCOM NLM. If it is, and if BROUTER NLM has an available slot in the SRT, BROUTER NLM puts the server name and address in the SRT and FST, and establishes an SPX connection. If there is no room in the SRT, BROUTER NLM returns a Status Code 96.

The FST and SRT are cleared when BTRIEVE NLM is unloaded.


This information is from the Pervasive Software Tech Tips Database.

ArticleID: BTRTT-97070801
Title: Status 96 from a NetWare NLM Application
Reference ID:
Creation Date: 8 July 1997
Document Revision: 1

Product: Btrieve for NetWare
Version: 6.x

Environment: NetWare

Category:

Status: Verified
Access: Public

Keywords: Status 96, BROUTER, NLM SUPPORT