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