Index: net/quic/quic_stream_factory.cc |
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc |
index d7dccf4bb68264e3995238145c7e416eb11c318f..87256cc64e5b4dfe700349acb8c7bf4fb0874fb2 100644 |
--- a/net/quic/quic_stream_factory.cc |
+++ b/net/quic/quic_stream_factory.cc |
@@ -32,7 +32,7 @@ |
#include "net/quic/quic_default_packet_writer.h" |
#include "net/quic/quic_http_stream.h" |
#include "net/quic/quic_protocol.h" |
-#include "net/quic/quic_session_key.h" |
+#include "net/quic/quic_server_id.h" |
#include "net/socket/client_socket_factory.h" |
using std::string; |
@@ -115,8 +115,8 @@ class QuicStreamFactory::Job { |
return callback_; |
} |
- const QuicSessionKey session_key() const { |
- return session_key_; |
+ const QuicServerId server_id() const { |
+ return server_id_; |
} |
private: |
@@ -133,7 +133,7 @@ class QuicStreamFactory::Job { |
QuicStreamFactory* factory_; |
SingleRequestHostResolver host_resolver_; |
- QuicSessionKey session_key_; |
+ QuicServerId server_id_; |
bool is_post_; |
scoped_ptr<QuicServerInfo> server_info_; |
const BoundNetLog net_log_; |
@@ -155,7 +155,7 @@ QuicStreamFactory::Job::Job(QuicStreamFactory* factory, |
const BoundNetLog& net_log) |
: factory_(factory), |
host_resolver_(host_resolver), |
- session_key_(host_port_pair, is_https, privacy_mode), |
+ server_id_(host_port_pair, is_https, privacy_mode), |
is_post_(method == "POST"), |
server_info_(server_info), |
net_log_(net_log), |
@@ -225,7 +225,7 @@ int QuicStreamFactory::Job::DoResolveHost() { |
io_state_ = STATE_RESOLVE_HOST_COMPLETE; |
return host_resolver_.Resolve( |
- HostResolver::RequestInfo(session_key_.host_port_pair()), |
+ HostResolver::RequestInfo(server_id_.host_port_pair()), |
DEFAULT_PRIORITY, |
&address_list_, |
base::Bind(&QuicStreamFactory::Job::OnIOComplete, |
@@ -237,11 +237,11 @@ int QuicStreamFactory::Job::DoResolveHostComplete(int rv) { |
if (rv != OK) |
return rv; |
- DCHECK(!factory_->HasActiveSession(session_key_)); |
+ DCHECK(!factory_->HasActiveSession(server_id_)); |
// Inform the factory of this resolution, which will set up |
// a session alias, if possible. |
- if (factory_->OnResolution(session_key_, address_list_)) { |
+ if (factory_->OnResolution(server_id_, address_list_)) { |
return OK; |
} |
@@ -277,7 +277,7 @@ int QuicStreamFactory::Job::DoLoadServerInfoComplete(int rv) { |
int QuicStreamFactory::Job::DoConnect() { |
io_state_ = STATE_CONNECT_COMPLETE; |
- int rv = factory_->CreateSession(session_key_, server_info_.Pass(), |
+ int rv = factory_->CreateSession(server_id_, server_info_.Pass(), |
address_list_, net_log_, &session_); |
if (rv != OK) { |
DCHECK(rv != ERR_IO_PENDING); |
@@ -290,7 +290,7 @@ int QuicStreamFactory::Job::DoConnect() { |
return ERR_QUIC_PROTOCOL_ERROR; |
} |
rv = session_->CryptoConnect( |
- factory_->require_confirmation() || session_key_.is_https() || is_post_, |
+ factory_->require_confirmation() || server_id_.is_https() || is_post_, |
base::Bind(&QuicStreamFactory::Job::OnIOComplete, |
base::Unretained(this))); |
return rv; |
@@ -300,17 +300,17 @@ int QuicStreamFactory::Job::DoConnectComplete(int rv) { |
if (rv != OK) |
return rv; |
- DCHECK(!factory_->HasActiveSession(session_key_)); |
+ DCHECK(!factory_->HasActiveSession(server_id_)); |
// There may well now be an active session for this IP. If so, use the |
// existing session instead. |
AddressList address(session_->connection()->peer_address()); |
- if (factory_->OnResolution(session_key_, address)) { |
+ if (factory_->OnResolution(server_id_, address)) { |
session_->connection()->SendConnectionClose(QUIC_NO_ERROR); |
session_ = NULL; |
return OK; |
} |
- factory_->ActivateSession(session_key_, session_); |
+ factory_->ActivateSession(server_id_, session_); |
return OK; |
} |
@@ -417,14 +417,14 @@ int QuicStreamFactory::Create(const HostPortPair& host_port_pair, |
base::StringPiece method, |
const BoundNetLog& net_log, |
QuicStreamRequest* request) { |
- QuicSessionKey session_key(host_port_pair, is_https, privacy_mode); |
- if (HasActiveSession(session_key)) { |
- request->set_stream(CreateIfSessionExists(session_key, net_log)); |
+ QuicServerId server_id(host_port_pair, is_https, privacy_mode); |
+ if (HasActiveSession(server_id)) { |
+ request->set_stream(CreateIfSessionExists(server_id, net_log)); |
return OK; |
} |
- if (HasActiveJob(session_key)) { |
- Job* job = active_jobs_[session_key]; |
+ if (HasActiveJob(server_id)) { |
+ Job* job = active_jobs_[server_id]; |
active_requests_[request] = job; |
job_requests_map_[job].insert(request); |
return ERR_IO_PENDING; |
@@ -433,10 +433,10 @@ int QuicStreamFactory::Create(const HostPortPair& host_port_pair, |
QuicServerInfo* quic_server_info = NULL; |
if (quic_server_info_factory_) { |
QuicCryptoClientConfig::CachedState* cached = |
- crypto_config_.LookupOrCreate(session_key); |
+ crypto_config_.LookupOrCreate(server_id); |
DCHECK(cached); |
if (cached->IsEmpty()) { |
- quic_server_info = quic_server_info_factory_->GetForServer(session_key); |
+ quic_server_info = quic_server_info_factory_->GetForServer(server_id); |
} |
} |
scoped_ptr<Job> job(new Job(this, host_resolver_, host_port_pair, is_https, |
@@ -447,22 +447,22 @@ int QuicStreamFactory::Create(const HostPortPair& host_port_pair, |
if (rv == ERR_IO_PENDING) { |
active_requests_[request] = job.get(); |
job_requests_map_[job.get()].insert(request); |
- active_jobs_[session_key] = job.release(); |
+ active_jobs_[server_id] = job.release(); |
} |
if (rv == OK) { |
- DCHECK(HasActiveSession(session_key)); |
- request->set_stream(CreateIfSessionExists(session_key, net_log)); |
+ DCHECK(HasActiveSession(server_id)); |
+ request->set_stream(CreateIfSessionExists(server_id, net_log)); |
} |
return rv; |
} |
bool QuicStreamFactory::OnResolution( |
- const QuicSessionKey& session_key, |
+ const QuicServerId& server_id, |
const AddressList& address_list) { |
- DCHECK(!HasActiveSession(session_key)); |
+ DCHECK(!HasActiveSession(server_id)); |
for (size_t i = 0; i < address_list.size(); ++i) { |
const IPEndPoint& address = address_list[i]; |
- const IpAliasKey ip_alias_key(address, session_key.is_https()); |
+ const IpAliasKey ip_alias_key(address, server_id.is_https()); |
if (!ContainsKey(ip_aliases_, ip_alias_key)) |
continue; |
@@ -470,10 +470,10 @@ bool QuicStreamFactory::OnResolution( |
for (SessionSet::const_iterator i = sessions.begin(); |
i != sessions.end(); ++i) { |
QuicClientSession* session = *i; |
- if (!session->CanPool(session_key.host())) |
+ if (!session->CanPool(server_id.host())) |
continue; |
- active_sessions_[session_key] = session; |
- session_aliases_[session].insert(session_key); |
+ active_sessions_[server_id] = session; |
+ session_aliases_[session].insert(server_id); |
return true; |
} |
} |
@@ -487,8 +487,8 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) { |
// Create all the streams, but do not notify them yet. |
for (RequestSet::iterator it = job_requests_map_[job].begin(); |
it != job_requests_map_[job].end() ; ++it) { |
- DCHECK(HasActiveSession(job->session_key())); |
- (*it)->set_stream(CreateIfSessionExists(job->session_key(), |
+ DCHECK(HasActiveSession(job->server_id())); |
+ (*it)->set_stream(CreateIfSessionExists(job->server_id(), |
(*it)->net_log())); |
} |
} |
@@ -502,7 +502,7 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) { |
// profile which can not be deleted via callbacks. |
request->OnRequestComplete(rv); |
} |
- active_jobs_.erase(job->session_key()); |
+ active_jobs_.erase(job->server_id()); |
job_requests_map_.erase(job); |
delete job; |
return; |
@@ -511,14 +511,14 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) { |
// Returns a newly created QuicHttpStream owned by the caller, if a |
// matching session already exists. Returns NULL otherwise. |
scoped_ptr<QuicHttpStream> QuicStreamFactory::CreateIfSessionExists( |
- const QuicSessionKey& session_key, |
+ const QuicServerId& server_id, |
const BoundNetLog& net_log) { |
- if (!HasActiveSession(session_key)) { |
+ if (!HasActiveSession(server_id)) { |
DVLOG(1) << "No active session"; |
return scoped_ptr<QuicHttpStream>(); |
} |
- QuicClientSession* session = active_sessions_[session_key]; |
+ QuicClientSession* session = active_sessions_[server_id]; |
DCHECK(session); |
return scoped_ptr<QuicHttpStream>( |
new QuicHttpStream(session->GetWeakPtr())); |
@@ -619,11 +619,11 @@ base::Value* QuicStreamFactory::QuicStreamFactoryInfoToValue() const { |
for (SessionMap::const_iterator it = active_sessions_.begin(); |
it != active_sessions_.end(); ++it) { |
- const QuicSessionKey& session_key = it->first; |
+ const QuicServerId& server_id = it->first; |
QuicClientSession* session = it->second; |
const AliasSet& aliases = session_aliases_.find(session)->second; |
// Only add a session to the list once. |
- if (session_key == *aliases.begin()) { |
+ if (server_id == *aliases.begin()) { |
std::set<HostPortPair> hosts; |
for (AliasSet::const_iterator alias_it = aliases.begin(); |
alias_it != aliases.end(); ++alias_it) { |
@@ -658,30 +658,30 @@ void QuicStreamFactory::OnCACertChanged(const X509Certificate* cert) { |
} |
bool QuicStreamFactory::HasActiveSession( |
- const QuicSessionKey& session_key) const { |
- return ContainsKey(active_sessions_, session_key); |
+ const QuicServerId& server_id) const { |
+ return ContainsKey(active_sessions_, server_id); |
} |
int QuicStreamFactory::CreateSession( |
- const QuicSessionKey& session_key, |
+ const QuicServerId& server_id, |
scoped_ptr<QuicServerInfo> server_info, |
const AddressList& address_list, |
const BoundNetLog& net_log, |
QuicClientSession** session) { |
bool enable_port_selection = enable_port_selection_; |
if (enable_port_selection && |
- ContainsKey(gone_away_aliases_, session_key)) { |
+ ContainsKey(gone_away_aliases_, server_id)) { |
// Disable port selection when the server is going away. |
// There is no point in trying to return to the same server, if |
// that server is no longer handling requests. |
enable_port_selection = false; |
- gone_away_aliases_.erase(session_key); |
+ gone_away_aliases_.erase(server_id); |
} |
QuicConnectionId connection_id = random_generator_->RandUint64(); |
IPEndPoint addr = *address_list.begin(); |
scoped_refptr<PortSuggester> port_suggester = |
- new PortSuggester(session_key.host_port_pair(), port_seed_); |
+ new PortSuggester(server_id.host_port_pair(), port_seed_); |
DatagramSocket::BindType bind_type = enable_port_selection ? |
DatagramSocket::RANDOM_BIND : // Use our callback. |
DatagramSocket::DEFAULT_BIND; // Use OS to randomize. |
@@ -735,13 +735,13 @@ int QuicStreamFactory::CreateSession( |
writer->SetConnection(connection); |
connection->options()->max_packet_length = max_packet_length_; |
- InitializeCachedState(session_key, server_info); |
+ InitializeCachedState(server_id, server_info); |
QuicConfig config = config_; |
if (http_server_properties_) { |
const HttpServerProperties::NetworkStats* stats = |
http_server_properties_->GetServerNetworkStats( |
- session_key.host_port_pair()); |
+ server_id.host_port_pair()); |
if (stats != NULL) { |
config.set_initial_round_trip_time_us(stats->rtt.InMicroseconds(), |
stats->rtt.InMicroseconds()); |
@@ -750,36 +750,36 @@ int QuicStreamFactory::CreateSession( |
*session = new QuicClientSession( |
connection, socket.Pass(), writer.Pass(), this, |
- quic_crypto_client_stream_factory_, server_info.Pass(), session_key, |
+ quic_crypto_client_stream_factory_, server_info.Pass(), server_id, |
config, &crypto_config_, net_log.net_log()); |
all_sessions_.insert(*session); // owning pointer |
return OK; |
} |
-bool QuicStreamFactory::HasActiveJob(const QuicSessionKey& key) const { |
+bool QuicStreamFactory::HasActiveJob(const QuicServerId& key) const { |
return ContainsKey(active_jobs_, key); |
} |
void QuicStreamFactory::ActivateSession( |
- const QuicSessionKey& session_key, |
+ const QuicServerId& server_id, |
QuicClientSession* session) { |
- DCHECK(!HasActiveSession(session_key)); |
- active_sessions_[session_key] = session; |
- session_aliases_[session].insert(session_key); |
+ DCHECK(!HasActiveSession(server_id)); |
+ active_sessions_[server_id] = session; |
+ session_aliases_[session].insert(server_id); |
const IpAliasKey ip_alias_key(session->connection()->peer_address(), |
- session_key.is_https()); |
+ server_id.is_https()); |
DCHECK(!ContainsKey(ip_aliases_[ip_alias_key], session)); |
ip_aliases_[ip_alias_key].insert(session); |
} |
void QuicStreamFactory::InitializeCachedState( |
- const QuicSessionKey& session_key, |
+ const QuicServerId& server_id, |
const scoped_ptr<QuicServerInfo>& server_info) { |
if (!server_info) |
return; |
QuicCryptoClientConfig::CachedState* cached = |
- crypto_config_.LookupOrCreate(session_key); |
+ crypto_config_.LookupOrCreate(server_id); |
if (!cached->IsEmpty()) |
return; |
@@ -790,7 +790,7 @@ void QuicStreamFactory::InitializeCachedState( |
clock_->WallNow())) |
return; |
- if (!session_key.is_https()) { |
+ if (!server_id.is_https()) { |
// Don't check the certificates for insecure QUIC. |
cached->SetProofValid(); |
} |