Repository: trafficserver Updated Branches: refs/heads/master b16c20879 -> 8c985ee41
C++ API enhancement - redirect support. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/8c985ee4 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/8c985ee4 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/8c985ee4 Branch: refs/heads/master Commit: 8c985ee41994013b8ba106edf30dfe6ee30de975 Parents: b16c208 Author: Alan M. Carroll <[email protected]> Authored: Mon Sep 29 11:15:09 2014 -0500 Committer: Alan M. Carroll <[email protected]> Committed: Mon Sep 29 11:16:00 2014 -0500 ---------------------------------------------------------------------- lib/atscppapi/src/Transaction.cc | 13 ++++++++++--- lib/atscppapi/src/include/atscppapi/Transaction.h | 5 +++++ 2 files changed, 15 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/8c985ee4/lib/atscppapi/src/Transaction.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Transaction.cc b/lib/atscppapi/src/Transaction.cc index 2470e7f..52f3dfe 100644 --- a/lib/atscppapi/src/Transaction.cc +++ b/lib/atscppapi/src/Transaction.cc @@ -26,6 +26,7 @@ #include <map> #include <string> #include <ts/ts.h> +#include <ink_memory.h> #include "atscppapi/shared_ptr.h" #include "logging_internal.h" #include "utils_internal.h" @@ -178,8 +179,8 @@ string Transaction::getEffectiveUrl() { } bool Transaction::setCacheUrl(const string &cache_url) { - TSReturnCode res = TSCacheUrlSet(state_->txn_, cache_url.c_str(), cache_url.length()); - return (res == TS_SUCCESS); + TSReturnCode res = TSCacheUrlSet(state_->txn_, cache_url.c_str(), cache_url.length()); + return (res == TS_SUCCESS); } const sockaddr *Transaction::getIncomingAddress() const { @@ -248,10 +249,16 @@ void Transaction::setTimeout(Transaction::TimeoutType type, int time_ms) { } } +void Transaction::redirectTo(std::string const& url) { + char* s = ats_strdup(url.c_str()); + // Must re-alloc the string locally because ownership is transferred to the transaction. + TSHttpTxnRedirectUrlSet(state_->txn_, s, url.length()); +} + namespace { /** - * initializeHandles is a convinience functor that takes a pointer to a TS Function that + * initializeHandles is a convenience functor that takes a pointer to a TS Function that * will return the TSMBuffer and TSMLoc for a given server request/response or client/request response * * @param constructor takes a function pointer of type GetterFunction http://git-wip-us.apache.org/repos/asf/trafficserver/blob/8c985ee4/lib/atscppapi/src/include/atscppapi/Transaction.h ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/include/atscppapi/Transaction.h b/lib/atscppapi/src/include/atscppapi/Transaction.h index 1e6014f..dbf18b8 100644 --- a/lib/atscppapi/src/include/atscppapi/Transaction.h +++ b/lib/atscppapi/src/include/atscppapi/Transaction.h @@ -298,6 +298,11 @@ public: * @return client response header size */ size_t getClientResponseHeaderSize(); + /** + * Redirect the transaction a different @a url. + */ + void redirectTo(std::string const& url); + private: TransactionState *state_; //!< The internal TransactionState object tied to the current Transaction friend class TransactionPlugin; //!< TransactionPlugin is a friend so it can call addPlugin()
