Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: net/http/http_stream_factory_impl_job.cc

Issue 344603004: Avoid setting a duplicate SpdySessionKey on a Request (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_stream_factory_impl_job.h" 5 #include "net/http/http_stream_factory_impl_job.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 spdy_session_key, net_log_); 783 spdy_session_key, net_log_);
784 if (spdy_session && CanUseExistingSpdySession()) { 784 if (spdy_session && CanUseExistingSpdySession()) {
785 // If we're preconnecting, but we already have a SpdySession, we don't 785 // If we're preconnecting, but we already have a SpdySession, we don't
786 // actually need to preconnect any sockets, so we're done. 786 // actually need to preconnect any sockets, so we're done.
787 if (IsPreconnecting()) 787 if (IsPreconnecting())
788 return OK; 788 return OK;
789 using_spdy_ = true; 789 using_spdy_ = true;
790 next_state_ = STATE_CREATE_STREAM; 790 next_state_ = STATE_CREATE_STREAM;
791 existing_spdy_session_ = spdy_session; 791 existing_spdy_session_ = spdy_session;
792 return OK; 792 return OK;
793 } else if (request_ && (using_ssl_ || ShouldForceSpdyWithoutSSL())) { 793 } else if (request_ && !request_->HasSpdySessionKey() &&
794 (using_ssl_ || ShouldForceSpdyWithoutSSL())) {
794 // Update the spdy session key for the request that launched this job. 795 // Update the spdy session key for the request that launched this job.
795 request_->SetSpdySessionKey(spdy_session_key); 796 request_->SetSpdySessionKey(spdy_session_key);
796 } 797 }
797 798
798 // OK, there's no available SPDY session. Let |waiting_job_| resume if it's 799 // OK, there's no available SPDY session. Let |waiting_job_| resume if it's
799 // paused. 800 // paused.
800 801
801 if (waiting_job_) { 802 if (waiting_job_) {
802 waiting_job_->Resume(this); 803 waiting_job_->Resume(this);
803 waiting_job_ = NULL; 804 waiting_job_ = NULL;
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 1473
1473 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) { 1474 if (job_status_ == STATUS_SUCCEEDED && other_job_status_ == STATUS_BROKEN) {
1474 HistogramBrokenAlternateProtocolLocation( 1475 HistogramBrokenAlternateProtocolLocation(
1475 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN); 1476 BROKEN_ALTERNATE_PROTOCOL_LOCATION_HTTP_STREAM_FACTORY_IMPL_JOB_MAIN);
1476 session_->http_server_properties()->SetBrokenAlternateProtocol( 1477 session_->http_server_properties()->SetBrokenAlternateProtocol(
1477 HostPortPair::FromURL(request_info_.url)); 1478 HostPortPair::FromURL(request_info_.url));
1478 } 1479 }
1479 } 1480 }
1480 1481
1481 } // namespace net 1482 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/http/http_stream_factory_impl_request.h » ('j') | net/http/http_stream_factory_impl_request.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698