Repository: trafficserver Updated Branches: refs/heads/master 708738051 -> a86f0c5e9
TS-4089: Fixed coverity issues in parent selection. This closes #390. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a86f0c5e Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a86f0c5e Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a86f0c5e Branch: refs/heads/master Commit: a86f0c5e98f9f9dc5da05516869cbd1e521f006f Parents: 7087380 Author: John J. Rushford <john_rushf...@cable.comcast.com> Authored: Sat Dec 19 11:37:37 2015 -0800 Committer: James Peach <jpe...@apache.org> Committed: Sat Dec 19 11:37:37 2015 -0800 ---------------------------------------------------------------------- proxy/ParentConsistentHash.cc | 2 +- proxy/ParentSelection.cc | 32 +++++++++++++++----------------- proxy/ParentSelection.h | 11 ++++++----- 3 files changed, 22 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a86f0c5e/proxy/ParentConsistentHash.cc ---------------------------------------------------------------------- diff --git a/proxy/ParentConsistentHash.cc b/proxy/ParentConsistentHash.cc index ca64ad9..bcfc3ab 100644 --- a/proxy/ParentConsistentHash.cc +++ b/proxy/ParentConsistentHash.cc @@ -155,7 +155,7 @@ ParentConsistentHash::selectParent(const ParentSelectionPolicy *policy, bool fir parentRetry = true; // make sure that the proper state is recorded in the result structure // so that markParentUp() finds the proper record. - result->last_parent = prtmp->idx; + result->last_parent = pRec->idx; result->last_lookup = last_lookup; result->retry = parentRetry; result->r = PARENT_SPECIFIED; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a86f0c5e/proxy/ParentSelection.cc ---------------------------------------------------------------------- diff --git a/proxy/ParentSelection.cc b/proxy/ParentSelection.cc index b71cb70..a7a0c68 100644 --- a/proxy/ParentSelection.cc +++ b/proxy/ParentSelection.cc @@ -88,11 +88,9 @@ ParentSelectionPolicy::ParentSelectionPolicy() } ParentConfigParams::ParentConfigParams(P_table *_parent_table) + : parent_table(_parent_table), DefaultParent(NULL), policy() { char *default_val = NULL; - parent_table = _parent_table; - - policy = new ParentSelectionPolicy(); // Handle default parent PARENT_ReadConfigStringAlloc(default_val, default_var); @@ -117,8 +115,8 @@ ParentConfigParams::findParent(HttpRequestData *rdata, ParentResult *result) ink_assert(result->r == PARENT_UNDEFINED); // Check to see if we are enabled - Debug("parent_select", "policy->ParentEnable: %d", policy->ParentEnable); - if (policy->ParentEnable == 0) { + Debug("parent_select", "policy.ParentEnable: %d", policy.ParentEnable); + if (policy.ParentEnable == 0) { result->r = PARENT_DIRECT; return; } @@ -313,8 +311,8 @@ ParentConfig::print() ParentConfigParams *params = ParentConfig::acquire(); printf("Parent Selection Config\n"); - printf("\tEnabled %d\tRetryTime %d\tParent DNS Only %d\n", params->policy->ParentEnable, params->policy->ParentRetryTime, - params->policy->DNS_ParentOnly); + printf("\tEnabled %d\tRetryTime %d\tParent DNS Only %d\n", params->policy.ParentEnable, params->policy.ParentRetryTime, + params->policy.DNS_ParentOnly); if (params->DefaultParent == NULL) { printf("\tNo Default Parent\n"); } else { @@ -749,19 +747,19 @@ SocksServerConfig::reconfigure() // Handle parent timeout PARENT_ReadConfigInteger(retry_time, "proxy.config.socks.server_retry_time"); - params->policy->ParentRetryTime = retry_time; + params->policy.ParentRetryTime = retry_time; // Handle parent enable // enable is always true for use. We will come here only if socks is enabled - params->policy->ParentEnable = 1; + params->policy.ParentEnable = 1; // Handle the fail threshold PARENT_ReadConfigInteger(fail_threshold, "proxy.config.socks.server_fail_threshold"); - params->policy->FailThreshold = fail_threshold; + params->policy.FailThreshold = fail_threshold; // Handle dns parent only // PARENT_ReadConfigInteger(dns_parent_only, dns_parent_only_var); - params->policy->DNS_ParentOnly = 0; + params->policy.DNS_ParentOnly = 0; m_id = configProcessor.set(m_id, params); @@ -776,8 +774,8 @@ SocksServerConfig::print() ParentConfigParams *params = SocksServerConfig::acquire(); printf("Parent Selection Config for Socks Server\n"); - printf("\tEnabled %d\tRetryTime %d\tParent DNS Only %d\n", params->policy->ParentEnable, params->policy->ParentRetryTime, - params->policy->DNS_ParentOnly); + printf("\tEnabled %d\tRetryTime %d\tParent DNS Only %d\n", params->policy.ParentEnable, params->policy.ParentRetryTime, + params->policy.DNS_ParentOnly); if (params->DefaultParent == NULL) { printf("\tNo Default Parent\n"); } else { @@ -836,9 +834,9 @@ EXCLUSIVE_REGRESSION_TEST(PARENTSELECTION)(RegressionTest * /* t ATS_UNUSED */, ALLOW_HOST_TABLE | ALLOW_REGEX_TABLE | ALLOW_URL_TABLE | ALLOW_IP_TABLE | DONT_BUILD_TABLE); \ ParentTable->BuildTableFromString(tbl); \ params = new ParentConfigParams(ParentTable); \ - params->policy->FailThreshold = 1; \ - params->policy->ParentEnable = true; \ - params->policy->ParentRetryTime = 5; + params->policy.FailThreshold = 1; \ + params->policy.ParentEnable = true; \ + params->policy.ParentRetryTime = 5; HttpRequestData *request = NULL; ParentResult *result = NULL; #define REINIT \ @@ -1024,7 +1022,7 @@ EXCLUSIVE_REGRESSION_TEST(PARENTSELECTION)(RegressionTest * /* t ATS_UNUSED */, } // sleep(5); // parents should come back up; they don't - sleep(params->policy->ParentRetryTime + 1); + sleep(params->policy.ParentRetryTime + 1); // Fix: The following tests failed because // br() should set xact_start correctly instead of 0. http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a86f0c5e/proxy/ParentSelection.h ---------------------------------------------------------------------- diff --git a/proxy/ParentSelection.h b/proxy/ParentSelection.h index f5508b8..33adc0a 100644 --- a/proxy/ParentSelection.h +++ b/proxy/ParentSelection.h @@ -195,10 +195,7 @@ public: class ParentConfigParams : public ConfigInfo { public: - P_table *parent_table; - ParentRecord *DefaultParent; explicit ParentConfigParams(P_table *_parent_table); - ParentSelectionPolicy *policy; ~ParentConfigParams(){}; bool apiParentExists(HttpRequestData *rdata); @@ -211,14 +208,14 @@ public: selectParent(bool firstCall, ParentResult *result, RequestData *rdata) { ink_release_assert(result->rec->selection_strategy != NULL); - return result->rec->selection_strategy->selectParent(policy, firstCall, result, rdata); + return result->rec->selection_strategy->selectParent(&policy, firstCall, result, rdata); } void markParentDown(ParentResult *result) { ink_release_assert(result->rec->selection_strategy != NULL); - result->rec->selection_strategy->markParentDown(policy, result); + result->rec->selection_strategy->markParentDown(&policy, result); } uint32_t @@ -234,6 +231,10 @@ public: ink_release_assert(result != NULL); result->rec->selection_strategy->markParentUp(result); } + + P_table *parent_table; + ParentRecord *DefaultParent; + ParentSelectionPolicy policy; }; class HttpRequestData;