You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2018/04/07 00:52:28 UTC

[trafficserver] branch master updated: Removes the now obsolete ref-counting on configs / conts

This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 8adceb8  Removes the now obsolete ref-counting on configs / conts
8adceb8 is described below

commit 8adceb8b9691677ffc6c1e5c85f6ac15ecd70c7d
Author: Leif Hedstrom <zw...@apache.org>
AuthorDate: Sat Mar 31 20:31:56 2018 -0600

    Removes the now obsolete ref-counting on configs / conts
---
 plugins/header_rewrite/header_rewrite.cc | 52 ++++++++------------------------
 1 file changed, 12 insertions(+), 40 deletions(-)

diff --git a/plugins/header_rewrite/header_rewrite.cc b/plugins/header_rewrite/header_rewrite.cc
index 66c5bbf..7268835 100644
--- a/plugins/header_rewrite/header_rewrite.cc
+++ b/plugins/header_rewrite/header_rewrite.cc
@@ -67,7 +67,7 @@ static int cont_rewrite_headers(TSCont, TSEvent, void *);
 class RulesConfig
 {
 public:
-  RulesConfig() : _ref_count(0)
+  RulesConfig()
   {
     memset(_rules, 0, sizeof(_rules));
     memset(_resids, 0, sizeof(_resids));
@@ -76,6 +76,14 @@ public:
     TSContDataSet(_cont, static_cast<void *>(this));
   }
 
+  ~RulesConfig()
+  {
+    for (int i = TS_HTTP_READ_REQUEST_HDR_HOOK; i < TS_HTTP_LAST_HOOK; ++i) {
+      delete _rules[i];
+    }
+    TSContDestroy(_cont);
+  }
+
   TSCont
   continuation() const
   {
@@ -95,32 +103,10 @@ public:
 
   bool parse_config(const std::string &fname, TSHttpHookID default_hook);
 
-  void
-  hold()
-  {
-    ink_atomic_increment(&_ref_count, 1);
-  }
-  void
-  release()
-  {
-    if (1 >= ink_atomic_decrement(&_ref_count, 1)) {
-      delete this;
-    }
-  }
-
 private:
-  ~RulesConfig()
-  {
-    for (int i = TS_HTTP_READ_REQUEST_HDR_HOOK; i < TS_HTTP_LAST_HOOK; ++i) {
-      delete _rules[i];
-    }
-    TSContDestroy(_cont);
-  }
-
   bool add_rule(RuleSet *rule);
 
   TSCont _cont;
-  int _ref_count;
   RuleSet *_rules[TS_HTTP_LAST_HOOK + 1];
   ResourceIDs _resids[TS_HTTP_LAST_HOOK + 1];
 };
@@ -281,9 +267,6 @@ cont_rewrite_headers(TSCont contp, TSEvent event, void *edata)
   case TS_EVENT_HTTP_SEND_RESPONSE_HDR:
     hook = TS_HTTP_SEND_RESPONSE_HDR_HOOK;
     break;
-  case TS_EVENT_HTTP_TXN_CLOSE:
-    conf->release();
-    break;
   default:
     TSError("[%s] unknown event for this plugin", PLUGIN_NAME);
     TSDebug(PLUGIN_NAME, "unknown event for this plugin");
@@ -336,7 +319,6 @@ TSPluginInit(int argc, const char *argv[])
   bool got_config   = false;
 
   initGeoIP();
-  conf->hold();
 
   for (int i = 1; i < argc; ++i) {
     // Parse the config file(s). Note that multiple config files are
@@ -363,7 +345,7 @@ TSPluginInit(int argc, const char *argv[])
   } else {
     // Didn't get anything, nuke it.
     TSError("[%s] failed to parse any configuration file", PLUGIN_NAME);
-    conf->release();
+    delete conf;
   }
 }
 
@@ -407,12 +389,11 @@ TSRemapNewInstance(int argc, char *argv[], void **ih, char * /* errbuf ATS_UNUSE
 
   RulesConfig *conf = new RulesConfig;
 
-  conf->hold();
-
   for (int i = 2; i < argc; ++i) {
     TSDebug(PLUGIN_NAME, "Loading remap configuration file %s", argv[i]);
     if (!conf->parse_config(argv[i], TS_REMAP_PSEUDO_HOOK)) {
       TSError("[%s] Unable to create remap instance", PLUGIN_NAME);
+      delete conf;
       return TS_ERROR;
     } else {
       TSDebug(PLUGIN_NAME, "Succesfully loaded remap config file %s", argv[i]);
@@ -436,7 +417,7 @@ TSRemapNewInstance(int argc, char *argv[], void **ih, char * /* errbuf ATS_UNUSE
 void
 TSRemapDeleteInstance(void *ih)
 {
-  static_cast<RulesConfig *>(ih)->release();
+  delete static_cast<RulesConfig *>(ih);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -445,8 +426,6 @@ TSRemapDeleteInstance(void *ih)
 TSRemapStatus
 TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo *rri)
 {
-  bool hooked_p = false;
-
   // Make sure things are properly setup (this should never happen)
   if (nullptr == ih) {
     TSDebug(PLUGIN_NAME, "No Rules configured, falling back to default");
@@ -459,18 +438,11 @@ TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo *rri)
   // Go through all hooks we support, and setup the txn hook(s) as necessary
   for (int i = TS_HTTP_READ_REQUEST_HDR_HOOK; i < TS_HTTP_LAST_HOOK; ++i) {
     if (conf->rule(i)) {
-      hooked_p = true;
       TSHttpTxnHookAdd(rh, static_cast<TSHttpHookID>(i), conf->continuation());
       TSDebug(PLUGIN_NAME, "Added remapped TXN hook=%s", TSHttpHookNameLookup((TSHttpHookID)i));
     }
   }
 
-  // Two assumptions - configuration never uses this hook nor uses TS_HTTP_SSN_CLOSE_HOOK.
-  if (hooked_p) {
-    conf->hold();                                                       // mark as in use.
-    TSHttpTxnHookAdd(rh, TS_HTTP_TXN_CLOSE_HOOK, conf->continuation()); // clean up after.
-  }
-
   // Now handle the remap specific rules for the "remap hook" (which is not a real hook).
   // This is sufficiently differen than the normal cont_rewrite_headers() callback, and
   // we can't (shouldn't) schedule this as a TXN hook.

-- 
To stop receiving notification emails like this one, please contact
zwoop@apache.org.