You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by br...@apache.org on 2014/04/16 22:13:59 UTC
[1/2] git commit: [TS-2720] Fixing bug in C++ API Request
Transformations
Repository: trafficserver
Updated Branches:
refs/heads/master 9d12a5db7 -> 3fb05190f
[TS-2720] Fixing bug in C++ API Request Transformations
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a4860363
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a4860363
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a4860363
Branch: refs/heads/master
Commit: a4860363a94e7bb51e5de651c5ea07a804915777
Parents: 76a0777
Author: Brian Geffon <br...@apache.org>
Authored: Wed Apr 16 13:13:32 2014 -0700
Committer: Brian Geffon <br...@apache.org>
Committed: Wed Apr 16 13:13:32 2014 -0700
----------------------------------------------------------------------
CHANGES | 2 ++
.../NullTransformationPlugin.cc | 21 +++++++++++++++-----
lib/atscppapi/src/TransformationPlugin.cc | 18 ++++++++++++++++-
.../include/atscppapi/TransformationPlugin.h | 1 +
4 files changed, 36 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a4860363/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index ebe5161..8cb41d9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 5.0.0
+
+ *) [TS-2720] Fix bug with request transformations in C++ api
*) [TS-2717] header-rewrite set-redirect not working.
Author: Igor Brezac
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a4860363/lib/atscppapi/examples/null_transformation_plugin/NullTransformationPlugin.cc
----------------------------------------------------------------------
diff --git a/lib/atscppapi/examples/null_transformation_plugin/NullTransformationPlugin.cc b/lib/atscppapi/examples/null_transformation_plugin/NullTransformationPlugin.cc
index 0155d30..5312d3b 100644
--- a/lib/atscppapi/examples/null_transformation_plugin/NullTransformationPlugin.cc
+++ b/lib/atscppapi/examples/null_transformation_plugin/NullTransformationPlugin.cc
@@ -32,9 +32,15 @@ namespace {
class NullTransformationPlugin : public TransformationPlugin {
public:
- NullTransformationPlugin(Transaction &transaction)
- : TransformationPlugin(transaction, RESPONSE_TRANSFORMATION) {
- registerHook(HOOK_SEND_RESPONSE_HEADERS);
+ NullTransformationPlugin(Transaction &transaction, TransformationPlugin::Type xformType)
+ : TransformationPlugin(transaction, xformType) {
+ registerHook((xformType == TransformationPlugin::REQUEST_TRANSFORMATION) ?
+ HOOK_SEND_REQUEST_HEADERS : HOOK_SEND_RESPONSE_HEADERS);
+ }
+
+ void handleSendRequestHeaders(Transaction &transaction) {
+ transaction.getServerRequest().getHeaders()["X-Content-Transformed"] = "1";
+ transaction.resume();
}
void handleSendResponseHeaders(Transaction &transaction) {
@@ -60,14 +66,19 @@ private:
class GlobalHookPlugin : public GlobalPlugin {
public:
GlobalHookPlugin() {
+ registerHook(HOOK_READ_REQUEST_HEADERS_POST_REMAP);
registerHook(HOOK_READ_RESPONSE_HEADERS);
}
- virtual void handleReadResponseHeaders(Transaction &transaction) {
- transaction.addPlugin(new NullTransformationPlugin(transaction));
+ virtual void handleReadRequestHeadersPostRemap(Transaction &transaction) {
+ transaction.addPlugin(new NullTransformationPlugin(transaction, TransformationPlugin::REQUEST_TRANSFORMATION));
transaction.resume();
}
+ virtual void handleReadResponseHeaders(Transaction &transaction) {
+ transaction.addPlugin(new NullTransformationPlugin(transaction, TransformationPlugin::RESPONSE_TRANSFORMATION));
+ transaction.resume();
+ }
};
void TSPluginInit(int argc ATSCPPAPI_UNUSED, const char *argv[] ATSCPPAPI_UNUSED) {
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a4860363/lib/atscppapi/src/TransformationPlugin.cc
----------------------------------------------------------------------
diff --git a/lib/atscppapi/src/TransformationPlugin.cc b/lib/atscppapi/src/TransformationPlugin.cc
index f859bb3..3e5560a 100644
--- a/lib/atscppapi/src/TransformationPlugin.cc
+++ b/lib/atscppapi/src/TransformationPlugin.cc
@@ -56,6 +56,8 @@ struct atscppapi::TransformationPluginState: noncopyable {
// sent the input end our write complte.
bool input_complete_dispatched_;
+ std::string request_xform_output_; // in case of request xform, data produced is buffered here
+
TransformationPluginState(atscppapi::Transaction &transaction, TransformationPlugin &transformation_plugin,
TransformationPlugin::Type type, TSHttpTxn txn)
: vconn_(NULL), transaction_(transaction), transformation_plugin_(transformation_plugin), type_(type),
@@ -232,7 +234,7 @@ TransformationPlugin::~TransformationPlugin() {
delete state_;
}
-size_t TransformationPlugin::produce(const std::string &data) {
+size_t TransformationPlugin::doProduce(const std::string &data) {
LOG_DEBUG("TransformationPlugin=%p tshttptxn=%p producing output with length=%ld", this, state_->txn_, data.length());
int64_t write_length = static_cast<int64_t>(data.length());
if (!write_length) {
@@ -281,7 +283,21 @@ size_t TransformationPlugin::produce(const std::string &data) {
return static_cast<size_t>(bytes_written);
}
+size_t TransformationPlugin::produce(const std::string &data) {
+ if (state_->type_ == REQUEST_TRANSFORMATION) {
+ state_->request_xform_output_.append(data);
+ return data.size();
+ }
+ else {
+ return doProduce(data);
+ }
+}
+
size_t TransformationPlugin::setOutputComplete() {
+ if (state_->type_ = REQUEST_TRANSFORMATION) {
+ doProduce(state_->request_xform_output_);
+ }
+
int connection_closed = TSVConnClosedGet(state_->vconn_);
LOG_DEBUG("OutputComplete TransformationPlugin=%p tshttptxn=%p vconn=%p connection_closed=%d, total bytes written=%" PRId64, this, state_->txn_, state_->vconn_, connection_closed,state_->bytes_written_);
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a4860363/lib/atscppapi/src/include/atscppapi/TransformationPlugin.h
----------------------------------------------------------------------
diff --git a/lib/atscppapi/src/include/atscppapi/TransformationPlugin.h b/lib/atscppapi/src/include/atscppapi/TransformationPlugin.h
index ef934c3..4c617f7 100644
--- a/lib/atscppapi/src/include/atscppapi/TransformationPlugin.h
+++ b/lib/atscppapi/src/include/atscppapi/TransformationPlugin.h
@@ -121,6 +121,7 @@ protected:
TransformationPlugin(Transaction &transaction, Type type);
private:
TransformationPluginState *state_; /** Internal state for a TransformationPlugin */
+ size_t doProduce(const std::string &);
};
} /* atscppapi */
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/trafficserver
Posted by br...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/trafficserver
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/3fb05190
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/3fb05190
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/3fb05190
Branch: refs/heads/master
Commit: 3fb05190ff96689e06f2a08a4ef57915db31e705
Parents: a486036 9d12a5d
Author: Brian Geffon <br...@apache.org>
Authored: Wed Apr 16 13:13:41 2014 -0700
Committer: Brian Geffon <br...@apache.org>
Committed: Wed Apr 16 13:13:41 2014 -0700
----------------------------------------------------------------------
CHANGES | 7 +
configure.ac | 12 +-
doc/reference/plugins/index.en.rst | 1 +
doc/reference/plugins/tcpinfo.en.rst | 126 ++++++
doc/reference/plugins/ts_lua.en.rst | 77 ++--
doc/sdk/actions-guide.en.rst | 4 +-
doc/sdk/actions-guide/hosts-lookup-api.en.rst | 4 +-
doc/sdk/http-headers/http-headers.en.rst | 46 +-
doc/sdk/http-headers/mime-headers.en.rst | 84 ++--
doc/sdk/http-headers/urls.en.rst | 56 +--
.../adding-hooks.en.rst | 10 +-
.../http-sessions.en.rst | 4 +-
.../http-transactions.en.rst | 34 +-
.../initiate-http-connection.en.rst | 2 +-
.../intercepting-http-transactions.en.rst | 2 +-
doc/sdk/io-guide.en.rst | 16 +-
doc/sdk/io-guide/io-buffers.en.rst | 2 +-
doc/sdk/io-guide/transformations.en.rst | 4 +-
doc/sdk/io-guide/vios.en.rst | 22 +-
doc/sdk/misc-interface-guide.en.rst | 10 +-
.../memory-allocation.en.rst | 10 +-
.../thread-functions.en.rst | 8 +-
.../misc-interface-guide/tsfopen-family.en.rst | 12 +-
doc/sdk/mutex-guide.en.rst | 16 +-
doc/sdk/plugin-configurations.en.rst | 8 +-
.../guide-to-the-logging-api.en.rst | 16 +-
...trafficserver-settings-and-statistics.en.rst | 10 +-
example/include_other/macro.h | 75 ----
lib/Makefile.am | 4 +-
plugins/Makefile.am | 1 +
plugins/experimental/Makefile.am | 1 -
plugins/experimental/tcp_info/Makefile.am | 26 --
plugins/experimental/tcp_info/README | 76 ----
plugins/experimental/tcp_info/tcp_info.cc | 358 ----------------
plugins/experimental/tcp_info/tcp_info.config | 3 -
plugins/experimental/ts_lua/example/hdr.lua | 37 --
.../ts_lua/example/test_global_hdr.lua | 37 ++
.../experimental/ts_lua/example/test_hdr.lua | 37 ++
plugins/experimental/ts_lua/ts_lua.c | 155 ++++++-
plugins/experimental/ts_lua/ts_lua_common.h | 8 +
plugins/experimental/ts_lua/ts_lua_util.c | 9 +
plugins/tcpinfo/Makefile.am | 22 +
plugins/tcpinfo/tcpinfo.cc | 424 +++++++++++++++++++
proxy/PluginVC.h | 5 -
proxy/api/ts/ts.h | 4 +-
45 files changed, 1078 insertions(+), 807 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/3fb05190/CHANGES
----------------------------------------------------------------------
diff --cc CHANGES
index 8cb41d9,b952ea0..a2b07b9
--- a/CHANGES
+++ b/CHANGES
@@@ -1,8 -1,12 +1,14 @@@
-*- coding: utf-8 -*-
Changes with Apache Traffic Server 5.0.0
+
+ *) [TS-2720] Fix bug with request transformations in C++ api
+ *) [TS-2714] Promote the tcp_info plugin to stable as 'tcpinfo'.
+
+ *) [TS-2708] Refactor and modernize the tcp_info plugin.
+
+ *) [TS-2555] Adding global plugin support to ts_lua plugin.
+
*) [TS-2717] header-rewrite set-redirect not working.
Author: Igor Brezac