3.3.5.1.2 Receiving a TXUSER_TIPPROXYGATEWAY_MTAG_PUSH or a TXUSER_TIPPROXYGATEWAY_MTAG_PUSH2 Message

When the TIP interoperability provider receives one of these messages, it MUST perform the following actions:

  • If the connection state is Idle:

    • Set the connection state to Awaiting Push Response.

    • If the Allow TIP flag of the Core Transaction Manager Facet ([MS-DTCO] section 3.2.1) is set to FALSE<7>:

      • If the UsesVersion11 flag of the connection is TRUE:

      • Otherwise, if the UsesVersion11 flag of the connection is FALSE:

        • Send a TXUSER_TIPPROXYGATEWAY_MTAG_PUSHERROR message by using the connection:

          • The Error field MUST be set to TRUN_TIPPROXYGATEWAY_PUSHERROR_TIPERROR.

      • Set the connection state to Ended.

    • Otherwise, if the TIP interoperability provider does not have sufficient memory available to process the message:

      • Send a TXUSER_TIPPROXYGATEWAY_MTAG_PUSHERROR message.

        • The Error field MUST be set to TRUN_TIPPROXYGATEWAY_PUSHERROR_TIPERROR.

      • Set the connection state to Ended.

    • Otherwise:

      • Find the transaction object in the transaction table of the core transaction manager by using the guidTx field from the message as a key.

      • If the transaction object is not found:

        • Send a TXUSER_TIPPROXYGATEWAY_MTAG_PUSHERROR message.

          • The Error field MUST be set to TRUN_TIPPROXYGATEWAY_PUSHERROR_TIPERROR.

        • Set the connection state to Ended.

      • Otherwise:

        • Add this connection to the transaction connection list. (For more information, see [MS-DTCO] section 3.2.1.)

        • Signal the Push TIP Transaction event on itself with the following arguments:

          • The transaction object

          • The value of the tipTmId field from the message

  • Otherwise, the message MUST be processed as an invalid message, as specified in Common Message Processing Events and Sequencing Rules (section 3.1.5).