Commit 3c76fa60 authored by Renjie's avatar Renjie Committed by Commit Bot

Add boolean in QSF::Job to keep status of host resolution.

This boolean is to indicate whether host resolution has been completed and we use that to notify QuicStreamRequest(s) to expect host resolution. No behavior change, this change prepares QSF::Job to race QUIC connection and host resolution which could be in different state before host resolution completes.

Change-Id: I3fdd3cc6b13ecd5ed1f9d9e0cdaa40a833d3bd94
Reviewed-on: https://chromium-review.googlesource.com/1211977Reviewed-by: default avatarZhongyi Shi <zhongyi@chromium.org>
Reviewed-by: default avatarRyan Hamilton <rch@chromium.org>
Commit-Queue: Ryan Hamilton <rch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589756}
parent 750c6f37
...@@ -347,8 +347,7 @@ class QuicStreamFactory::Job { ...@@ -347,8 +347,7 @@ class QuicStreamFactory::Job {
void AddRequest(QuicStreamRequest* request) { void AddRequest(QuicStreamRequest* request) {
stream_requests_.insert(request); stream_requests_.insert(request);
if (io_state_ == STATE_RESOLVE_HOST || if (!host_resolution_finished_) {
io_state_ == STATE_RESOLVE_HOST_COMPLETE) {
request->ExpectOnHostResolution(); request->ExpectOnHostResolution();
} }
} }
...@@ -389,6 +388,7 @@ class QuicStreamFactory::Job { ...@@ -389,6 +388,7 @@ class QuicStreamFactory::Job {
const bool retry_on_alternate_network_before_handshake_; const bool retry_on_alternate_network_before_handshake_;
const NetLogWithSource net_log_; const NetLogWithSource net_log_;
int num_sent_client_hellos_; int num_sent_client_hellos_;
bool host_resolution_finished_;
QuicChromiumClientSession* session_; QuicChromiumClientSession* session_;
// If connection migraiton is supported, |network_| denotes the network on // If connection migraiton is supported, |network_| denotes the network on
// which |session_| is created. // which |session_| is created.
...@@ -428,6 +428,7 @@ QuicStreamFactory::Job::Job(QuicStreamFactory* factory, ...@@ -428,6 +428,7 @@ QuicStreamFactory::Job::Job(QuicStreamFactory* factory,
NetLogWithSource::Make(net_log.net_log(), NetLogWithSource::Make(net_log.net_log(),
NetLogSourceType::QUIC_STREAM_FACTORY_JOB)), NetLogSourceType::QUIC_STREAM_FACTORY_JOB)),
num_sent_client_hellos_(0), num_sent_client_hellos_(0),
host_resolution_finished_(false),
session_(nullptr), session_(nullptr),
network_(NetworkChangeNotifier::kInvalidNetworkHandle), network_(NetworkChangeNotifier::kInvalidNetworkHandle),
weak_factory_(this) { weak_factory_(this) {
...@@ -532,6 +533,7 @@ int QuicStreamFactory::Job::DoResolveHost() { ...@@ -532,6 +533,7 @@ int QuicStreamFactory::Job::DoResolveHost() {
} }
int QuicStreamFactory::Job::DoResolveHostComplete(int rv) { int QuicStreamFactory::Job::DoResolveHostComplete(int rv) {
host_resolution_finished_ = true;
dns_resolution_end_time_ = base::TimeTicks::Now(); dns_resolution_end_time_ = base::TimeTicks::Now();
if (rv != OK) if (rv != OK)
return rv; return rv;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment