| Index: net/spdy/spdy_header_indexing.cc
|
| diff --git a/net/spdy/spdy_header_indexing.cc b/net/spdy/spdy_header_indexing.cc
|
| deleted file mode 100644
|
| index 881ba86754406fe885fc2a28e30faacbaffc62db..0000000000000000000000000000000000000000
|
| --- a/net/spdy/spdy_header_indexing.cc
|
| +++ /dev/null
|
| @@ -1,176 +0,0 @@
|
| -// Copyright (c) 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "net/spdy/spdy_header_indexing.h"
|
| -
|
| -#include "net/spdy/spdy_bug_tracker.h"
|
| -
|
| -namespace net {
|
| -
|
| -int32_t FLAGS_gfe_spdy_indexing_set_bound = 50;
|
| -int32_t FLAGS_gfe_spdy_tracking_set_bound = 1000;
|
| -
|
| -HeaderIndexing::HeaderIndexing()
|
| - : indexing_set_bound_(FLAGS_gfe_spdy_indexing_set_bound),
|
| - tracking_set_bound_(FLAGS_gfe_spdy_tracking_set_bound) {
|
| - SPDY_BUG_IF(indexing_set_bound_ >= tracking_set_bound_)
|
| - << "Tracking set should be larger than indexing set";
|
| -}
|
| -
|
| -HeaderIndexing::~HeaderIndexing() {}
|
| -
|
| -void HeaderIndexing::CreateInitIndexingHeaders() {
|
| - const SpdyString initial_fields[] = {
|
| - // Estimated top 100 fields.
|
| - "alt-svc",
|
| - "date",
|
| - "cache-control",
|
| - "content-type",
|
| - "expires",
|
| - "location",
|
| - "x-xss-protection",
|
| - "p3p",
|
| - "set-cookie",
|
| - "alternate-protocol",
|
| - "last-modified",
|
| - "server",
|
| - "x-snapchat-request-id",
|
| - "content-disposition",
|
| - "strict-transport-security",
|
| - "x-content-type-options",
|
| - "content-security-policy",
|
| - "x-frame-options",
|
| - "x-snapchat-notice",
|
| - "pragma",
|
| - ":status",
|
| - "content-length",
|
| - "etag",
|
| - "x-cloud-trace-context",
|
| - "vary",
|
| - "access-control-expose-headers",
|
| - "content-encoding",
|
| - "access-control-allow-origin",
|
| - "age",
|
| - ":protocol",
|
| - "via",
|
| - "x-robots-tag",
|
| - "link",
|
| - "access-control-allow-headers",
|
| - "x-google-session-info",
|
| - "x-google-backends",
|
| - "x-google-gfe-request-trace",
|
| - "warning",
|
| - "x-guploader-uploadid",
|
| - "x-cup-server-proof",
|
| - "timing-allow-origin",
|
| - "x-google-trace",
|
| - "access-control-allow-credentials",
|
| - "google-delayed-impression",
|
| - "google-creative-id",
|
| - "access-control-allow-methods",
|
| - "x-ua-compatible",
|
| - "x-google-gfe-response-code-details-trace",
|
| - "google-lineitem-id",
|
| - "version",
|
| - "x-google-dos-service-trace",
|
| - "x-google-service",
|
| - "x-google-gfe-service-trace",
|
| - "sane-time-millis",
|
| - "x-google-netmon-label",
|
| - "x-google-apiary-auth-scopes",
|
| - "x-seed-signature",
|
| - "content-security-policy-report-only",
|
| - "x-auto-login",
|
| - "x-original-content-length",
|
| - "accept-ranges",
|
| - "x-goog-hash",
|
| - "x-google-gfe-response-body-transformations",
|
| - "cf-ray",
|
| - "x-content-security-policy-report-only",
|
| - "x-google-shellfish-status",
|
| - "x-amz-id-2",
|
| - "get-dictionary",
|
| - "grpc-message",
|
| - "x-hw",
|
| - "x-google-gfe-backend-request-info",
|
| - "x-goog-upload-header-x-google-session-info",
|
| - "x-amz-cf-id",
|
| - "x-powered-by",
|
| - "www-authenticate",
|
| - "access-control-max-age",
|
| - "x-spf-response-type",
|
| - "x-goog-meta-encoded_request",
|
| - "x-goog-generation",
|
| - "x-google-gslb-service",
|
| - "x-google-servertype",
|
| - "x-cache",
|
| - "x-chromium-appcache-fallback-override",
|
| - "x-goog-upload-url",
|
| - "x-goog-upload-control-url",
|
| - "content-range",
|
| - "x-seen-by",
|
| - "x-google-apps-framework-action",
|
| - "content-location",
|
| - "x-daystart",
|
| - "x-varnish",
|
| - "fastly-debug-digest",
|
| - "x-daynum",
|
| - "x-goog-stored-content-encoding",
|
| - "x-goog-storage-class",
|
| - "x-google-cookies-blocked",
|
| - "x-range-md5",
|
| - "x-served-by",
|
| - "x-client-wire-protocol",
|
| - "content-language",
|
| - };
|
| -
|
| - indexing_set_.clear();
|
| - indexing_set_ =
|
| - HeaderSet(initial_fields, initial_fields + arraysize(initial_fields));
|
| - tracking_set_ =
|
| - HeaderSet(initial_fields, initial_fields + arraysize(initial_fields));
|
| -}
|
| -
|
| -bool HeaderIndexing::ShouldIndex(SpdyStringPiece header,
|
| - SpdyStringPiece /* value */) {
|
| - total_header_count_++;
|
| - if (header.empty()) {
|
| - return false;
|
| - }
|
| - // header is in indexing set.
|
| - SpdyString header_str(header.data(), header.size());
|
| - if (indexing_set_.find(header_str) != indexing_set_.end()) {
|
| - return true;
|
| - }
|
| - // header not in indexing set. Check tracking set.
|
| - if (tracking_set_.find(header_str) != tracking_set_.end()) {
|
| - // Seen this header before. Add it to indexing set.
|
| - TryInsertHeader(std::move(header_str), &indexing_set_, indexing_set_bound_);
|
| - missed_header_in_tracking_++;
|
| - } else {
|
| - // Add header to tracking set.
|
| - TryInsertHeader(std::move(header_str), &tracking_set_, tracking_set_bound_);
|
| - missed_header_in_indexing_++;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -void HeaderIndexing::TryInsertHeader(SpdyString&& header,
|
| - HeaderSet* set,
|
| - size_t bound) {
|
| - std::pair<HeaderSet::iterator, bool> result = set->insert(std::move(header));
|
| - if (set->size() > bound) {
|
| - // Reach the size limit. Remove the header next to the newly added header.
|
| - // If the new header is at the end, look for the "next" element at the
|
| - // beginning.
|
| - HeaderSet::iterator it = std::next(result.first);
|
| - if (it != set->end()) {
|
| - set->erase(it);
|
| - } else {
|
| - set->erase(set->begin());
|
| - }
|
| - }
|
| -}
|
| -
|
| -} // namespace net
|
|
|