3.6.7.5 Begin Rollback
The Begin Rollback event MUST be signaled with the following arguments:
An Enlistment object
If the Begin Rollback event is signaled, the transaction manager MUST perform the following actions:
If the connection of the provided enlistment is of type CONNTYPE_TXUSER_VOTER:
Send a TXUSER_STATUS_MTAG_ABORTED message using the connection.
Set the connection state to Ended.
Otherwise, if the connection of the provided enlistment is of type CONNTYPE_TXUSER_ENLISTMENT:
If the connection state is Idle:
Signal the Enlistment Rollback Complete event on the Core Transaction Manager Facet with the provided Enlistment object.
Otherwise:
If the connection state is Active or Prepared:
Send a TXUSER_ENLISTMENT_MTAG_ABORTREQ message using the connection.
Set the connection state to Awaiting Abort Response.
Otherwise, if the connection state is Awaiting Prepare Response:
Set the connection state to Awaiting Prepare Response Aborted.
Otherwise, if the connection of the provided enlistment is of type CONNTYPE_TXUSER_REENLIST:
If the connection state is Processing Reenlist Request:
Send a TXUSER_REENLIST_MTAG_REENLIST_ABORTED message using the connection.
Set the connection state to Ended.
Otherwise, ignore the signal.