diff options
author | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-24 06:48:00 +0000 |
---|---|---|
committer | rch@chromium.org <rch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-24 06:48:00 +0000 |
commit | 1eb81433c06db39fb39d12044ceaf1d6ae68538d (patch) | |
tree | 95f2e1fd4a0a9e3ea058329e593169bff9efe00e /net/spdy/spdy_credential_state.cc | |
parent | 203fe858af8b77cd65f16074131ff0ba31c082f1 (diff) | |
download | chromium_src-1eb81433c06db39fb39d12044ceaf1d6ae68538d.zip chromium_src-1eb81433c06db39fb39d12044ceaf1d6ae68538d.tar.gz chromium_src-1eb81433c06db39fb39d12044ceaf1d6ae68538d.tar.bz2 |
Implement correct v3 CREDENTIAL frame support.
BUG=106103
TEST=SpdyCredentialStateTest.*,SpdyFramerTest.*Credential*,SpdyHttpStreamTest.*Credential*,SpdySessionTest.*Credential*
Review URL: http://codereview.chromium.org/9535019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128707 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_credential_state.cc')
-rw-r--r-- | net/spdy/spdy_credential_state.cc | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/net/spdy/spdy_credential_state.cc b/net/spdy/spdy_credential_state.cc index 038ae38..943d732 100644 --- a/net/spdy/spdy_credential_state.cc +++ b/net/spdy/spdy_credential_state.cc @@ -5,11 +5,26 @@ #include "net/spdy/spdy_credential_state.h" #include "base/logging.h" +#include "base/string_util.h" +#include "net/base/server_bound_cert_service.h" namespace net { +namespace { + +GURL GetCanonicalOrigin(const GURL& url) { + std::string domain = + ServerBoundCertService::GetDomainForHost(url.host()); + DCHECK(!domain.empty()); + if (domain == url.host()) + return url.GetOrigin(); + return GURL(url.scheme() + "://" + domain + ":" + url.port()); +} + +} // namespace + const size_t SpdyCredentialState::kDefaultNumSlots = 8; -const size_t SpdyCredentialState::kNoEntry = -1; +const size_t SpdyCredentialState::kNoEntry = 0; SpdyCredentialState::SpdyCredentialState(size_t num_slots) : slots_(num_slots), @@ -17,12 +32,12 @@ SpdyCredentialState::SpdyCredentialState(size_t num_slots) SpdyCredentialState::~SpdyCredentialState() {} -bool SpdyCredentialState::HasCredential(const HostPortPair& origin) const { - return FindPosition(origin) != kNoEntry; +bool SpdyCredentialState::HasCredential(const GURL& origin) const { + return FindCredentialSlot(origin) != kNoEntry; } -size_t SpdyCredentialState::SetHasCredential(const HostPortPair& origin) { - size_t i = FindPosition(origin); +size_t SpdyCredentialState::SetHasCredential(const GURL& origin) { + size_t i = FindCredentialSlot(origin); if (i != kNoEntry) return i; // Add the new entry at the next index following the index of the last @@ -32,14 +47,15 @@ size_t SpdyCredentialState::SetHasCredential(const HostPortPair& origin) { } else { last_added_++; } - slots_[last_added_] = origin; - return last_added_; + slots_[last_added_] = GetCanonicalOrigin(origin); + return last_added_ + 1; } -size_t SpdyCredentialState::FindPosition(const HostPortPair& origin) const { +size_t SpdyCredentialState::FindCredentialSlot(const GURL& origin) const { + GURL url = GetCanonicalOrigin(origin); for (size_t i = 0; i < slots_.size(); i++) { - if (slots_[i].Equals(origin)) - return i; + if (url == slots_[i]) + return i + 1; } return kNoEntry; } |