| Index: net/http/http_response_headers.cc
|
| diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc
|
| index dd0977c3dca046bda530e2e8c254fc796491fe8e..c6f2c1a16d5864c0bf3e14ec2103c8d6d5ecc7cb 100644
|
| --- a/net/http/http_response_headers.cc
|
| +++ b/net/http/http_response_headers.cc
|
| @@ -1103,31 +1103,48 @@ HttpResponseHeaders::GetFreshnessLifetimes(const Time& response_time) const {
|
| return lifetimes;
|
| }
|
|
|
| -// From RFC 2616 section 13.2.3:
|
| +// From RFC 7234 section 4.2.3:
|
| //
|
| -// Summary of age calculation algorithm, when a cache receives a response:
|
| +// The following data is used for the age calculation:
|
| //
|
| -// /*
|
| -// * age_value
|
| -// * is the value of Age: header received by the cache with
|
| -// * this response.
|
| -// * date_value
|
| -// * is the value of the origin server's Date: header
|
| -// * request_time
|
| -// * is the (local) time when the cache made the request
|
| -// * that resulted in this cached response
|
| -// * response_time
|
| -// * is the (local) time when the cache received the
|
| -// * response
|
| -// * now
|
| -// * is the current (local) time
|
| -// */
|
| -// apparent_age = max(0, response_time - date_value);
|
| -// corrected_received_age = max(apparent_age, age_value);
|
| -// response_delay = response_time - request_time;
|
| -// corrected_initial_age = corrected_received_age + response_delay;
|
| -// resident_time = now - response_time;
|
| -// current_age = corrected_initial_age + resident_time;
|
| +// age_value
|
| +//
|
| +// The term "age_value" denotes the value of the Age header field
|
| +// (Section 5.1), in a form appropriate for arithmetic operation; or
|
| +// 0, if not available.
|
| +//
|
| +// date_value
|
| +//
|
| +// The term "date_value" denotes the value of the Date header field,
|
| +// in a form appropriate for arithmetic operations. See Section
|
| +// 7.1.1.2 of [RFC7231] for the definition of the Date header field,
|
| +// and for requirements regarding responses without it.
|
| +//
|
| +// now
|
| +//
|
| +// The term "now" means "the current value of the clock at the host
|
| +// performing the calculation". A host ought to use NTP ([RFC5905])
|
| +// or some similar protocol to synchronize its clocks to Coordinated
|
| +// Universal Time.
|
| +//
|
| +// request_time
|
| +//
|
| +// The current value of the clock at the host at the time the request
|
| +// resulting in the stored response was made.
|
| +//
|
| +// response_time
|
| +//
|
| +// The current value of the clock at the host at the time the
|
| +// response was received.
|
| +//
|
| +// The age is then calculated as
|
| +//
|
| +// apparent_age = max(0, response_time - date_value);
|
| +// response_delay = response_time - request_time;
|
| +// corrected_age_value = age_value + response_delay;
|
| +// corrected_initial_age = max(apparent_age, corrected_age_value);
|
| +// resident_time = now - response_time;
|
| +// current_age = corrected_initial_age + resident_time;
|
| //
|
| TimeDelta HttpResponseHeaders::GetCurrentAge(const Time& request_time,
|
| const Time& response_time,
|
| @@ -1144,9 +1161,9 @@ TimeDelta HttpResponseHeaders::GetCurrentAge(const Time& request_time,
|
| GetAgeValue(&age_value);
|
|
|
| TimeDelta apparent_age = std::max(TimeDelta(), response_time - date_value);
|
| - TimeDelta corrected_received_age = std::max(apparent_age, age_value);
|
| TimeDelta response_delay = response_time - request_time;
|
| - TimeDelta corrected_initial_age = corrected_received_age + response_delay;
|
| + TimeDelta corrected_age_value = age_value + response_delay;
|
| + TimeDelta corrected_initial_age = std::max(apparent_age, corrected_age_value);
|
| TimeDelta resident_time = current_time - response_time;
|
| TimeDelta current_age = corrected_initial_age + resident_time;
|
|
|
|
|