TS-2323: use the Layout API to find remap.config

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

Branch: refs/heads/master
Commit: 238e3396b591be810728ed316c53354560e14be2
Parents: 90f923e
Author: James Peach <[email protected]>
Authored: Fri Nov 1 10:45:52 2013 -0700
Committer: James Peach <[email protected]>
Committed: Tue Nov 5 16:46:39 2013 -0800

----------------------------------------------------------------------
 proxy/ReverseProxy.cc          |  4 ++--
 proxy/http/remap/UrlRewrite.cc | 30 +++++++++++++-----------------
 proxy/http/remap/UrlRewrite.h  |  7 +++----
 3 files changed, 18 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/238e3396/proxy/ReverseProxy.cc
----------------------------------------------------------------------
diff --git a/proxy/ReverseProxy.cc b/proxy/ReverseProxy.cc
index 4b4b578..51c3664 100644
--- a/proxy/ReverseProxy.cc
+++ b/proxy/ReverseProxy.cc
@@ -74,7 +74,7 @@ init_reverse_proxy()
 {
   ink_assert(rewrite_table == NULL);
   reconfig_mutex = new_ProxyMutex();
-  rewrite_table = NEW(new UrlRewrite("proxy.config.url_remap.filename"));
+  rewrite_table = NEW(new UrlRewrite());
 
   if (!rewrite_table->is_valid()) {
     Warning("Can not load the remap table, exiting out!");
@@ -178,7 +178,7 @@ reloadUrlRewrite()
   UrlRewrite *newTable;
 
   Debug("url_rewrite", "remap.config updated, reloading...");
-  newTable = new UrlRewrite("proxy.config.url_remap.filename");
+  newTable = NEW(new UrlRewrite());
   if (newTable->is_valid()) {
     eventProcessor.schedule_in(new UR_FreerContinuation(rewrite_table), 
URL_REWRITE_TIMEOUT, ET_TASK);
     Debug("url_rewrite", "remap.config done reloading!");

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/238e3396/proxy/http/remap/UrlRewrite.cc
----------------------------------------------------------------------
diff --git a/proxy/http/remap/UrlRewrite.cc b/proxy/http/remap/UrlRewrite.cc
index 32c6de6..a6f1c23 100644
--- a/proxy/http/remap/UrlRewrite.cc
+++ b/proxy/http/remap/UrlRewrite.cc
@@ -33,6 +33,7 @@
 #include "api/ts/remap.h"
 #include "UrlMappingPathIndex.h"
 #include "RemapConfig.h"
+#include "I_Layout.h"
 
 #include "ink_string.h"
 
@@ -60,9 +61,9 @@ SetHomePageRedirectFlag(url_mapping *new_mapping, URL 
&new_to_url)
 //
 // CTOR / DTOR for the UrlRewrite class.
 //
-UrlRewrite::UrlRewrite(const char *file_var_in)
+UrlRewrite::UrlRewrite()
  : nohost_rules(0), reverse_proxy(0), backdoor_enabled(0),
-   mgmt_autoconf_port(0), default_to_pac(0), default_to_pac_port(0), 
file_var(NULL), ts_name(NULL),
+   mgmt_autoconf_port(0), default_to_pac(0), default_to_pac_port(0), 
ts_name(NULL),
    http_default_redirect_url(NULL), num_rules_forward(0), 
num_rules_reverse(0), num_rules_redirect_permanent(0),
    num_rules_redirect_temporary(0), num_rules_forward_with_recv_port(0), 
_valid(false)
 {
@@ -71,14 +72,10 @@ UrlRewrite::UrlRewrite(const char *file_var_in)
     permanent_redirects.hash_lookup = temporary_redirects.hash_lookup =
     forward_mappings_with_recv_port.hash_lookup = NULL;
 
-  char *config_file = NULL;
-
-  ink_assert(file_var_in != NULL);
-  this->file_var = ats_strdup(file_var_in);
-  config_file_path[0] = '\0';
-
-  REC_ReadConfigStringAlloc(config_file, file_var_in);
+  char * config_file = NULL;
+  char * config_file_path = NULL;
 
+  REC_ReadConfigStringAlloc(config_file, "proxy.config.url_remap.filename");
   if (config_file == NULL) {
     pmgmt->signalManager(MGMT_SIGNAL_CONFIG_ERROR, "Unable to find 
proxy.config.url_remap.filename");
     Warning("%s Unable to locate remap.config.  No remappings in effect", 
modulePrefix);
@@ -108,12 +105,9 @@ UrlRewrite::UrlRewrite(const char *file_var_in)
   REC_ReadConfigInteger(url_remap_mode, 
"proxy.config.url_remap.url_remap_mode");
   REC_ReadConfigInteger(backdoor_enabled, 
"proxy.config.url_remap.handle_backdoor_urls");
 
-  ink_strlcpy(config_file_path, system_config_directory, 
sizeof(config_file_path));
-  ink_strlcat(config_file_path, "/", sizeof(config_file_path));
-  ink_strlcat(config_file_path, config_file, sizeof(config_file_path));
-  ats_free(config_file);
+  config_file_path = Layout::relative_to(Layout::get()->sysconfdir, 
config_file);
 
-  if (0 == this->BuildTable()) {
+  if (0 == this->BuildTable(config_file_path)) {
     _valid = true;
     if (is_debug_tag_set("url_rewrite")) {
       Print();
@@ -121,11 +115,13 @@ UrlRewrite::UrlRewrite(const char *file_var_in)
   } else {
     Warning("something failed during BuildTable() -- check your remap 
plugins!");
   }
+
+  ats_free(config_file_path);
+  ats_free(config_file);
 }
 
 UrlRewrite::~UrlRewrite()
 {
-  ats_free(this->file_var);
   ats_free(this->ts_name);
   ats_free(this->http_default_redirect_url);
 
@@ -676,7 +672,7 @@ UrlRewrite::InsertForwardMapping(mapping_type maptype, 
url_mapping * mapping, co
 
 */
 int
-UrlRewrite::BuildTable()
+UrlRewrite::BuildTable(const char * path)
 {
   BUILD_TABLE_INFO bti;
   url_mapping * new_mapping = NULL;
@@ -699,7 +695,7 @@ UrlRewrite::BuildTable()
   temporary_redirects.hash_lookup = 
ink_hash_table_create(InkHashTableKeyType_String);
   forward_mappings_with_recv_port.hash_lookup = 
ink_hash_table_create(InkHashTableKeyType_String);
 
-  if (!remap_parse_config(config_file_path, this)) {
+  if (!remap_parse_config(path, this)) {
     // XXX handle file reload error
     return 3;
   }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/238e3396/proxy/http/remap/UrlRewrite.h
----------------------------------------------------------------------
diff --git a/proxy/http/remap/UrlRewrite.h b/proxy/http/remap/UrlRewrite.h
index 35788f9..8785a1a 100644
--- a/proxy/http/remap/UrlRewrite.h
+++ b/proxy/http/remap/UrlRewrite.h
@@ -52,9 +52,10 @@ enum mapping_type
 class UrlRewrite
 {
 public:
-  UrlRewrite(const char *file_var_in);
+  UrlRewrite();
   ~UrlRewrite();
-  int BuildTable();
+
+  int BuildTable(const char * path);
   mapping_type Remap_redirect(HTTPHdr * request_header, URL *redirect_url);
   bool ReverseMap(HTTPHdr *response_header);
   void SetReverseFlag(int flag);
@@ -160,8 +161,6 @@ public:
   int default_to_pac;
   int default_to_pac_port;
 
-  char config_file_path[PATH_NAME_MAX];
-  char *file_var;
   char *ts_name;                // Used to send redirects when no host info
 
   char *http_default_redirect_url;      // Used if redirect in "referer" 
filtering was not defined properly

Reply via email to