3.4.5.2.2.2.1 Receiving a TXUSER_EXPORT_MTAG_CREATE Message

When the transaction manager communicating with an application facet receives a TXUSER_EXPORT_MTAG_CREATE message, the transaction manager MUST perform the following actions:

  • If the connection state is Idle:

    • Set the connection state to Processing Connection Request.

    • If the first 16 bytes of SourceTmAddr is equal to the binary representation of the GUID {dc85cb48-d8a5-11d2-828b-00805f0df75a}, the SourceTmAddr field MUST contain an OLETX_TM_ADDR (section 2.2.4.2) structure.

    • Otherwise, the SourceTmAddr field MUST contain a NAMEOBJECTBLOB (section 2.2.5.3) structure.

    • Override the default schema verification actions for incoming messages as specified in section 3.1.6 in the following manner:

      • If the SourceTmAddr field from the message contains an OLETX_TM_ADDR structure  and violates the constraints specified in section 2.2.4.2 or if the SourceTmAddr field from the message contains a NAMEOBJECTBLOB structure and violates the constraints specified in section 2.2.5.3, the transaction manager MUST:

        • Send a TXUSER_EXPORT_MTAG_CREATE_BAD_TMADDR message using the connection.

        • Perform default invalid message processing, as specified in section 3.1.6.

        • Cease processing the message.

    • If the Allow Network Access flag, the Allow Network Transactions flag, or the Allow Outbound Transactions flag of the Core Transaction Manager Facet is set to false:

      • Send a TXUSER_EXPORT_MTAG_CREATE_BAD_TMADDR message using the connection.

      • Set the connection state to Ended.

    • Otherwise:

      • If the SourceTmAddr field contains an OLETX_TM_ADDR structure, convert the SourceTmAddr field from the message to a new Name object, as specified in section 3.1.1.2.

      • Otherwise, convert the SourceTmAddr field from the message to a new Name object, as specified in Converting a NAMEOBJECTBLOB Structure to a Name Object (section 3.1.1.4).

      • Store the Name object in the Connection-Specific Data field of the connection object.

      • Send a TXUSER_EXPORT_MTAG_CREATED message using the connection.

      • Set the connection state to Connection Active.

  • Otherwise, the message MUST be processed as an invalid message as specified in section 3.1.6.