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:
Send a TXUSER_TIPPROXYGATEWAY_MTAG_PUSHERROR message by using the connection:
The Error field MUST be set to TRUN_TIPPROXYGATEWAY_PUSHERROR_TIPDISABLED.
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).