You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by su...@apache.org on 2015/09/04 20:03:47 UTC
trafficserver git commit: [TS-3893]: Make redirect follow settings
overridable.
Repository: trafficserver
Updated Branches:
refs/heads/master f06382e46 -> 0662db401
[TS-3893]: Make redirect follow settings overridable.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0662db40
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0662db40
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0662db40
Branch: refs/heads/master
Commit: 0662db401e45af039872b9118f3947509cb20e96
Parents: f06382e
Author: Sudheer Vinukonda <su...@yahoo-inc.com>
Authored: Fri Sep 4 18:03:19 2015 +0000
Committer: Sudheer Vinukonda <su...@yahoo-inc.com>
Committed: Fri Sep 4 18:03:19 2015 +0000
----------------------------------------------------------------------
lib/ts/apidefs.h.in | 10 +++---
.../experimental/ts_lua/ts_lua_http_config.c | 7 +++-
proxy/InkAPI.cc | 17 ++++++++-
proxy/InkAPITest.cc | 3 +-
proxy/http/HttpConfig.cc | 8 ++---
proxy/http/HttpConfig.h | 36 +++++++++++---------
proxy/http/HttpSM.cc | 10 +++---
7 files changed, 58 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/lib/ts/apidefs.h.in
----------------------------------------------------------------------
diff --git a/lib/ts/apidefs.h.in b/lib/ts/apidefs.h.in
index b6c4bb7..f086b08 100644
--- a/lib/ts/apidefs.h.in
+++ b/lib/ts/apidefs.h.in
@@ -75,10 +75,10 @@ extern "C" {
/* Version info
*/
#define TS_VERSION_STRING "@TS_VERSION_STRING@"
-#define TS_VERSION_NUMBER @TS_VERSION_NUMBER@
-#define TS_VERSION_MAJOR @TS_VERSION_MAJOR@
-#define TS_VERSION_MINOR @TS_VERSION_MINOR@
-#define TS_VERSION_MICRO @TS_VERSION_MICRO@
+#define TS_VERSION_NUMBER @TS_VERSION_NUMBER @
+#define TS_VERSION_MAJOR @TS_VERSION_MAJOR @
+#define TS_VERSION_MINOR @TS_VERSION_MINOR @
+#define TS_VERSION_MICRO @TS_VERSION_MICRO @
#define TS_HTTP_VERSION(a, b) ((((a)&0xFFFF) << 16) | ((b)&0xFFFF))
#define TS_HTTP_MINOR(v) ((v)&0xFFFF)
@@ -676,6 +676,8 @@ typedef enum {
TS_CONFIG_HTTP_CACHE_GENERATION,
TS_CONFIG_BODY_FACTORY_TEMPLATE_BASE,
TS_CONFIG_HTTP_CACHE_OPEN_WRITE_FAIL_ACTION,
+ TS_CONFIG_HTTP_ENABLE_REDIRECTION,
+ TS_CONFIG_HTTP_NUMBER_OF_REDIRECTIONS,
TS_CONFIG_LAST_ENTRY
} TSOverridableConfigKey;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/plugins/experimental/ts_lua/ts_lua_http_config.c
----------------------------------------------------------------------
diff --git a/plugins/experimental/ts_lua/ts_lua_http_config.c b/plugins/experimental/ts_lua/ts_lua_http_config.c
index d3cc003..0f07c26 100644
--- a/plugins/experimental/ts_lua/ts_lua_http_config.c
+++ b/plugins/experimental/ts_lua/ts_lua_http_config.c
@@ -83,6 +83,9 @@ typedef enum {
TS_LUA_CONFIG_NET_SOCK_PACKET_TOS_OUT = TS_CONFIG_NET_SOCK_PACKET_TOS_OUT,
TS_LUA_CONFIG_HTTP_SLOW_LOG_THRESHOLD = TS_CONFIG_HTTP_SLOW_LOG_THRESHOLD,
TS_LUA_CONFIG_BODY_FACTORY_TEMPLATE_BASE = TS_CONFIG_BODY_FACTORY_TEMPLATE_BASE,
+ TS_LUA_CONFIG_OPEN_WRITE_FAIL_ACTION = TS_CONFIG_HTTP_CACHE_OPEN_WRITE_FAIL_ACTION,
+ TS_LUA_CONFIG_HTTP_ENABLE_REDIRECTION = TS_CONFIG_HTTP_ENABLE_REDIRECTION,
+ TS_LUA_CONFIG_HTTP_NUMBER_OF_REDIRECTIONS = TS_CONFIG_HTTP_NUMBER_OF_REDIRECTIONS,
TS_LUA_CONFIG_LAST_ENTRY = TS_CONFIG_LAST_ENTRY,
} TSLuaOverridableConfigKey;
@@ -143,7 +146,9 @@ ts_lua_var_item ts_lua_http_config_vars[] = {
TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_RESPONSE_SERVER_STR), TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_CACHE_HEURISTIC_LM_FACTOR),
TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_CACHE_FUZZ_PROBABILITY), TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_NET_SOCK_PACKET_MARK_OUT),
TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_NET_SOCK_PACKET_TOS_OUT), TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_SLOW_LOG_THRESHOLD),
- TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_BODY_FACTORY_TEMPLATE_BASE), TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_LAST_ENTRY),
+ TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_BODY_FACTORY_TEMPLATE_BASE), TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_OPEN_WRITE_FAIL_ACTION),
+ TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_ENABLE_REDIRECTION), TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_NUMBER_OF_REDIRECTIONS),
+ TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_LAST_ENTRY),
};
ts_lua_var_item ts_lua_http_timeout_vars[] = {
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/proxy/InkAPI.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index 65c5ba0..923ae29 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -7268,7 +7268,7 @@ TSRedirectUrlSet(TSHttpTxn txnp, const char *url, const int url_len)
sm->enable_redirection = true;
// max-out "redirection_tries" to avoid the regular redirection being turned on in
// this transaction improperly. This variable doesn't affect the custom-redirection
- sm->redirection_tries = HttpConfig::m_master.number_of_redirections;
+ sm->redirection_tries = sm->t_state.txn_conf->number_of_redirections;
}
}
@@ -7929,6 +7929,14 @@ _conf_to_memberp(TSOverridableConfigKey conf, OverridableHttpConfigParams *overr
typ = OVERRIDABLE_TYPE_STRING;
ret = &overridableHttpConfig->body_factory_template_base;
break;
+ case TS_CONFIG_HTTP_ENABLE_REDIRECTION:
+ typ = OVERRIDABLE_TYPE_INT;
+ ret = &overridableHttpConfig->redirection_enabled;
+ break;
+ case TS_CONFIG_HTTP_NUMBER_OF_REDIRECTIONS:
+ typ = OVERRIDABLE_TYPE_INT;
+ ret = &overridableHttpConfig->number_of_redirections;
+ break;
// This helps avoiding compiler warnings, yet detect unhandled enum members.
case TS_CONFIG_NULL:
case TS_CONFIG_LAST_ENTRY:
@@ -8197,6 +8205,11 @@ TSHttpTxnConfigFind(const char *name, int length, TSOverridableConfigKey *conf,
case 37:
switch (name[length - 1]) {
+ case 'd':
+ if (!strncmp(name, "proxy.config.http.redirection_enabled", length)) {
+ cnf = TS_CONFIG_HTTP_ENABLE_REDIRECTION;
+ }
+ break;
case 'e':
if (!strncmp(name, "proxy.config.http.cache.max_stale_age", length))
cnf = TS_CONFIG_HTTP_CACHE_MAX_STALE_AGE;
@@ -8284,6 +8297,8 @@ TSHttpTxnConfigFind(const char *name, int length, TSOverridableConfigKey *conf,
cnf = TS_CONFIG_HTTP_CACHE_REQUIRED_HEADERS;
else if (!strncmp(name, "proxy.config.ssl.hsts_include_subdomains", length))
cnf = TS_CONFIG_SSL_HSTS_INCLUDE_SUBDOMAINS;
+ else if (!strncmp(name, "proxy.config.http.number_of_redirections", length))
+ cnf = TS_CONFIG_HTTP_NUMBER_OF_REDIRECTIONS;
break;
case 't':
if (!strncmp(name, "proxy.config.http.keep_alive_enabled_out", length))
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/proxy/InkAPITest.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc
index 5fefdb3..968e990 100644
--- a/proxy/InkAPITest.cc
+++ b/proxy/InkAPITest.cc
@@ -7207,7 +7207,8 @@ const char *SDK_Overridable_Configs[TS_CONFIG_LAST_ENTRY] = {
"proxy.config.http.cache.max_open_read_retries", "proxy.config.http.cache.range.write",
"proxy.config.http.post.check.content_length.enabled", "proxy.config.http.global_user_agent_header",
"proxy.config.http.auth_server_session_private", "proxy.config.http.slow.log.threshold", "proxy.config.http.cache.generation",
- "proxy.config.body_factory.template_base", "proxy.config.http.cache.open_write_fail_action"};
+ "proxy.config.body_factory.template_base", "proxy.config.http.cache.open_write_fail_action",
+ "proxy.config.http.redirection_enabled", "proxy.config.http.number_of_redirections"};
REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS)(RegressionTest *test, int /* atype ATS_UNUSED */, int *pstatus)
{
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/proxy/http/HttpConfig.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index e45739c..96fe448 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -1107,9 +1107,9 @@ HttpConfig::startup()
//# 4. redirection_host_no_port: do not include default port in host header during redirection
//#
//##############################################################################
- HttpEstablishStaticConfigByte(c.redirection_enabled, "proxy.config.http.redirection_enabled");
+ HttpEstablishStaticConfigByte(c.oride.redirection_enabled, "proxy.config.http.redirection_enabled");
HttpEstablishStaticConfigByte(c.redirection_host_no_port, "proxy.config.http.redirect_host_no_port");
- HttpEstablishStaticConfigLongLong(c.number_of_redirections, "proxy.config.http.number_of_redirections");
+ HttpEstablishStaticConfigLongLong(c.oride.number_of_redirections, "proxy.config.http.number_of_redirections");
HttpEstablishStaticConfigLongLong(c.post_copy_size, "proxy.config.http.post_copy_size");
// Local Manager
@@ -1366,9 +1366,9 @@ HttpConfig::reconfigure()
//#
//##############################################################################
- params->redirection_enabled = INT_TO_BOOL(m_master.redirection_enabled);
+ params->oride.redirection_enabled = INT_TO_BOOL(m_master.oride.redirection_enabled);
params->redirection_host_no_port = INT_TO_BOOL(m_master.redirection_host_no_port);
- params->number_of_redirections = m_master.number_of_redirections;
+ params->oride.number_of_redirections = m_master.oride.number_of_redirections;
params->post_copy_size = m_master.post_copy_size;
// Local Manager
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/proxy/http/HttpConfig.h
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
index c963361..62cc4a4 100644
--- a/proxy/http/HttpConfig.h
+++ b/proxy/http/HttpConfig.h
@@ -388,7 +388,8 @@ struct OverridableHttpConfigParams {
// Strings / floats must come last
body_factory_template_base(NULL), body_factory_template_base_len(0), proxy_response_server_string(NULL),
proxy_response_server_string_len(0), global_user_agent_header(NULL), global_user_agent_header_size(0),
- cache_heuristic_lm_factor(0.10), freshness_fuzz_prob(0.005), background_fill_threshold(0.5), cache_open_write_fail_action(0)
+ cache_heuristic_lm_factor(0.10), freshness_fuzz_prob(0.005), background_fill_threshold(0.5), cache_open_write_fail_action(0),
+ redirection_enabled(0), number_of_redirections(1)
{
}
@@ -577,6 +578,19 @@ struct OverridableHttpConfigParams {
MgmtFloat freshness_fuzz_prob;
MgmtFloat background_fill_threshold;
MgmtInt cache_open_write_fail_action;
+
+ //##############################################################################
+ //#
+ //# Redirection
+ //#
+ //# 1. redirection_enabled: if set to 1, redirection is enabled.
+ //# 2. number_of_redirectionse: The maximum number of redirections YTS permits
+ //# 3. post_copy_size: The maximum POST data size YTS permits to copy
+ //#
+ //##############################################################################
+
+ MgmtByte redirection_enabled;
+ MgmtInt number_of_redirections;
};
@@ -719,19 +733,7 @@ public:
// rather it is the time skew which the manager observes
int32_t cluster_time_delta;
- //##############################################################################
- //#
- //# Redirection
- //#
- //# 1. redirection_enabled: if set to 1, redirection is enabled.
- //# 2. number_of_redirectionse: The maximum number of redirections YTS permits
- //# 3. post_copy_size: The maximum POST data size YTS permits to copy
- //#
- //##############################################################################
-
- MgmtByte redirection_enabled;
MgmtByte redirection_host_no_port;
- MgmtInt number_of_redirections;
MgmtInt post_copy_size;
//////////////////////////////////////////////////////////////////
@@ -854,10 +856,10 @@ inline HttpConfigParams::HttpConfigParams()
cache_vary_default_other(NULL), max_cache_open_write_retries(1), cache_enable_default_vary_headers(0), cache_post_method(0),
connect_ports_string(NULL), connect_ports(NULL), push_method_enabled(0), referer_filter_enabled(0), referer_format_redirect(0),
reverse_proxy_enabled(0), url_remap_required(1), record_cop_page(0), errors_log_error_pages(1), enable_http_info(0),
- cluster_time_delta(0), redirection_enabled(0), redirection_host_no_port(1), number_of_redirections(1), post_copy_size(2048),
- ignore_accept_mismatch(0), ignore_accept_language_mismatch(0), ignore_accept_encoding_mismatch(0),
- ignore_accept_charset_mismatch(0), send_100_continue_response(0), disallow_post_100_continue(0), parser_allow_non_http(1),
- max_post_size(0), server_session_sharing_pool(TS_SERVER_SESSION_SHARING_POOL_THREAD), synthetic_port(0)
+ cluster_time_delta(0), redirection_host_no_port(1), post_copy_size(2048), ignore_accept_mismatch(0),
+ ignore_accept_language_mismatch(0), ignore_accept_encoding_mismatch(0), ignore_accept_charset_mismatch(0),
+ send_100_continue_response(0), disallow_post_100_continue(0), parser_allow_non_http(1), max_post_size(0),
+ server_session_sharing_pool(TS_SERVER_SESSION_SHARING_POOL_THREAD), synthetic_port(0)
{
}
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0662db40/proxy/http/HttpSM.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpSM.cc b/proxy/http/HttpSM.cc
index 4fce169..df369d8 100644
--- a/proxy/http/HttpSM.cc
+++ b/proxy/http/HttpSM.cc
@@ -761,9 +761,9 @@ HttpSM::state_read_client_request_header(int event, void *data)
}
// YTS Team, yamsat Plugin
// Setting enable_redirection according to HttpConfig master
- if ((HttpConfig::m_master.number_of_redirections > 0) ||
+ if ((t_state.txn_conf->number_of_redirections > 0) ||
(t_state.method == HTTP_WKSIDX_POST && HttpConfig::m_master.post_copy_size))
- enable_redirection = HttpConfig::m_master.redirection_enabled;
+ enable_redirection = t_state.txn_conf->redirection_enabled;
call_transact_and_set_next_state(HttpTransact::ModifyRequest);
@@ -1851,7 +1851,7 @@ HttpSM::state_read_server_response_header(int event, void *data)
t_state.api_next_action = HttpTransact::SM_ACTION_API_READ_RESPONSE_HDR;
// if exceeded limit deallocate postdata buffers and disable redirection
- if (enable_redirection && (redirection_tries < HttpConfig::m_master.number_of_redirections)) {
+ if (enable_redirection && (redirection_tries < t_state.txn_conf->number_of_redirections)) {
++redirection_tries;
} else {
tunnel.deallocate_redirect_postdata_buffers();
@@ -7379,7 +7379,7 @@ void
HttpSM::do_redirect()
{
DebugSM("http_redirect", "[HttpSM::do_redirect]");
- if (!enable_redirection || redirection_tries >= HttpConfig::m_master.number_of_redirections) {
+ if (!enable_redirection || redirection_tries >= t_state.txn_conf->number_of_redirections) {
tunnel.deallocate_redirect_postdata_buffers();
return;
}
@@ -7682,7 +7682,7 @@ HttpSM::is_private()
inline bool
HttpSM::is_redirect_required()
{
- bool redirect_required = (enable_redirection && (redirection_tries <= HttpConfig::m_master.number_of_redirections));
+ bool redirect_required = (enable_redirection && (redirection_tries <= t_state.txn_conf->number_of_redirections));
DebugSM("http_redirect", "is_redirect_required %u", redirect_required);