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    //
   //////////////////////