3.2.6.1 Pinging

For each entry in the Resolver table:

  • If the SETID is 0, the client MUST add a SETID entry as follows:

    • It MUST search the OID table and form a list of OIDs with the same STRINGBINDING hash as the Resolver table entry and add the list to the SETID entry. If the garbage_collection flag (see the SORF_NOPING flag in section 2.2.18.2) is set to FALSE in the OID entry, the OID MUST not be added to the list.

    • It MUST set the sequence number to 1.

    • It MUST call the ComplexPing method of the IObjectExporter using the RPC binding information in the Resolver table entry. The client MUST specify:

      • The SETID as 0.

      • The sequence number as 1.

      • The OID list as the AddToSet parameter.

      • The DelFromSet parameter as NULL.

    • When the call completes, the client MUST do the following:

      • It MUST set the SETID returned from the call in the SETID entry.

      • It MUST increment the sequence number in the SETID entry.

      • It MUST set the SETID in the Resolver table entry.

  • If the SETID is not NULL, the client MUST do the following:

    • It MUST look up the SETID entry using the SETID from the Resolver table entry. If the entry is found:

      • It MUST search the OID table and form a list of OIDs with the same STRINGBINDING hash as the Resolver table entry and compare the list to the OID list in the SETID entry.

      • If the sets are the same, the client SHOULD call the SimplePing method of the IObjectExporter interface using the RPC binding information from the Resolver table entry. The client MUST specify the SETID in the call.

      • If the sets are NOT the same, the client MUST do the following:

        • It MUST increment the sequence number.

        • It MUST call the ComplexPing method of the IObjectExporter interface using the RPC binding information from the Resolver table entry. The client MUST specify:

          • The SETID from the SETID entry.

          • The OIDs added since the last ping period in the AddToSet parameter.

          • The OIDs removed since the last ping period in the DelFromSet parameter.

          • The sequence number from the SETID entry.

        • When the call completes, the client MUST store the new OID set in the SETID entry.

      • If the new OID set is empty, the client MUST do the following:

        • It MUST remove the SETID entry from the SETID table.

        • It MUST remove Resolver table entry.

For both the SimplePing and the ComplexPing calls, the client MUST specify the values of the following security settings:

  • The client MUST specify the security provider associated with the RPC Binding stored in the Resolver table.

  • The client MUST specify the credentials of the security principal of the application or higher-level protocol that is issuing the ping request as the credentials for the call.

  • The client MUST specify an authentication level of at least  RPC_C_AUTHN_LEVEL_PKT_INTEGRITY (see [MS-RPCE] section 2.2.1.1.8).<93>

  • The client MUST specify an impersonation level of at least RPC_C_IMPL_LEVEL_IDENTIFY (see [MS-RPCE] section 2.2.1.1.9).<94>

When using Kerberos and SPNEGO security providers, the client MUST specify an SPN of "RPCSS/<remote server name>", where <remote server name> is the network address used to create the RPC binding information stored in the Resolver table (see section 3.2.4.1.2.3.2).