Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: net/http/http_cache.cc

Issue 339088: Http cache: Always preserve extra headers when dealing with... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | net/http/http_cache_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_cache.h" 5 #include "net/http/http_cache.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 // If there is more than one validation header, we can't treat this request as 836 // If there is more than one validation header, we can't treat this request as
837 // a cache validation, since we don't know for sure which header the server 837 // a cache validation, since we don't know for sure which header the server
838 // will give us a response for (and they could be contradictory). 838 // will give us a response for (and they could be contradictory).
839 if (external_validation_error) { 839 if (external_validation_error) {
840 LOG(WARNING) << "Multiple or malformed validation headers found."; 840 LOG(WARNING) << "Multiple or malformed validation headers found.";
841 effective_load_flags_ |= LOAD_DISABLE_CACHE; 841 effective_load_flags_ |= LOAD_DISABLE_CACHE;
842 } 842 }
843 843
844 if (range_found && !(effective_load_flags_ & LOAD_DISABLE_CACHE)) { 844 if (range_found && !(effective_load_flags_ & LOAD_DISABLE_CACHE)) {
845 partial_.reset(new PartialData); 845 partial_.reset(new PartialData);
846 if (partial_->Init(request_->extra_headers, new_extra_headers)) { 846 if (partial_->Init(request_->extra_headers)) {
847 // We will be modifying the actual range requested to the server, so 847 // We will be modifying the actual range requested to the server, so
848 // let's remove the header here. 848 // let's remove the header here.
849 custom_request_.reset(new HttpRequestInfo(*request_)); 849 custom_request_.reset(new HttpRequestInfo(*request_));
850 request_ = custom_request_.get(); 850 request_ = custom_request_.get();
851 custom_request_->extra_headers = new_extra_headers; 851 custom_request_->extra_headers = new_extra_headers;
852 partial_->SetHeaders(new_extra_headers);
852 } else { 853 } else {
853 // The range is invalid or we cannot handle it properly. 854 // The range is invalid or we cannot handle it properly.
854 LOG(WARNING) << "Invalid byte range found."; 855 LOG(WARNING) << "Invalid byte range found.";
855 effective_load_flags_ |= LOAD_DISABLE_CACHE; 856 effective_load_flags_ |= LOAD_DISABLE_CACHE;
856 partial_.reset(NULL); 857 partial_.reset(NULL);
857 } 858 }
858 } 859 }
859 } 860 }
860 861
861 bool HttpCache::Transaction::ShouldPassThrough() { 862 bool HttpCache::Transaction::ShouldPassThrough() {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 if (!enable_range_support_) 940 if (!enable_range_support_)
940 return BeginCacheValidation(); 941 return BeginCacheValidation();
941 942
942 bool byte_range_requested = partial_.get() != NULL; 943 bool byte_range_requested = partial_.get() != NULL;
943 if (byte_range_requested) { 944 if (byte_range_requested) {
944 if (OK != entry_->disk_entry->ReadyForSparseIO(entry_ready_callback_)) 945 if (OK != entry_->disk_entry->ReadyForSparseIO(entry_ready_callback_))
945 return ERR_IO_PENDING; 946 return ERR_IO_PENDING;
946 } else { 947 } else {
947 // The request is not for a range, but we have stored just ranges. 948 // The request is not for a range, but we have stored just ranges.
948 partial_.reset(new PartialData()); 949 partial_.reset(new PartialData());
950 partial_->SetHeaders(request_->extra_headers);
949 if (!custom_request_.get()) { 951 if (!custom_request_.get()) {
950 custom_request_.reset(new HttpRequestInfo(*request_)); 952 custom_request_.reset(new HttpRequestInfo(*request_));
951 request_ = custom_request_.get(); 953 request_ = custom_request_.get();
952 } 954 }
953 } 955 }
954 956
955 return ValidateEntryHeadersAndContinue(byte_range_requested); 957 return ValidateEntryHeadersAndContinue(byte_range_requested);
956 } 958 }
957 959
958 int HttpCache::Transaction::ValidateEntryHeadersAndContinue( 960 int HttpCache::Transaction::ValidateEntryHeadersAndContinue(
(...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after
2097 static_cast<net::HttpNetworkLayer*>(network_layer_.get()); 2099 static_cast<net::HttpNetworkLayer*>(network_layer_.get());
2098 HttpNetworkSession* session = network->GetSession(); 2100 HttpNetworkSession* session = network->GetSession();
2099 if (session) { 2101 if (session) {
2100 session->tcp_socket_pool()->CloseIdleSockets(); 2102 session->tcp_socket_pool()->CloseIdleSockets();
2101 } 2103 }
2102 } 2104 }
2103 2105
2104 //----------------------------------------------------------------------------- 2106 //-----------------------------------------------------------------------------
2105 2107
2106 } // namespace net 2108 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/http/http_cache_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698