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 2012/05/08 22:00:26 UTC
[1/2] git commit: TS-1181 Make the overridable configs work properly
with "byte" configs.
Updated Branches:
refs/heads/master 9b72286ed -> 3cf51ee61
TS-1181 Make the overridable configs work properly with "byte" configs.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f6fefd4c
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f6fefd4c
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f6fefd4c
Branch: refs/heads/master
Commit: f6fefd4c9ace2a2b6f9eb9c9a8da7e2f995eb7e6
Parents: 9b72286
Author: Leif Hedstrom <zw...@apache.org>
Authored: Mon May 7 20:30:36 2012 -0600
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Tue May 8 13:47:57 2012 -0600
----------------------------------------------------------------------
proxy/InkAPI.cc | 84 +++++++++++++++++++++++++++--------------
proxy/InkAPIInternal.h | 12 +++++-
proxy/InkAPITest.cc | 6 +--
proxy/http/HttpConfig.cc | 11 ++---
proxy/http/HttpConfig.h | 19 +++++----
5 files changed, 84 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f6fefd4c/proxy/InkAPI.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index d0ffa49..f6e942e 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -7475,21 +7475,10 @@ TSSkipRemappingSet(TSHttpTxn txnp, int flag)
}
// Little helper function to find the struct member
-
-typedef enum
- {
- OVERRIDABLE_TYPE_NULL = 0,
- OVERRIDABLE_TYPE_INT,
- OVERRIDABLE_TYPE_FLOAT,
- OVERRIDABLE_TYPE_STRING,
- OVERRIDABLE_TYPE_BYTE
- } OverridableDataType;
-
void*
_conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *typep)
{
- // *((MgmtInt*)(&(sm->t_state.txn_conf) + conf*sizeof(MgmtInt))) = value;
- OverridableDataType typ = OVERRIDABLE_TYPE_INT;
+ OverridableDataType typ = OVERRIDABLE_TYPE_BYTE;
void* ret = NULL;
switch (conf) {
@@ -7503,6 +7492,7 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t
ret = &sm->t_state.txn_conf->negative_caching_enabled;
break;
case TS_CONFIG_HTTP_NEGATIVE_CACHING_LIFETIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->negative_caching_lifetime;
break;
case TS_CONFIG_HTTP_CACHE_WHEN_TO_REVALIDATE:
@@ -7521,20 +7511,25 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t
ret = &sm->t_state.txn_conf->share_server_sessions;
break;
case TS_CONFIG_NET_SOCK_RECV_BUFFER_SIZE_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->sock_recv_buffer_size_out;
break;
case TS_CONFIG_NET_SOCK_SEND_BUFFER_SIZE_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->sock_send_buffer_size_out;
break;
case TS_CONFIG_NET_SOCK_OPTION_FLAG_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->sock_option_flag_out;
break;
case TS_CONFIG_NET_SOCK_PACKET_MARK_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->sock_packet_mark_out;
break;
case TS_CONFIG_NET_SOCK_PACKET_TOS_OUT:
- ret = &sm->t_state.txn_conf->sock_packet_tos_out;
- break;
+ typ = OVERRIDABLE_TYPE_INT;
+ ret = &sm->t_state.txn_conf->sock_packet_tos_out;
+ break;
case TS_CONFIG_HTTP_FORWARD_PROXY_AUTH_TO_PARENT:
ret = &sm->t_state.txn_conf->fwd_proxy_auth_to_parent;
break;
@@ -7563,6 +7558,7 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t
ret = &sm->t_state.txn_conf->insert_squid_x_forwarded_for;
break;
case TS_CONFIG_HTTP_SERVER_TCP_INIT_CWND:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->server_tcp_init_cwnd;
break;
case TS_CONFIG_HTTP_SEND_HTTP11_REQUESTS:
@@ -7602,63 +7598,83 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t
ret = &sm->t_state.txn_conf->insert_response_via_string;
break;
case TS_CONFIG_HTTP_CACHE_HEURISTIC_MIN_LIFETIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->cache_heuristic_min_lifetime;
break;
case TS_CONFIG_HTTP_CACHE_HEURISTIC_MAX_LIFETIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->cache_heuristic_max_lifetime;
break;
case TS_CONFIG_HTTP_CACHE_GUARANTEED_MIN_LIFETIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->cache_guaranteed_min_lifetime;
break;
case TS_CONFIG_HTTP_CACHE_GUARANTEED_MAX_LIFETIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->cache_guaranteed_max_lifetime;
break;
case TS_CONFIG_HTTP_CACHE_MAX_STALE_AGE:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->cache_max_stale_age;
break;
case TS_CONFIG_HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_IN:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->keep_alive_no_activity_timeout_in;
break;
case TS_CONFIG_HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->keep_alive_no_activity_timeout_out;
break;
case TS_CONFIG_HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_IN:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->transaction_no_activity_timeout_in;
break;
case TS_CONFIG_HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->transaction_no_activity_timeout_out;
break;
case TS_CONFIG_HTTP_TRANSACTION_ACTIVE_TIMEOUT_OUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->transaction_active_timeout_out;
break;
case TS_CONFIG_HTTP_ORIGIN_MAX_CONNECTIONS:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->origin_max_connections;
break;
case TS_CONFIG_HTTP_CONNECT_ATTEMPTS_MAX_RETRIES:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->connect_attempts_max_retries;
break;
case TS_CONFIG_HTTP_CONNECT_ATTEMPTS_MAX_RETRIES_DEAD_SERVER:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->connect_attempts_max_retries_dead_server;
break;
case TS_CONFIG_HTTP_CONNECT_ATTEMPTS_RR_RETRIES:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->connect_attempts_rr_retries;
break;
case TS_CONFIG_HTTP_CONNECT_ATTEMPTS_TIMEOUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->connect_attempts_timeout;
break;
case TS_CONFIG_HTTP_POST_CONNECT_ATTEMPTS_TIMEOUT:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->post_connect_attempts_timeout;
break;
case TS_CONFIG_HTTP_DOWN_SERVER_CACHE_TIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->down_server_timeout;
break;
case TS_CONFIG_HTTP_DOWN_SERVER_ABORT_THRESHOLD:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->client_abort_threshold;
break;
case TS_CONFIG_HTTP_CACHE_FUZZ_TIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->freshness_fuzz_time;
break;
case TS_CONFIG_HTTP_CACHE_FUZZ_MIN_TIME:
+ typ = OVERRIDABLE_TYPE_INT;
ret = &sm->t_state.txn_conf->freshness_fuzz_min_time;
break;
case TS_CONFIG_HTTP_DOC_IN_CACHE_SKIP_DNS:
@@ -7673,7 +7689,7 @@ _conf_to_memberp(TSOverridableConfigKey conf, HttpSM* sm, OverridableDataType *t
typ = OVERRIDABLE_TYPE_FLOAT;
ret = &sm->t_state.txn_conf->freshness_fuzz_prob;
break;
- // These are "special", since they still need more attention, so fall through.
+
case TS_CONFIG_HTTP_RESPONSE_SERVER_STR:
typ = OVERRIDABLE_TYPE_STRING;
ret = &sm->t_state.txn_conf->proxy_response_server_string;
@@ -7700,21 +7716,27 @@ TSHttpTxnConfigIntSet(TSHttpTxn txnp, TSOverridableConfigKey conf, TSMgmtInt val
sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS);
HttpSM *s = reinterpret_cast<HttpSM*>(txnp);
+ OverridableDataType type;
s->t_state.setup_per_txn_configs();
- OverridableDataType type;
- TSMgmtInt *dest = static_cast<TSMgmtInt*>(_conf_to_memberp(conf, s, &type));
+ void *dest = _conf_to_memberp(conf, s, &type);
- if (type != OVERRIDABLE_TYPE_INT)
+ if (!dest)
return TS_ERROR;
- if (dest) {
- *dest = value;
- return TS_SUCCESS;
+ switch (type) {
+ case OVERRIDABLE_TYPE_INT:
+ *(static_cast<TSMgmtInt*>(dest)) = value;
+ break;
+ case OVERRIDABLE_TYPE_BYTE:
+ *(static_cast<TSMgmtByte*>(dest)) = static_cast<TSMgmtByte>(value);
+ break;
+ default:
+ return TS_ERROR;
}
- return TS_ERROR;
+ return TS_SUCCESS;
}
TSReturnCode
@@ -7724,17 +7746,23 @@ TSHttpTxnConfigIntGet(TSHttpTxn txnp, TSOverridableConfigKey conf, TSMgmtInt *va
sdk_assert(sdk_sanity_check_null_ptr((void*)value) == TS_SUCCESS);
OverridableDataType type;
- TSMgmtInt* dest = static_cast<TSMgmtInt*>(_conf_to_memberp(conf, (HttpSM*)txnp, &type));
+ void* src = _conf_to_memberp(conf, (HttpSM*)txnp, &type);
- if (type != OVERRIDABLE_TYPE_INT)
+ if (!src)
return TS_ERROR;
- if (dest) {
- *value = *dest;
- return TS_SUCCESS;
+ switch (type) {
+ case OVERRIDABLE_TYPE_INT:
+ *value = *(static_cast<TSMgmtInt*>(src));
+ break;
+ case OVERRIDABLE_TYPE_BYTE:
+ *value = *(static_cast<TSMgmtByte*>(src));
+ break;
+ default:
+ return TS_ERROR;
}
- return TS_ERROR;
+ return TS_SUCCESS;
}
TSReturnCode
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f6fefd4c/proxy/InkAPIInternal.h
----------------------------------------------------------------------
diff --git a/proxy/InkAPIInternal.h b/proxy/InkAPIInternal.h
index f05a2d3..4aabd1b 100644
--- a/proxy/InkAPIInternal.h
+++ b/proxy/InkAPIInternal.h
@@ -38,6 +38,16 @@
#include "I_Tasks.h"
+typedef enum
+ {
+ OVERRIDABLE_TYPE_NULL = 0,
+ OVERRIDABLE_TYPE_INT,
+ OVERRIDABLE_TYPE_FLOAT,
+ OVERRIDABLE_TYPE_STRING,
+ OVERRIDABLE_TYPE_BYTE
+ } OverridableDataType;
+typedef int8_t TSMgmtByte; // Not for external use
+
/* ****** Cache Structure ********* */
// For memory corruption detection
@@ -106,8 +116,6 @@ struct INKConfigImpl:public ConfigInfo
}
};
-
-
struct HttpAltInfo
{
HTTPHdr m_client_req;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f6fefd4c/proxy/InkAPITest.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc
index 1a65983..1e197d1 100644
--- a/proxy/InkAPITest.cc
+++ b/proxy/InkAPITest.cc
@@ -7594,7 +7594,7 @@ REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS) (RegressionTest * test, int atype,
HttpSM* s = HttpSM::allocate();
bool success = true;
TSHttpTxn txnp = reinterpret_cast<TSHttpTxn>(s);
- TSMgmtInt ival;
+ TSMgmtInt ival = 0;
TSMgmtFloat fval;
const char *sval;
const char *test_string = "The Apache Traffic Server";
@@ -7612,7 +7612,7 @@ REGRESSION_TEST(SDK_API_OVERRIDABLE_CONFIGS) (RegressionTest * test, int atype,
continue;
}
} else {
- SDK_RPRINT(test, "TSHttpTxnConfigFind", "TestCase1", TC_FAIL, "Called returned unexpected TS_ERROR");
+ SDK_RPRINT(test, "TSHttpTxnConfigFind", "TestCase1", TC_FAIL, "Call returned unexpected TS_ERROR");
success = false;
continue;
}
@@ -7725,8 +7725,6 @@ REGRESSION_TEST(SDK_API_ENCODING) (RegressionTest * test, int atype, int *pstatu
SDK_RPRINT(test, "TSBase64Decode", "TestCase1", TC_FAIL, "Failed on %s", url_base64);
success = false;
} else {
- printf("LENGTH is %d vs %d\n", (int)length, (int)strlen(url));
- printf("BUF is %s vs %s\n", buf, url);
if (length != strlen(url) || strcmp(buf, url)) {
SDK_RPRINT(test, "TSBase64Decode", "TestCase1", TC_FAIL, "Failed on %s != %s", buf, url);
success = false;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f6fefd4c/proxy/http/HttpConfig.cc
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.cc b/proxy/http/HttpConfig.cc
index ecf36ec..63115c2 100644
--- a/proxy/http/HttpConfig.cc
+++ b/proxy/http/HttpConfig.cc
@@ -1400,7 +1400,6 @@ void
HttpConfig::reconfigure()
{
#define INT_TO_BOOL(i) ((i) ? 1 : 0);
-#define INT_TO_BYTE(i) (MgmtByte)(i);
HttpConfigParams *params;
@@ -1542,7 +1541,7 @@ HttpConfig::reconfigure()
params->oride.cache_ignore_client_cc_max_age = INT_TO_BOOL(m_master.oride.cache_ignore_client_cc_max_age);
params->oride.cache_ims_on_client_no_cache = INT_TO_BOOL(m_master.oride.cache_ims_on_client_no_cache);
params->oride.cache_ignore_server_no_cache = INT_TO_BOOL(m_master.oride.cache_ignore_server_no_cache);
- params->oride.cache_responses_to_cookies = INT_TO_BYTE(m_master.oride.cache_responses_to_cookies);
+ params->oride.cache_responses_to_cookies = m_master.oride.cache_responses_to_cookies;
params->oride.cache_ignore_auth = INT_TO_BOOL(m_master.oride.cache_ignore_auth);
params->oride.cache_urls_that_look_dynamic = INT_TO_BOOL(m_master.oride.cache_urls_that_look_dynamic);
params->cache_enable_default_vary_headers = INT_TO_BOOL(m_master.cache_enable_default_vary_headers);
@@ -1552,10 +1551,10 @@ HttpConfig::reconfigure()
params->ignore_accept_encoding_mismatch = INT_TO_BOOL(m_master.ignore_accept_encoding_mismatch);
params->ignore_accept_charset_mismatch = INT_TO_BOOL(m_master.ignore_accept_charset_mismatch);
- params->oride.cache_when_to_revalidate = INT_TO_BYTE(m_master.oride.cache_when_to_revalidate);
- params->cache_when_to_add_no_cache_to_msie_requests = INT_TO_BYTE(m_master.cache_when_to_add_no_cache_to_msie_requests);
+ params->oride.cache_when_to_revalidate = m_master.oride.cache_when_to_revalidate;
+ params->cache_when_to_add_no_cache_to_msie_requests = m_master.cache_when_to_add_no_cache_to_msie_requests;
- params->oride.cache_required_headers = INT_TO_BYTE(m_master.oride.cache_required_headers);
+ params->oride.cache_required_headers = m_master.oride.cache_required_headers;
params->cache_range_lookup = INT_TO_BOOL(m_master.cache_range_lookup);
params->connect_ports_string = ats_strdup(m_master.connect_ports_string);
@@ -1571,7 +1570,7 @@ HttpConfig::reconfigure()
params->slow_log_threshold = m_master.slow_log_threshold;
params->record_cop_page = INT_TO_BOOL(m_master.record_cop_page);
params->record_tcp_mem_hit = INT_TO_BOOL(m_master.record_tcp_mem_hit);
- params->oride.send_http11_requests = INT_TO_BYTE(m_master.oride.send_http11_requests);
+ params->oride.send_http11_requests = m_master.oride.send_http11_requests;
params->oride.doc_in_cache_skip_dns = INT_TO_BOOL(m_master.oride.doc_in_cache_skip_dns);
params->default_buffer_size_index = m_master.default_buffer_size_index;
params->default_buffer_water_mark = m_master.default_buffer_water_mark;
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f6fefd4c/proxy/http/HttpConfig.h
----------------------------------------------------------------------
diff --git a/proxy/http/HttpConfig.h b/proxy/http/HttpConfig.h
index fee7c61..a480da3 100644
--- a/proxy/http/HttpConfig.h
+++ b/proxy/http/HttpConfig.h
@@ -403,14 +403,14 @@ struct OverridableHttpConfigParams {
: maintain_pristine_host_hdr(0), chunking_enabled(0),
negative_caching_enabled(0), negative_caching_lifetime(0), cache_when_to_revalidate(0),
keep_alive_enabled_in(0), keep_alive_enabled_out(0), keep_alive_post_out(0),
- server_tcp_init_cwnd(0), share_server_sessions(0),
+ share_server_sessions(0),
sock_recv_buffer_size_out(0), sock_send_buffer_size_out(0), sock_option_flag_out(0),
- sock_packet_mark_out(0), sock_packet_tos_out(0),
- fwd_proxy_auth_to_parent(0),
+ sock_packet_mark_out(0), sock_packet_tos_out(0), fwd_proxy_auth_to_parent(0),
anonymize_remove_from(0), anonymize_remove_referer(0), anonymize_remove_user_agent(0),
anonymize_remove_cookie(0), anonymize_remove_client_ip(0), anonymize_insert_client_ip(1),
proxy_response_server_enabled(0),
- insert_squid_x_forwarded_for(0), send_http11_requests(3), // SEND_HTTP11_IF_REQUEST_11_AND_HOSTDB
+ insert_squid_x_forwarded_for(0), server_tcp_init_cwnd(0),
+ send_http11_requests(3), // SEND_HTTP11_IF_REQUEST_11_AND_HOSTDB
cache_http(0), cache_ignore_client_no_cache(0), cache_ignore_client_cc_max_age(1),
cache_ims_on_client_no_cache(0), cache_ignore_server_no_cache(0), cache_responses_to_cookies(0),
cache_ignore_auth(0), cache_urls_that_look_dynamic(0), cache_required_headers(0), // CACHE_REQUIRED_HEADERS_NONE
@@ -433,10 +433,9 @@ struct OverridableHttpConfigParams {
// Strings / floats must come last
proxy_response_server_string(NULL), proxy_response_server_string_len(0),
cache_heuristic_lm_factor(0.0), freshness_fuzz_prob(0.0)
- {
- }
+ { }
- // IMPORTANT: All MgmtInt configs should come before any other string / float
+ // IMPORTANT: All MgmtInt/Byte configs should come before any other string / float
// configs!!!
// The first three configs used to be @-parameters in remap.config
@@ -454,7 +453,6 @@ struct OverridableHttpConfigParams {
MgmtByte keep_alive_enabled_in;
MgmtByte keep_alive_enabled_out;
MgmtByte keep_alive_post_out; // share server sessions for post
- MgmtInt server_tcp_init_cwnd;
MgmtByte share_server_sessions;
@@ -486,6 +484,11 @@ struct OverridableHttpConfigParams {
/////////////////////
MgmtByte insert_squid_x_forwarded_for;
+ ///////////////////////////////
+ // Initial congestion window //
+ ///////////////////////////////
+ MgmtInt server_tcp_init_cwnd;
+
//////////////////////
// Version Hell //
//////////////////////