Repository: trafficserver Updated Branches: refs/heads/ts-4160 5bfe22907 -> ffb465138 (forced update)
[TS-4160] Reset the txn request/response handles at each hook, since core may destroy them. [TS-4160] clean up the code and initialize all handles for all hooks. [TS-4160] move the reset of handles to NULL to the operator() from TS-4135. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/ffb46513 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/ffb46513 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/ffb46513 Branch: refs/heads/ts-4160 Commit: ffb465138f5c10ca636ca69828aae17508bfe0f9 Parents: f8ce9e9 Author: Sudheer Vinukonda <[email protected]> Authored: Fri Jan 29 01:00:10 2016 +0000 Committer: Sudheer Vinukonda <[email protected]> Committed: Fri Jan 29 01:56:24 2016 +0000 ---------------------------------------------------------------------- lib/atscppapi/src/Transaction.cc | 2 ++ lib/atscppapi/src/utils_internal.cc | 23 +++++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ffb46513/lib/atscppapi/src/Transaction.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Transaction.cc b/lib/atscppapi/src/Transaction.cc index b9396ef..60a3fd2 100644 --- a/lib/atscppapi/src/Transaction.cc +++ b/lib/atscppapi/src/Transaction.cc @@ -488,6 +488,8 @@ void Transaction::initCachedRequest() { static initializeHandles initializeCachedRequestHandles(TSHttpTxnCachedReqGet); + state_->cached_request_hdr_buf_ = NULL; + state_->cached_request_hdr_loc_ = NULL; if (initializeCachedRequestHandles(state_->txn_, state_->cached_request_hdr_buf_, state_->cached_request_hdr_loc_, "cached request")) { LOG_DEBUG("Initializing cached request"); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/ffb46513/lib/atscppapi/src/utils_internal.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/utils_internal.cc b/lib/atscppapi/src/utils_internal.cc index ff0012e..dd7bca4 100644 --- a/lib/atscppapi/src/utils_internal.cc +++ b/lib/atscppapi/src/utils_internal.cc @@ -43,6 +43,18 @@ namespace const int MAX_TXN_ARG = 15; const int TRANSACTION_STORAGE_INDEX = MAX_TXN_ARG; +void +initTransactionHandles(Transaction &transaction) +{ + utils::internal::initTransactionCachedRequest(transaction); + utils::internal::initTransactionCachedResponse(transaction); + utils::internal::initTransactionServerRequest(transaction); + utils::internal::initTransactionServerResponse(transaction); + utils::internal::initTransactionClientResponse(transaction); + + return; +} + int handleTransactionEvents(TSCont cont, TSEvent event, void *edata) { @@ -61,19 +73,14 @@ handleTransactionEvents(TSCont cont, TSEvent event, void *edata) (void)TSHttpTxnClientReqGet(static_cast<TSHttpTxn>(transaction.getAtsHandle()), &hdr_buf, &hdr_loc); break; case TS_EVENT_HTTP_SEND_REQUEST_HDR: - utils::internal::initTransactionServerRequest(transaction); - break; case TS_EVENT_HTTP_READ_RESPONSE_HDR: - utils::internal::initTransactionServerResponse(transaction); - break; case TS_EVENT_HTTP_SEND_RESPONSE_HDR: - utils::internal::initTransactionClientResponse(transaction); - break; case TS_EVENT_HTTP_READ_CACHE_HDR: - utils::internal::initTransactionCachedRequest(transaction); - utils::internal::initTransactionCachedResponse(transaction); + // the buffer handles may be destroyed in the core during redirect follow + initTransactionHandles(transaction); break; case TS_EVENT_HTTP_TXN_CLOSE: { // opening scope to declare plugins variable below + initTransactionHandles(transaction); const std::list<TransactionPlugin *> &plugins = utils::internal::getTransactionPlugins(transaction); for (std::list<TransactionPlugin *>::const_iterator iter = plugins.begin(), end = plugins.end(); iter != end; ++iter) { shared_ptr<Mutex> trans_mutex = utils::internal::getTransactionPluginMutex(**iter);
