These were bits of information that we needed in our plugin to tell what state things were really in about the connections on either side. The information is being maintained for internal use, so we just needed to export it. The only compatibility issues is around any changes to the state machine might need similar changes to the implementations of these functions. The one other issue the name TSHttpTxnServerTransactionClientAbortGet?() seems slightly odd to have 'Server' in there, maybe it should be TSHttpTxnClientAbortGet()? Not sure how we ended up with the current name...
-William Bardwell {code} // Indicates if the connection to the client was aborted, // will not be true if the client closed cleanly at the end // of the transaction. int TSHttpTxnServerTransactionClientAbortGet(TSHttpTxn txnp) { sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); HttpTransact::State *s = &(((HttpSM *) txnp)->t_state); return (s->client_info.abort == HttpTransact::ABORTED); } {code} {code} // Indicates if the transaction with the origin server is complete. // Will be true if the connection to the origin never started or // failed, as well as if it finished successfully. If this is checked // to early or for a cache hit, it will return true. int TSHttpTxnServerTransactionCompleteGet(TSHttpTxn txnp) { sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS); HttpTransact::State *s = &(((HttpSM *) txnp)->t_state); return ((TSServerState)s->current.state != TS_SRVSTATE_CONNECTION_ALIVE) || (s->current.server ? (s->current.server->state == HttpTransact::TRANSACTION_COMPLETE):false); } {code}