| 58 | } |
| 59 | |
| 60 | void |
| 61 | cleanupTransactionPlugin(Plugin *plugin, TSHttpTxn ats_txn_handle) |
| 62 | { |
| 63 | TransactionPlugin *transaction_plugin = static_cast<TransactionPlugin *>(plugin); |
| 64 | std::shared_ptr<Mutex> trans_mutex = utils::internal::getTransactionPluginMutex(*transaction_plugin, ats_txn_handle); |
| 65 | if (trans_mutex == nullptr) { |
| 66 | LOG_ERROR("TransactionPlugin use-after-free! plugin %p, txn %p", plugin, ats_txn_handle); |
| 67 | return; |
| 68 | } |
| 69 | LOG_DEBUG("Locking TransactionPlugin mutex to delete transaction plugin at %p", transaction_plugin); |
| 70 | trans_mutex->lock(); |
| 71 | delete transaction_plugin; |
| 72 | trans_mutex->unlock(); |
| 73 | } |
| 74 | |
| 75 | int |
| 76 | handleTransactionEvents(TSCont cont, TSEvent event, void *edata) |
no test coverage detected