You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by os...@apache.org on 2012/09/08 23:27:07 UTC

[2/2] git commit: TS-1443 add enable-gzip option for gzip plugin

TS-1443 add enable-gzip option for gzip plugin

Author: Conan Wang

Add a configuration option to enable / disable compression
for hosts


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0a51cfb0
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0a51cfb0
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0a51cfb0

Branch: refs/heads/master
Commit: 0a51cfb0650f9b0a6889f9e95e6b4c1623743bd2
Parents: 150be45
Author: Otto van der Schaaf <os...@apache.org>
Authored: Sat Sep 8 23:20:31 2012 +0200
Committer: Otto van der Schaaf <os...@apache.org>
Committed: Sat Sep 8 23:20:31 2012 +0200

----------------------------------------------------------------------
 plugins/experimental/gzip/README             |    4 ++++
 plugins/experimental/gzip/configuration.cc   |    7 +++++++
 plugins/experimental/gzip/configuration.h    |    4 ++++
 plugins/experimental/gzip/gzip.cc            |    8 ++++----
 plugins/experimental/gzip/sample.gzip.config |    4 ++++
 5 files changed, 23 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0a51cfb0/plugins/experimental/gzip/README
----------------------------------------------------------------------
diff --git a/plugins/experimental/gzip/README b/plugins/experimental/gzip/README
index 07f4155..ff8b807 100644
--- a/plugins/experimental/gzip/README
+++ b/plugins/experimental/gzip/README
@@ -27,6 +27,8 @@ a sample configuration (sample.gzip.config):
 ######################################################################
 #flags and options are:
 #
+# enable-gzip: default true, set true/false to enable/disable plugin for specific host
+#
 # remove-accept-encoding: this sets if the plugin should hide the accept encoding from origin servers
 # - to ease the load on the origins
 # - for when the proxy parses responses, and the resulting compression/decompression
@@ -40,6 +42,7 @@ a sample configuration (sample.gzip.config):
 ######################################################################
 
 #first, we configure the default/global plugin behaviour
+enable-gzip true
 remove-accept-encoding true
 cache false
 
@@ -52,6 +55,7 @@ disallow */bla*
 #override the global configuration for a host. 
 #www.foo.nl does NOT inherit anything
 [www.foo.nl]
+enable-gzip true
 remove-accept-encoding true
 compressible-content-type text/*
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0a51cfb0/plugins/experimental/gzip/configuration.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/gzip/configuration.cc b/plugins/experimental/gzip/configuration.cc
index eb632e8..02d49d0 100644
--- a/plugins/experimental/gzip/configuration.cc
+++ b/plugins/experimental/gzip/configuration.cc
@@ -81,6 +81,7 @@ namespace Gzip {
     kParseStart,
     kParseCompressibleContentType,
     kParseRemoveAcceptEncoding,
+    kParseEnable,
     kParseCache,
     kParseDisallow,
   };
@@ -202,6 +203,8 @@ namespace Gzip {
 	    state = kParseCompressibleContentType;
 	  } else if (token == "remove-accept-encoding" ) {
 	    state = kParseRemoveAcceptEncoding;
+	  } else if (token == "enabled" ) {
+	    state = kParseEnable;
 	  } else if (token == "cache" ) {
 	    state = kParseCache;
 	  } else if (token == "disallow" ) {
@@ -219,6 +222,10 @@ namespace Gzip {
 	  current_host_configuration->set_remove_accept_encoding(token == "true");
 	  state = kParseStart;
 	  break;
+	case kParseEnable:
+	  current_host_configuration->set_enabled(token == "true");
+	  state = kParseStart;
+	  break;
 	case kParseCache:
 	  current_host_configuration->set_cache(token == "true");
 	  state = kParseStart;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0a51cfb0/plugins/experimental/gzip/configuration.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/gzip/configuration.h b/plugins/experimental/gzip/configuration.h
index bdcd845..c966678 100644
--- a/plugins/experimental/gzip/configuration.h
+++ b/plugins/experimental/gzip/configuration.h
@@ -34,10 +34,13 @@ namespace Gzip  {
   public: //todo -> only configuration should be able to construct hostconfig
     explicit HostConfiguration(std::string host)  
       : host_(host)
+      , enabled_(true)
       , cache_(true)
       , remove_accept_encoding_(false)
     {}
 
+    bool enabled() { return enabled_; }
+    void set_enabled(bool x) { enabled_ = x; } 
     bool cache() { return cache_; }
     void set_cache(bool x) { cache_ = x; } 
     bool remove_accept_encoding() { return remove_accept_encoding_; }
@@ -50,6 +53,7 @@ namespace Gzip  {
 
   private:
     std::string host_;
+    bool enabled_;
     bool cache_;
     bool remove_accept_encoding_;
     std::vector<std::string> compressible_content_types_;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0a51cfb0/plugins/experimental/gzip/gzip.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/gzip/gzip.cc b/plugins/experimental/gzip/gzip.cc
index fe79740..40cbda3 100644
--- a/plugins/experimental/gzip/gzip.cc
+++ b/plugins/experimental/gzip/gzip.cc
@@ -634,13 +634,13 @@ transform_plugin(TSCont contp, TSEvent event, void *edata)
 	//we could clone the hosting configuration here, to make it deletable on reload?
 	TSHttpTxnArgSet(txnp, arg_idx_host_configuration, (void *) hc);
 
-	if (!hc->IsUrlAllowed(url, url_len)) {
+	if (!hc->enabled() || !hc->IsUrlAllowed(url, url_len)) {
 	  //FIXME: no double negatives
 	  TSHttpTxnArgSet(txnp, arg_idx_url_disallowed, (void *) &GZIP_ONE);
-	  info("url [%.*s] not compressible", url_len, url);
+	  info("url [%.*s] not allowed", url_len, url);
+	} else {
+	  normalize_accept_encoding(txnp, req_buf, req_loc);	
 	}
-	
-        normalize_accept_encoding(txnp, req_buf, req_loc);	
         TSHandleMLocRelease(req_buf, TS_NULL_MLOC, req_loc);
       }
       TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0a51cfb0/plugins/experimental/gzip/sample.gzip.config
----------------------------------------------------------------------
diff --git a/plugins/experimental/gzip/sample.gzip.config b/plugins/experimental/gzip/sample.gzip.config
index 4938c7b..994d962 100644
--- a/plugins/experimental/gzip/sample.gzip.config
+++ b/plugins/experimental/gzip/sample.gzip.config
@@ -1,6 +1,8 @@
 ######################################################################
 #flags and options are:
 #
+# enable-gzip: default true, set true/false to enable/disable plugin for specific host
+#
 # remove-accept-encoding: this sets if the plugin should hide the accept encoding from origin servers
 # - to ease the load on the origins
 # - for when the proxy parses responses, and the resulting compression/decompression
@@ -14,6 +16,7 @@
 ######################################################################
 
 #first, we configure the default/global plugin behaviour
+enabled true
 remove-accept-encoding true
 cache false
 
@@ -26,6 +29,7 @@ disallow */bla*
 #override the global configuration for a host. 
 #www.foo.nl does NOT inherit anything
 [www.foo.nl]
+enabled true
 remove-accept-encoding true
 compressible-content-type text/*