3.3.4.2.2 Secondary

If the sRank parameter is SRANK_SECONDARY, the caller MUST be a secondary partner, and the callee MUST be a primary partner. The primary partner MUST construct a name object using the host name specified in the pszHostName parameter, the contact identifier (CID) specified in the pszUuidString parameter, and the RPC protocols specified in the grbitComProtocols field of the BIND_INFO_BLOB structure contained in the rguchBlob parameter.

The primary partner MUST use this name object to check whether or not an existing session with a matching name object already exists in the session table. If an existing session cannot be found, the primary partner SHOULD return an implementation-specific error code or indicate that the bind was unsuccessful.<26> Note that for this case, the state of the session object does not influence the behavior of BuildContext.

Next, the primary partner MUST compute the pBoundVersionSet parameter, as specified in section 3.3.4.2.1. If the computation fails, the session object MUST be cleaned up, as specified in section 3.3.4.2.1. This value MUST also be stored in the Version ADM element of the session object. Finally, the primary partner MUST set the State ADM element of the session object to Confirming Connection and then return from the method with the S_OK code.