trafficserver-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Peach <jpe...@apache.org>
Subject Re: [1/2] git commit: TS-2522 Better hook management, and cleanup
Date Tue, 04 Mar 2014 16:36:20 GMT
On Mar 4, 2014, at 12:19 AM, zwoop@apache.org wrote:

> Repository: trafficserver
> Updated Branches:
>  refs/heads/master 17f680231 -> 4f0b0b447
> 
> 
> TS-2522 Better hook management, and cleanup
> 
> This also does
> 
>     - Add support for system wide config directory as default
>     - Better debug messages (textual hook names etc.)
>     - Less overhead on creating TXN hooks
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/31792d2a
> Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/31792d2a
> Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/31792d2a
> 
> Branch: refs/heads/master
> Commit: 31792d2aae9519e0feb66ab9e80b1a9d5d51d7de
> Parents: 17f6802
> Author: Leif Hedstrom <zwoop@apache.org>
> Authored: Thu Feb 27 19:55:53 2014 -0700
> Committer: Leif Hedstrom <zwoop@apache.org>
> Committed: Tue Mar 4 01:13:59 2014 -0700
> 
> ----------------------------------------------------------------------
> CHANGES                                  |   3 +
> plugins/header_rewrite/header_rewrite.cc | 216 ++++++++++++++++----------
> plugins/header_rewrite/lulu.h            |   4 +-
> plugins/header_rewrite/operators.cc      |   8 +-
> plugins/header_rewrite/parser.cc         |   2 +-
> plugins/header_rewrite/resources.cc      |   7 +-
> plugins/header_rewrite/resources.h       |   1 -
> plugins/header_rewrite/ruleset.cc        |   4 +-
> 8 files changed, 152 insertions(+), 93 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/CHANGES
> ----------------------------------------------------------------------
> diff --git a/CHANGES b/CHANGES
> index 3a83537..363ab16 100644
> --- a/CHANGES
> +++ b/CHANGES
> @@ -1,6 +1,9 @@
>                                                          -*- coding: utf-8 -*-
> Changes with Apache Traffic Server 5.0.0
> 
> +  *) [TS-2522] Better hook management for header_rewrite plugin, and some
> +   cleanup.
> +
>   *) [TS-2169] Add SSL statistics
>    Author: Ron Barber <rbarber@yahoo-inc.com>
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/header_rewrite.cc
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/header_rewrite.cc b/plugins/header_rewrite/header_rewrite.cc
> index 6fc7960..614d287 100644
> --- a/plugins/header_rewrite/header_rewrite.cc
> +++ b/plugins/header_rewrite/header_rewrite.cc
> @@ -27,40 +27,83 @@
> #include "resources.h"
> 
> // Debugs
> -const char* PLUGIN_NAME = "header_rewrite";
> -const char* PLUGIN_NAME_DBG = "header_rewrite_dbg";
> +const char PLUGIN_NAME[] = "header_rewrite";
> +const char PLUGIN_NAME_DBG[] = "dbg_header_rewrite";
> +
> +const char* HOOK_NAMES[] = {

You should do some kind of static assert to force a build break if new hooks are added.

> +  "TS_HTTP_READ_REQUEST_HDR_HOOK",
> +  "TS_HTTP_OS_DNS_HOOK",
> +  "TS_HTTP_SEND_REQUEST_HDR_HOOK",
> +  "TS_HTTP_READ_CACHE_HDR_HOOK",
> +  "TS_HTTP_READ_RESPONSE_HDR_HOOK",
> +  "TS_HTTP_SEND_RESPONSE_HDR_HOOK",
> +  "TS_HTTP_REQUEST_TRANSFORM_HOOK",
> +  "TS_HTTP_RESPONSE_TRANSFORM_HOOK",
> +  "TS_HTTP_SELECT_ALT_HOOK",
> +  "TS_HTTP_TXN_START_HOOK",
> +  "TS_HTTP_TXN_CLOSE_HOOK",
> +  "TS_HTTP_SSN_START_HOOK",
> +  "TS_HTTP_SSN_CLOSE_HOOK",
> +  "TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK",
> +  "TS_HTTP_PRE_REMAP_HOOK",
> +  "TS_HTTP_POST_REMAP_HOOK",
> +  "TS_HTTP_RESPONSE_CLIENT_HOOK",
> +  "TS_HTTP_LAST_HOOK"
> +};
> +
> +
> +// Forward declaration for the main continuation.
> +static int cont_rewrite_headers(TSCont, TSEvent, void *);
> 
> -static const char* DEFAULT_CONF_PATH = "/usr/local/etc/header_rewrite/";
> 
> // Simple wrapper around a configuration file / set. This is useful such that
> // we can reuse most of the code for both global and per-remap rule sets.
> -struct RulesConfig
> +class RulesConfig
> {
> +public:
>   RulesConfig()
>   {
> -    memset(rules, 0, sizeof(rules));
> -    memset(resids, 0, sizeof(resids));
> +    memset(_rules, 0, sizeof(_rules));
> +    memset(_resids, 0, sizeof(_resids));
> +
> +    _cont = TSContCreate(cont_rewrite_headers, NULL);
> +    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];
> +    for (int i=TS_HTTP_READ_REQUEST_HDR_HOOK; i<TS_HTTP_LAST_HOOK; ++i) {
> +      delete _rules[i];
> +    }
> +
> +    TSContDestroy(_cont);
>   }
> 
> -  RuleSet* rules[TS_HTTP_LAST_HOOK+1];
> -  ResourceIDs resids[TS_HTTP_LAST_HOOK+1];
> +  TSCont continuation() const { return _cont; }
> +
> +  ResourceIDs resid(int hook) const { return _resids[hook]; }
> +  RuleSet* rule(int hook) const { return _rules[hook]; }
> +
> +  bool parse_config(const std::string fname, TSHttpHookID default_hook);
> +
> +private:
> +  bool add_rule(RuleSet* rule);
> +
> +  TSCont _cont;
> +  RuleSet* _rules[TS_HTTP_LAST_HOOK+1];
> +  ResourceIDs _resids[TS_HTTP_LAST_HOOK+1];
> };
> 
> // Helper function to add a rule to the rulesets
> -static bool
> -add_rule(RuleSet* rule, RulesConfig *conf) {
> +bool
> +RulesConfig::add_rule(RuleSet* rule)
> +{
>   if (rule && rule->has_operator()) {
> -    TSDebug(PLUGIN_NAME, "Adding rule to hook=%d\n", rule->get_hook());
> -    if (NULL == conf->rules[rule->get_hook()]) {
> -      conf->rules[rule->get_hook()] = rule;
> +    TSDebug(PLUGIN_NAME_DBG, "   Adding rule to hook=%s\n", HOOK_NAMES[rule->get_hook()]);
> +    if (NULL == _rules[rule->get_hook()]) {
> +      _rules[rule->get_hook()] = rule;
>     } else {
> -      conf->rules[rule->get_hook()]->append(rule);
> +      _rules[rule->get_hook()]->append(rule);
>     }
>     return true;
>   }
> @@ -76,17 +119,24 @@ add_rule(RuleSet* rule, RulesConfig *conf) {
> // anyways (or reload for remap.config), so not really in the critical path.
> //
> bool
> -parse_config(const std::string fname, TSHttpHookID default_hook, RulesConfig *conf)
> +RulesConfig::parse_config(const std::string fname, TSHttpHookID default_hook)
> {
>   RuleSet* rule = NULL;
> -  std::string filename = fname;
> +  std::string filename;
>   std::ifstream f;
>   int lineno = 0;
> 
> -  // Try appending the default conf path if the fname doesn't exist.
> -  if (0 != access(filename.c_str(), R_OK)) {
> -    filename = DEFAULT_CONF_PATH;
> -    filename += fname;
> +  if (0 == fname.size()) {
> +    TSError("%s: no config filename provided", PLUGIN_NAME);
> +    return false;
> +
> +  }
> +
> +  if (fname[0] != '/') {
> +    filename = TSConfigDirGet();
> +    filename += "/" + fname;
> +  } else {
> +    filename = fname;
>   }
> 
>   f.open(filename.c_str(), std::ios::in);
> @@ -95,8 +145,6 @@ parse_config(const std::string fname, TSHttpHookID default_hook, RulesConfig
*co
>     return false;
>   }
> 
> -  TSDebug(PLUGIN_NAME, "Loading header_rewrite config from %s", filename.c_str());
> -
>   while (!f.eof()) {
>     std::string line;
> 
> @@ -105,16 +153,19 @@ parse_config(const std::string fname, TSHttpHookID default_hook,
RulesConfig *co
>     TSDebug(PLUGIN_NAME_DBG, "Reading line: %d: %s", lineno, line.c_str());
> 
>     boost::trim(line);
> -    if (line.empty() || (line[0] == '#'))
> +    if (line.empty() || (line[0] == '#')) {
>       continue;
> +    }
> 
>     Parser p(line);  // Tokenize and parse this line
> -    if (p.empty())
> +    if (p.empty()) {
>       continue;
> +    }
> 
>     // If we are at the beginning of a new condition, save away the previous rule (but
only if it has operators).
> -    if (p.is_cond() && add_rule(rule, conf))
> +    if (p.is_cond() && add_rule(rule)) {
>       rule = NULL;
> +    }
> 
>     if (NULL == rule) {
>       rule = new RuleSet();
> @@ -151,12 +202,12 @@ parse_config(const std::string fname, TSHttpHookID default_hook,
RulesConfig *co
>   }
> 
>   // Add the last rule (possibly the only rule)
> -  add_rule(rule, conf);
> +  add_rule(rule);
> 
>   // Collect all resource IDs that we need
>   for (int i=TS_HTTP_READ_REQUEST_HDR_HOOK; i<TS_HTTP_LAST_HOOK; ++i) {
> -    if (conf->rules[i]) {
> -      conf->resids[i] = conf->rules[i]->get_all_resource_ids();
> +    if (_rules[i]) {
> +      _resids[i] = _rules[i]->get_all_resource_ids();
>     }
>   }
> 
> @@ -174,7 +225,6 @@ cont_rewrite_headers(TSCont contp, TSEvent event, void *edata)
>   TSHttpHookID hook = TS_HTTP_LAST_HOOK;
>   RulesConfig* conf = static_cast<RulesConfig*>(TSContDataGet(contp));
> 
> -  // Get the resources necessary to process this event
>   switch (event) {
>   case TS_EVENT_HTTP_READ_RESPONSE_HDR:
>     hook = TS_HTTP_READ_RESPONSE_HDR_HOOK;
> @@ -198,10 +248,11 @@ cont_rewrite_headers(TSCont contp, TSEvent event, void *edata)
>   }
> 
>   if (hook != TS_HTTP_LAST_HOOK) {
> -    const RuleSet* rule = conf->rules[hook];
> +    const RuleSet* rule = conf->rule(hook);
>     Resources res(txnp, contp);
> 
> -    res.gather(conf->resids[hook], hook);
> +    // Get the resources necessary to process this event
> +    res.gather(conf->resid(hook), hook);
> 
>     // Evaluation of all rules. This code is sort of duplicate in DoRemap as well.
>     while (rule) {
> @@ -236,7 +287,6 @@ TSPluginInit(int argc, const char *argv[])
>   if (TS_SUCCESS != TSPluginRegister(TS_SDK_VERSION_3_0 , &info)) {
>     TSError("%s: plugin registration failed.\n", PLUGIN_NAME);
>   }
> -  TSDebug(PLUGIN_NAME, "number of arguments: %d", argc);
> 
>   // Parse the global config file(s). All rules are just appended
>   // to the "global" Rules configuration.
> @@ -246,10 +296,12 @@ TSPluginInit(int argc, const char *argv[])
>   for (int i=1; i < argc; ++i) {
>     // Parse the config file(s). Note that multiple config files are
>     // just appended to the configurations.
> -    if (!parse_config(argv[i], TS_HTTP_READ_RESPONSE_HDR_HOOK, conf)) {
> -      TSError("header_rewrite: failed to parse configuration file %s", argv[argc]);
> -    } else {
> +    TSDebug(PLUGIN_NAME, "Loading global configuration file %s", argv[i]);
> +    if (conf->parse_config(argv[i], TS_HTTP_READ_RESPONSE_HDR_HOOK)) {
> +      TSDebug(PLUGIN_NAME, "Succesfully loaded global config file %s", argv[i]);
>       got_config = true;
> +    } else {
> +      TSError("header_rewrite: failed to parse configuration file %s", argv[i]);
>     }
>   }
> 
> @@ -258,8 +310,8 @@ TSPluginInit(int argc, const char *argv[])
>     TSContDataSet(contp, conf);
> 
>     for (int i=TS_HTTP_READ_REQUEST_HDR_HOOK; i<TS_HTTP_LAST_HOOK; ++i) {
> -      if (conf->rules[i]) {
> -        TSDebug(PLUGIN_NAME, "adding hook: %d", i);
> +      if (conf->rule(i)) {
> +        TSDebug(PLUGIN_NAME, "Adding global ruleset to hook=%s", HOOK_NAMES[i]);
>         TSHttpHookAdd(static_cast<TSHttpHookID>(i), contp);
>       }
>     }
> @@ -293,7 +345,7 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size)
>     return TS_ERROR;
>   }
> 
> -  TSDebug(PLUGIN_NAME, "remap plugin is successfully initialized");
> +  TSDebug(PLUGIN_NAME, "Remap plugin is successfully initialized");
>   return TS_SUCCESS;
> }
> 
> @@ -301,7 +353,7 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size)
> TSReturnCode
> TSRemapNewInstance(int argc, char *argv[], void **ih, char * /* errbuf ATS_UNUSED */,
int /* errbuf_size ATS_UNUSED */)
> {
> -  TSDebug(PLUGIN_NAME, "initializing the remap plugin header_rewrite");
> +  TSDebug(PLUGIN_NAME, "Instantiating a new remap.config plugin rule");
> 
>   if (argc < 3) {
>     TSError("%s: Unable to create remap instance, need config file", PLUGIN_NAME);
> @@ -311,14 +363,25 @@ TSRemapNewInstance(int argc, char *argv[], void **ih, char * /*
errbuf ATS_UNUSE
>   RulesConfig* conf = new RulesConfig;
> 
>   for (int i=2; i < argc; ++i) {
> -    if (!parse_config(argv[i], TS_REMAP_PSEUDO_HOOK, conf)) {
> +    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);
>       return TS_ERROR;
> +    } else {
> +      TSDebug(PLUGIN_NAME, "Succesfully loaded remap config file %s", argv[i]);
>     }
>   }
> 
> -  *ih = conf;
> -  TSDebug(PLUGIN_NAME, "added header_rewrite remap rule set");
> +  // For debugging only
> +  if (TSIsDebugTagSet(PLUGIN_NAME)) {
> +    for (int i=TS_HTTP_READ_REQUEST_HDR_HOOK; i<TS_HTTP_LAST_HOOK; ++i) {
> +      if (conf->rule(i)) {
> +        TSDebug(PLUGIN_NAME, "Adding remap ruleset to hook=%s", HOOK_NAMES[i]);
> +      }
> +    }
> +  }
> +
> +  *ih = static_cast<void*>(conf);
> 
>   return TS_SUCCESS;
> }
> @@ -338,57 +401,46 @@ TSRemapDeleteInstance(void *ih)
> TSRemapStatus
> TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo *rri)
> {
> -  TSRemapStatus rval = TSREMAP_NO_REMAP;
> -
> +  // Make sure things are properly setup (this should never happen)
>   if (NULL == ih) {
>     TSDebug(PLUGIN_NAME, "No Rules configured, falling back to default");
> -    return rval;
> -  } else {
> -    RulesConfig* conf = static_cast<RulesConfig*>(ih);
> -
> -    // TODO: We should optimize this to not create continuations every time,
> -    // but instead save the continuations, with configurations, as the per
> -    // remap instance data.
> +    return TSREMAP_NO_REMAP;
> +  }
> 
> -    // 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) {
> -      TSCont contp = NULL;
> +  TSRemapStatus rval = TSREMAP_NO_REMAP;
> +  RulesConfig* conf = static_cast<RulesConfig*>(ih);
> 
> -      if (conf->rules[i]) {
> -        if (NULL == contp) {
> -          contp = TSContCreate(cont_rewrite_headers, NULL);
> -          TSContDataSet(contp, conf);
> -        }
> -        TSHttpTxnHookAdd(rh, static_cast<TSHttpHookID>(i), contp);
> -        TSDebug(PLUGIN_NAME, "activated transaction hook via remap.config: new hook=%d",
i);
> -      }
> +  // 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)) {
> +      TSHttpTxnHookAdd(rh, static_cast<TSHttpHookID>(i), conf->continuation());
> +      TSDebug(PLUGIN_NAME, "Added remapped TXN hook=%s", HOOK_NAMES[i]);
>     }
> +  }
> 
> -    // Now handle the remap specific rules for the "remap hook" (which is not a real
hook).
> -    // This avoids scheduling an additional continuation for a very common case.
> -    RuleSet* rule = conf->rules[TS_REMAP_PSEUDO_HOOK];
> -    Resources res(rh, rri);
> -
> -    // res.gather(conf->resids[TS_REMAP_PSEUDO_HOOK], TS_REMAP_PSEUDO_HOOK);
> -    res.gather(RSRC_CLIENT_REQUEST_HEADERS, TS_REMAP_PSEUDO_HOOK);
> +  // 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.
> +  RuleSet* rule = conf->rule(TS_REMAP_PSEUDO_HOOK);
> +  Resources res(rh, rri);
> 
> -    // Evaluation. This code is duplicated sort of, should we merge with the continuation
evaluator ?
> -    while (rule) {
> -      if (rule->eval(res)) {
> -        OperModifiers rt = rule->exec(res);
> +  res.gather(RSRC_CLIENT_REQUEST_HEADERS, TS_REMAP_PSEUDO_HOOK);
> +  while (rule) {
> +    if (rule->eval(res)) {
> +      OperModifiers rt = rule->exec(res);
> 
> -        if (res.changed_url == true)
> -          rval = TSREMAP_DID_REMAP;
> +      if (res.changed_url == true) {
> +        rval = TSREMAP_DID_REMAP;
> +      }
> 
> -        if (rule->last() || (rt & OPER_LAST)) {
> -          break; // Conditional break, force a break with [L]
> -        }
> +      if (rule->last() || (rt & OPER_LAST)) {
> +        break; // Conditional break, force a break with [L]
>       }
> -      rule = rule->next;
>     }
> +    rule = rule->next;
>   }
> 
> -  TSDebug(PLUGIN_NAME, "returing with status: %d", rval);
> +  TSDebug(PLUGIN_NAME_DBG, "Returing from TSRemapDoRemap with status: %d", rval);
>   return rval;
> }
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/lulu.h
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/lulu.h b/plugins/header_rewrite/lulu.h
> index 0dd3cb1..eb89031 100644
> --- a/plugins/header_rewrite/lulu.h
> +++ b/plugins/header_rewrite/lulu.h
> @@ -43,8 +43,8 @@
> #error "Define barriers"
> #endif
> 
> -extern const char* PLUGIN_NAME;
> -extern const char* PLUGIN_NAME_DBG;
> +extern const char PLUGIN_NAME[];
> +extern const char PLUGIN_NAME_DBG[];
> 
> 
> // From google styleguide: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/operators.cc
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/operators.cc b/plugins/header_rewrite/operators.cc
> index d6a60e5..3b2cd27 100644
> --- a/plugins/header_rewrite/operators.cc
> +++ b/plugins/header_rewrite/operators.cc
> @@ -361,7 +361,7 @@ OperatorRMHeader::exec(const Resources& res) const
>     TSDebug(PLUGIN_NAME, "OperatorRMHeader::exec() invoked on header %s", _header.c_str());
>     field_loc = TSMimeHdrFieldFind(res.bufp, res.hdr_loc, _header.c_str(), _header.size());
>     while (field_loc) {
> -      TSDebug(PLUGIN_NAME, "\tdeleting header %s", _header.c_str());
> +      TSDebug(PLUGIN_NAME, "   Deleting header %s", _header.c_str());
>       tmp = TSMimeHdrFieldNextDup(res.bufp, res.hdr_loc, field_loc);
>       TSMimeHdrFieldDestroy(res.bufp, res.hdr_loc, field_loc);
>       TSHandleMLocRelease(res.bufp, res.hdr_loc, field_loc);
> @@ -405,7 +405,7 @@ OperatorAddHeader::exec(const Resources& res) const
> 
>     if (TS_SUCCESS == TSMimeHdrFieldCreateNamed(res.bufp, res.hdr_loc, _header.c_str(),
_header.size(), &field_loc)) {
>       if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(res.bufp, res.hdr_loc, field_loc,
-1, value.c_str(), value.size())) {
> -        TSDebug(PLUGIN_NAME, "   adding header %s", _header.c_str());
> +        TSDebug(PLUGIN_NAME, "   Adding header %s", _header.c_str());
>         TSMimeHdrFieldAppend(res.bufp, res.hdr_loc, field_loc);
>       }
>       TSHandleMLocRelease(res.bufp, res.hdr_loc, field_loc);
> @@ -445,7 +445,7 @@ OperatorSetHeader::exec(const Resources& res) const
>       // No existing header, so create one
>       if (TS_SUCCESS == TSMimeHdrFieldCreateNamed(res.bufp, res.hdr_loc, _header.c_str(),
_header.size(), &field_loc)) {
>         if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(res.bufp, res.hdr_loc, field_loc,
-1, value.c_str(), value.size())) {
> -          TSDebug(PLUGIN_NAME, "   adding header %s", _header.c_str());
> +          TSDebug(PLUGIN_NAME, "   Adding header %s", _header.c_str());
>           TSMimeHdrFieldAppend(res.bufp, res.hdr_loc, field_loc);
>         }
>         TSHandleMLocRelease(res.bufp, res.hdr_loc, field_loc);
> @@ -458,7 +458,7 @@ OperatorSetHeader::exec(const Resources& res) const
>         if (first) {
>           first = false;
>           if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(res.bufp, res.hdr_loc, field_loc,
-1, value.c_str(), value.size())) {
> -            TSDebug(PLUGIN_NAME, "   overwriting header %s", _header.c_str());
> +            TSDebug(PLUGIN_NAME, "   Overwriting header %s", _header.c_str());
>           }
>         } else {
>           TSMimeHdrFieldDestroy(res.bufp, res.hdr_loc, field_loc);
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/parser.cc
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/parser.cc b/plugins/header_rewrite/parser.cc
> index cdff4ee..a389858 100644
> --- a/plugins/header_rewrite/parser.cc
> +++ b/plugins/header_rewrite/parser.cc
> @@ -98,7 +98,7 @@ Parser::preprocess(std::vector<std::string>& tokens)
> Parser::Parser(const std::string& line) :
>   _cond(false), _empty(false)
> {
> -  TSDebug("header_rewrite_dbg", "Calling CTOR for Parser");
> +  TSDebug(PLUGIN_NAME_DBG, "Calling CTOR for Parser");
> 
>   if (line[0] == '#') {
>     _empty = true;
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/resources.cc
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/resources.cc b/plugins/header_rewrite/resources.cc
> index d89149a..eb4afaf 100644
> --- a/plugins/header_rewrite/resources.cc
> +++ b/plugins/header_rewrite/resources.cc
> @@ -24,10 +24,15 @@
> #include "resources.h"
> #include "lulu.h"
> 
> +// This is defined in header_rewrite.cc, used here for debugging
> +extern char* HOOK_NAMES[];
> +
> +
> +// Collect all resources
> void
> Resources::gather(const ResourceIDs ids, TSHttpHookID hook)
> {
> -  TSDebug(PLUGIN_NAME, "Building resource structure for hook (%d)", hook);
> +  TSDebug(PLUGIN_NAME, "Building resources, hook=%s", HOOK_NAMES[hook]);
> 
>   // If we need the client request headers, make sure it's also available in the client
vars.
>   if (ids & RSRC_CLIENT_REQUEST_HEADERS) {
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/resources.h
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/resources.h b/plugins/header_rewrite/resources.h
> index cb9d062..5bda0da 100644
> --- a/plugins/header_rewrite/resources.h
> +++ b/plugins/header_rewrite/resources.h
> @@ -60,7 +60,6 @@ public:
>       _rri(rri), changed_url(false), _ready(false)
>   {
>     TSDebug(PLUGIN_NAME_DBG, "Calling CTOR for Resources (RemapAPI)");
> -    TSDebug(PLUGIN_NAME, "rri: %p", _rri);
>   }
> 
>   ~Resources() { destroy(); }
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/31792d2a/plugins/header_rewrite/ruleset.cc
> ----------------------------------------------------------------------
> diff --git a/plugins/header_rewrite/ruleset.cc b/plugins/header_rewrite/ruleset.cc
> index 9c6bc06..e210e47 100644
> --- a/plugins/header_rewrite/ruleset.cc
> +++ b/plugins/header_rewrite/ruleset.cc
> @@ -47,7 +47,7 @@ RuleSet::add_condition(Parser& p)
>   Condition* c = condition_factory(p.get_op());
> 
>   if (NULL != c) {
> -    TSDebug(PLUGIN_NAME, "Adding condition: %%{%s} with arg: %s\n", p.get_op().c_str(),
p.get_arg().c_str());
> +    TSDebug(PLUGIN_NAME, "   Adding condition: %%{%s} with arg: %s\n", p.get_op().c_str(),
p.get_arg().c_str());
>     c->initialize(p);
>     if (!c->set_hook(_hook)) {
>       TSError("%s: can't use this condition in this hook", PLUGIN_NAME);
> @@ -73,7 +73,7 @@ RuleSet::add_operator(Parser& p)
> 
>   if (NULL != o) {
>     // TODO: This should be extended to show both the "argument" and the "value" (if
both are used)
> -    TSDebug(PLUGIN_NAME, "Adding operator: %s(%s)\n", p.get_op().c_str(), p.get_arg().c_str());
> +    TSDebug(PLUGIN_NAME, "   Adding operator: %s(%s)\n", p.get_op().c_str(), p.get_arg().c_str());
>     o->initialize(p);
>     if (!o->set_hook(_hook)) {
>       TSError("%s: can't use this operator in this hook", PLUGIN_NAME);
> 


Mime
View raw message