| Index: net/url_request/url_request.cc
|
| diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
|
| index bf031c8bd72b64d48dc6ed023c994193d2700247..b984fbd88cdda38b6fc724d4f92d935f41da2b14 100644
|
| --- a/net/url_request/url_request.cc
|
| +++ b/net/url_request/url_request.cc
|
| @@ -919,20 +919,25 @@ void URLRequest::SetPriority(RequestPriority priority) {
|
|
|
| bool URLRequest::GetHSTSRedirect(GURL* redirect_url) const {
|
| const GURL& url = this->url();
|
| - if (!url.SchemeIs("http"))
|
| + if (redirect_url && !url.SchemeIs("http"))
|
| return false;
|
| TransportSecurityState::DomainState domain_state;
|
| + bool allow_dynamic_state =
|
| + !(load_flags_ & LOAD_DO_NOT_SEND_COOKIES) && CanGetCookies(CookieList());
|
| if (context()->transport_security_state() &&
|
| context()->transport_security_state()->GetDomainState(
|
| url.host(),
|
| SSLConfigService::IsSNIAvailable(context()->ssl_config_service()),
|
| + allow_dynamic_state,
|
| &domain_state) &&
|
| domain_state.ShouldUpgradeToSSL()) {
|
| - url_canon::Replacements<char> replacements;
|
| - const char kNewScheme[] = "https";
|
| - replacements.SetScheme(kNewScheme,
|
| - url_parse::Component(0, strlen(kNewScheme)));
|
| - *redirect_url = url.ReplaceComponents(replacements);
|
| + if (redirect_url) {
|
| + url_canon::Replacements<char> replacements;
|
| + const char kNewScheme[] = "https";
|
| + replacements.SetScheme(kNewScheme,
|
| + url_parse::Component(0, strlen(kNewScheme)));
|
| + *redirect_url = url.ReplaceComponents(replacements);
|
| + }
|
| return true;
|
| }
|
| return false;
|
|
|