Index: net/http/http_response_headers.cc |
diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc |
index 6fe8e2fd7ceba8b502a6fbdea1dd1446ec2958a0..1b4ab28e0852b9b8636f5a81d964709b514c8290 100644 |
--- a/net/http/http_response_headers.cc |
+++ b/net/http/http_response_headers.cc |
@@ -359,13 +359,43 @@ void HttpResponseHeaders::RemoveHeader(const std::string& name) { |
MergeWithHeaders(new_raw_headers, to_remove); |
} |
-void HttpResponseHeaders::RemoveHeaderWithValue(const std::string& name, |
- const std::string& value) { |
+void HttpResponseHeaders::RemoveHeaderLine(const std::string& name, |
+ const std::string& values) { |
+ std::string name_lowercase(name); |
+ StringToLowerASCII(&name_lowercase); |
+ |
// Copy up to the null byte. This just copies the status line. |
std::string new_raw_headers(raw_headers_.c_str()); |
new_raw_headers.push_back('\0'); |
- MergeWithHeadersWithValue(new_raw_headers, name, value); |
+ new_raw_headers.reserve(raw_headers_.size()); |
+ |
+ HttpUtil::HeadersIterator headers( |
rvargas (doing something else)
2012/07/19 19:11:02
Shouldn't this code use EnumerateHeaderLines?
battre
2012/07/23 13:31:11
Done.
|
+ raw_headers_.begin() + new_raw_headers.size(), |
+ raw_headers_.end(), |
+ std::string(1, '\0')); |
+ while (headers.GetNext()) { |
+ std::string old_header_name(headers.name()); |
+ std::string old_header_values(headers.values()); |
+ std::string old_header_name_lowercase(name); |
+ StringToLowerASCII(&old_header_name_lowercase); |
+ |
+ if (name_lowercase == old_header_name_lowercase && |
+ values == old_header_values) |
+ continue; |
+ |
+ new_raw_headers.append(old_header_name); |
+ new_raw_headers.push_back(':'); |
+ new_raw_headers.push_back(' '); |
+ new_raw_headers.append(old_header_values); |
+ new_raw_headers.push_back('\0'); |
+ } |
+ new_raw_headers.push_back('\0'); |
+ |
+ // Make this object hold the new data. |
+ raw_headers_.clear(); |
+ parsed_.clear(); |
+ Parse(new_raw_headers); |
} |
void HttpResponseHeaders::AddHeader(const std::string& header) { |