CPIC Application Limited to Single Local APPC LU (181123)



The information in this article applies to:

  • Microsoft SNA Server 2.11
  • Microsoft SNA Server 2.11 SP1
  • Microsoft SNA Server 2.11 SP2
  • Microsoft SNA Server 3.0
  • Microsoft SNA Server 3.0 SP1
  • Microsoft SNA Server 3.0 SP2
  • Microsoft SNA Server 3.0 SP3
  • Microsoft SNA Server 4.0
  • Microsoft SNA Server 4.0 SP1

This article was previously published under Q181123

SYMPTOMS

An application that uses the SNA Server CPIC API interface is limited to a single Local APPC LU, even if the application calls Initialize_Conversation (CMINIT) more than once.

MORE INFORMATION

Because there is no explicit provision in the CPIC API for the application to specify the Local APPC LU alias that it wants to use, SNA Server provides three methods for defaulting the Local APPC LU alias, as described in the following Knowledge Base article:

132720 SNA Server CPIC Allocate Error 20 (CM_PRODUCT_SPECIFIC_ERROR)

One of the methods is to enable the "Member of Default Outgoing Local APPC LU Pool" on the SNA Server Local APPC LU. If more than one Local APPC LU is enabled with this option, the CPIC application is still limited to a single Local LU from this pool.

This restriction has the following implications:
  • A CPIC application will be unable to allocate two concurrent conversations across two different Local APPC LUs. When using dependent Local APPC LUs (which are limited to a single session), the second CMALLC request will block (or be queued behind the first conversation) until the CPIC application's first conversation over that local LU is ended.
  • If there are two SNA Server computers and each is configured with the same Remote APPC LUs and modes but different Local APPC LU aliases, the CPIC application is limited to a single server, unless the CPIC application is restarted. If the CPIC application's conversation through the first SNA Server computer is ended, and attempts to access a conversation through a Remote APPC LU on the second SNA Server computer, the CMALLC request will fail with Error 20 (CM_PRODUCT_SPECIFIC_ERROR). The underlying MC_ALLOCATE will fail with primary_rc = 0001 (AP_PARAMETER_CHECK), secondary_rc = 0x0000015b (AP_BAD_PARTNER_LU_ALIAS).
  • This limitation occurs with each CPIC application that is run. For example, if two instances of the CPIC application are started, it is possible for one instance to make use of one Local APPC LU, and another instance to use a different Local APPC LU.
In order for the CPIC application to acquire a session over a different Local APPC LU, the application must be ended (or call WinCPICCleanup) prior to its first call to CMINIT.

The following is a summary of this behavior, as seen in an SNA Application CPIC and APPC trace. Note that the CPIC API is built on top of the APPC API interface. When a CPIC application calls the CPIC API functions, these CPIC functions result in calls to the underlying APPC interface.
CPIC Application   CPIC API   APPC API
================   ========   ========
  CMINIT ->
                  TP_STARTED ->
                             <- TP_STARTED OK
                  <- CMINIT OK
  CMALLC ->
                  MC_ALLOCATE ->
                             <- MC_ALLOCATE OK
  CMSEND ->
                  MC_SEND_DATA ->
  [...]

  CMINIT ->
                 <- CMINIT OK
				
Note that the second CMINIT request never causes CPIC to issue another TP_STARTED request. The TP_STARTED request causes a new Local APPC LU to be requested.

This is still an issue with the following SNA Server Service Packs:
  • SNA Server 3.0 SP3
  • SNA Server 4.0 SP1
  • SNA Server 4.0 SP2

Modification Type:MinorLast Reviewed:4/21/2005
Keywords:kbprb KB181123