Updated Branches: refs/heads/4.1.x cdf37be6d -> a90c877e8
TS-2384: Regression in key-lookup code between 4.0.x and 4.1.x Revert "TS-302: Fix HTTPCacheAlt to use INK_MD5 directly instead of arrays of uin32_t. Simplify methods because of this." This reverts commit c40c601c9167c4937f972daf7825821e527a5f67. This breaks cache keys on certain builds. It's not clear why, but we should remove this from 4.1.x so that we can have a stable release. Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/a90c877e Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/a90c877e Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/a90c877e Branch: refs/heads/4.1.x Commit: a90c877e8eb76d92f9ddfdf510a90c32a4ab6478 Parents: cdf37be Author: Phil Sorber <[email protected]> Authored: Sun Nov 24 16:50:03 2013 -0700 Committer: Phil Sorber <[email protected]> Committed: Sun Nov 24 17:02:52 2013 -0700 ---------------------------------------------------------------------- CHANGES | 2 ++ proxy/hdrs/HTTP.cc | 17 ++++++++++++++--- proxy/hdrs/HTTP.h | 44 ++++++++++++++++++++++++++++++++++++-------- 3 files changed, 52 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a90c877e/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 9a5a0c5..e2f9ac9 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,8 @@ Changes with Apache Traffic Server 4.1.1 + *) [TS-2384] Fix regression in key-lookup code between 4.0.x and 4.1.x + *) [TS-2340] Fix TextLogObject log rolling. Author: bettydramit <[email protected]> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a90c877e/proxy/hdrs/HTTP.cc ---------------------------------------------------------------------- diff --git a/proxy/hdrs/HTTP.cc b/proxy/hdrs/HTTP.cc index 18c6813..6ecaf35 100644 --- a/proxy/hdrs/HTTP.cc +++ b/proxy/hdrs/HTTP.cc @@ -1693,11 +1693,18 @@ ClassAllocator<HTTPCacheAlt> httpCacheAltAllocator("httpCacheAltAllocator"); HTTPCacheAlt::HTTPCacheAlt(): m_magic(CACHE_ALT_MAGIC_ALIVE), m_writeable(1), m_unmarshal_len(-1), -m_id(-1), m_rid(-1), m_object_key(), m_object_size(0), m_request_hdr(), +m_id(-1), m_rid(-1), m_request_hdr(), m_response_hdr(), m_request_sent_time(0), m_response_received_time(0), m_frag_offset_count(0), m_frag_offsets(0), m_ext_buffer(NULL) { + + m_object_key[0] = 0; + m_object_key[1] = 0; + m_object_key[2] = 0; + m_object_key[3] = 0; + m_object_size[0] = 0; + m_object_size[1] = 0; } void @@ -1726,8 +1733,12 @@ HTTPCacheAlt::copy(HTTPCacheAlt *to_copy) m_unmarshal_len = to_copy->m_unmarshal_len; m_id = to_copy->m_id; m_rid = to_copy->m_rid; - m_object_key = to_copy->m_object_key; - m_object_size = to_copy->m_object_size; + m_object_key[0] = to_copy->m_object_key[0]; + m_object_key[1] = to_copy->m_object_key[1]; + m_object_key[2] = to_copy->m_object_key[2]; + m_object_key[3] = to_copy->m_object_key[3]; + m_object_size[0] = to_copy->m_object_size[0]; + m_object_size[1] = to_copy->m_object_size[1]; if (to_copy->m_request_hdr.valid()) { m_request_hdr.copy(&to_copy->m_request_hdr); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/a90c877e/proxy/hdrs/HTTP.h ---------------------------------------------------------------------- diff --git a/proxy/hdrs/HTTP.h b/proxy/hdrs/HTTP.h index 91b684d..45a59bf 100644 --- a/proxy/hdrs/HTTP.h +++ b/proxy/hdrs/HTTP.h @@ -1307,8 +1307,8 @@ struct HTTPCacheAlt int32_t m_id; int32_t m_rid; - INK_MD5 m_object_key; - int64_t m_object_size; + int32_t m_object_key[4]; + int32_t m_object_size[2]; HTTPHdr m_request_hdr; HTTPHdr m_response_hdr; @@ -1447,37 +1447,65 @@ HTTPInfo::operator =(const HTTPInfo & m) inline INK_MD5 HTTPInfo::object_key_get() { - return m_alt->m_object_key; + INK_MD5 val; + int32_t* pi = reinterpret_cast<int32_t*>(&val); + + pi[0] = m_alt->m_object_key[0]; + pi[1] = m_alt->m_object_key[1]; + pi[2] = m_alt->m_object_key[2]; + pi[3] = m_alt->m_object_key[3]; + + return val; } inline void HTTPInfo::object_key_get(INK_MD5 *md5) { - *md5 = m_alt->m_object_key; + int32_t* pi = reinterpret_cast<int32_t*>(md5); + pi[0] = m_alt->m_object_key[0]; + pi[1] = m_alt->m_object_key[1]; + pi[2] = m_alt->m_object_key[2]; + pi[3] = m_alt->m_object_key[3]; } inline bool HTTPInfo::compare_object_key(const INK_MD5 *md5) { - return m_alt->m_object_key == *md5; + int32_t const* pi = reinterpret_cast<int32_t const*>(md5); + return ((m_alt->m_object_key[0] == pi[0]) && + (m_alt->m_object_key[1] == pi[1]) && + (m_alt->m_object_key[2] == pi[2]) && + (m_alt->m_object_key[3] == pi[3]) + ); } inline int64_t HTTPInfo::object_size_get() { - return m_alt->m_object_size; + int64_t val; + int32_t* pi = reinterpret_cast<int32_t*>(&val); + + pi[0] = m_alt->m_object_size[0]; + pi[1] = m_alt->m_object_size[1]; + return val; } inline void HTTPInfo::object_key_set(INK_MD5 & md5) { - m_alt->m_object_key = md5; + int32_t* pi = reinterpret_cast<int32_t*>(&md5); + m_alt->m_object_key[0] = pi[0]; + m_alt->m_object_key[1] = pi[1]; + m_alt->m_object_key[2] = pi[2]; + m_alt->m_object_key[3] = pi[3]; } inline void HTTPInfo::object_size_set(int64_t size) { - m_alt->m_object_size = size; + int32_t* pi = reinterpret_cast<int32_t*>(&size); + m_alt->m_object_size[0] = pi[0]; + m_alt->m_object_size[1] = pi[1]; } inline HTTPInfo::FragOffset*
