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
