11.4.2 Invalid Descriptor Errors

A call descriptor can become invalid and, if referenced, cause an error to be returned to tperrno(5) in either of two situations:

  • A call descriptor is used to retrieve a message, which may be a failed message (TPEBADDESC).
  • An attempt is made to reuse a stale call descriptor (TPEBADDESC).

A call descriptor might become stale, for example, in the following circumstances:

  • When the application calls tpabort() or tpcommit() and transaction replies (sent without the TPNOTRAN flag) remain to be retrieved.
  • A transaction times out. When the timeout is reported by a call to tpgetrply(), no message is retrieved using the specified descriptor and the descriptor becomes stale.