3.4.1.5.1 Lookup Request

When a master locator receives a lookup request on the LocToLoc interface (section 3.1.4), the following actions MUST be taken:

  1. The master locator MUST validate the parameters as follows:

    • entry_name_syntax:

      • This parameter MUST be RPC_C_NS_SYNTAX_DCE.<23>

    • entry_name:

      • The length of the parameter MUST NOT exceed the maximum length as specified in section 2.2.2.

      • The name MUST match the syntax specified by the entry_name_syntax parameter as specified in section 2.2.2. The master locator MUST NOT validate the name field of the entry name to check for characters that are not allowed in an RDN.

      • This parameter MUST NOT be NULL for an I_nsi_entry_object_inq_begin call on the LocToLoc interface.

      • If parameter validation fails, processing MUST terminate, and the master locator SHOULD either return an error in response or raise an RPC exception.

  2. The master locator MUST locate any unexpired server entries in the Discovered Entries cache that match the request, including the interfaceid, xfersyntax, and obj_uuid parameters. If a match is found, the master locator MUST ignore the match if it has been in the cache for longer than the time specified in the MaxCacheAge parameter in the I_nsi_lookup_begin call. If MaxCacheAge is not specified in the parameter, an appropriate default value SHOULD be used.<24>

  3. If no such entries are found, the master locator MUST initiate broadcast lookup and collect the responses as specified in section 3.4.1.5.1.1.

  4. If the broadcast lookup is initiated to handle a lookup request made by invoking the I_nsi_lookup_begin method on LocToLoc interface, the master locator MUST compute compatible interfaces in the responses in the following manner:

    1. If an interfaceid is specified, interfaces with the following properties MUST be considered compatible:

      • Interface Identifier of the interface equals the value in the SyntaxGUID field in interfaceid parameter.

      • Major version of the interface equals the SyntaxVersion.MajorVersion field in the interfaceid parameter.

      • Minor version of the interface is greater than or equal to the SyntaxVersion.MinorVersion field in interfaceid parameter.

    2. If a TransferSyntax is specified by the parameter xfersyntax, interfaces with the following properties MUST be considered compatible:

      • TransferSyntax identifier of the interface equals the value in the SyntaxGUID field in xfersyntax parameter.

      • Major version of the TransferSyntax of the interface equals the SyntaxVersion.MajorVersion field in the xfersyntax parameter.

      • Minor version of the TransferSyntax of the interface is greater than or equal to the SyntaxVersion.MinorVersion field in xfersyntax parameter.

    3. If an object UUID is specified by the parameter obj_uuid, interfaces that do not contain matching Object UUIDs MUST be considered incompatible.

  5. The master locator MUST return binding information from the compatible interfaces to the callers of I_nsi_lookup_next.

  6. The master locator MUST return all object UUID information from the matching entry to the callers of I_nsi_entry_object_inq_next in a single UUID vector.

  7. The master locator creates an RPC context handle as specified in [C706] to identify the relevant entries in the client response cache as part of the processing for the I_nsi_lookup_begin or I_nsi_entry_object_begin calls. This context handle is returned to the client locator. The master locator MUST maintain entries in the client response cache until the client locator has finished enumerating through the results. The master locator MUST consider that a client locator has finished the enumeration if the following occur:

    1. The client locator invokes the I_nsi_lookup_done or I_nsi_entry_object_inq_done method with the corresponding context handle.

    2. A disconnect is detected by RPC as specified in section "Context Handle Rundown" in [C706] Part 3.