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

Side by Side Diff: net/quic/quic_crypto_client_stream.cc

Issue 1421853006: Landing Recent QUIC changes until: Fri Oct 30 22:23:58 2015 +0000 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments Created 5 years, 1 month 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
« no previous file with comments | « net/quic/quic_crypto_client_stream.h ('k') | net/quic/quic_crypto_client_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/quic/quic_crypto_client_stream.h" 5 #include "net/quic/quic_crypto_client_stream.h"
6 6
7 #include "base/metrics/histogram_macros.h" 7 #include "base/metrics/histogram_macros.h"
8 #include "net/quic/crypto/crypto_protocol.h" 8 #include "net/quic/crypto/crypto_protocol.h"
9 #include "net/quic/crypto/crypto_utils.h" 9 #include "net/quic/crypto/crypto_utils.h"
10 #include "net/quic/crypto/null_encrypter.h" 10 #include "net/quic/crypto/null_encrypter.h"
11 #include "net/quic/quic_client_session_base.h" 11 #include "net/quic/quic_client_session_base.h"
12 #include "net/quic/quic_flags.h" 12 #include "net/quic/quic_flags.h"
13 #include "net/quic/quic_protocol.h" 13 #include "net/quic/quic_protocol.h"
14 #include "net/quic/quic_session.h" 14 #include "net/quic/quic_session.h"
15 15
16 using std::string; 16 using std::string;
17 17
18 namespace net { 18 namespace net {
19 19
20 QuicCryptoClientStreamBase::QuicCryptoClientStreamBase(
21 QuicClientSessionBase* session)
22 : QuicCryptoStream(session) {}
23
20 QuicCryptoClientStream::ChannelIDSourceCallbackImpl:: 24 QuicCryptoClientStream::ChannelIDSourceCallbackImpl::
21 ChannelIDSourceCallbackImpl(QuicCryptoClientStream* stream) 25 ChannelIDSourceCallbackImpl(QuicCryptoClientStream* stream)
22 : stream_(stream) {} 26 : stream_(stream) {}
23 27
24 QuicCryptoClientStream::ChannelIDSourceCallbackImpl:: 28 QuicCryptoClientStream::ChannelIDSourceCallbackImpl::
25 ~ChannelIDSourceCallbackImpl() {} 29 ~ChannelIDSourceCallbackImpl() {}
26 30
27 void QuicCryptoClientStream::ChannelIDSourceCallbackImpl::Run( 31 void QuicCryptoClientStream::ChannelIDSourceCallbackImpl::Run(
28 scoped_ptr<ChannelIDKey>* channel_id_key) { 32 scoped_ptr<ChannelIDKey>* channel_id_key) {
29 if (stream_ == nullptr) { 33 if (stream_ == nullptr) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 74
71 void QuicCryptoClientStream::ProofVerifierCallbackImpl::Cancel() { 75 void QuicCryptoClientStream::ProofVerifierCallbackImpl::Cancel() {
72 stream_ = nullptr; 76 stream_ = nullptr;
73 } 77 }
74 78
75 QuicCryptoClientStream::QuicCryptoClientStream( 79 QuicCryptoClientStream::QuicCryptoClientStream(
76 const QuicServerId& server_id, 80 const QuicServerId& server_id,
77 QuicClientSessionBase* session, 81 QuicClientSessionBase* session,
78 ProofVerifyContext* verify_context, 82 ProofVerifyContext* verify_context,
79 QuicCryptoClientConfig* crypto_config) 83 QuicCryptoClientConfig* crypto_config)
80 : QuicCryptoStream(session), 84 : QuicCryptoClientStreamBase(session),
81 next_state_(STATE_IDLE), 85 next_state_(STATE_IDLE),
82 num_client_hellos_(0), 86 num_client_hellos_(0),
83 crypto_config_(crypto_config), 87 crypto_config_(crypto_config),
84 server_id_(server_id), 88 server_id_(server_id),
85 generation_counter_(0), 89 generation_counter_(0),
86 channel_id_sent_(false), 90 channel_id_sent_(false),
87 channel_id_source_callback_run_(false), 91 channel_id_source_callback_run_(false),
88 channel_id_source_callback_(nullptr), 92 channel_id_source_callback_(nullptr),
89 verify_context_(verify_context), 93 verify_context_(verify_context),
90 proof_verify_callback_(nullptr), 94 proof_verify_callback_(nullptr),
91 stateless_reject_received_(false) { 95 stateless_reject_received_(false) {
92 DCHECK_EQ(Perspective::IS_CLIENT, session->connection()->perspective()); 96 DCHECK_EQ(Perspective::IS_CLIENT, session->connection()->perspective());
93 } 97 }
94 98
95 QuicCryptoClientStream::~QuicCryptoClientStream() { 99 QuicCryptoClientStream::~QuicCryptoClientStream() {
96 if (channel_id_source_callback_) { 100 if (channel_id_source_callback_) {
97 channel_id_source_callback_->Cancel(); 101 channel_id_source_callback_->Cancel();
98 } 102 }
99 if (proof_verify_callback_) { 103 if (proof_verify_callback_) {
100 proof_verify_callback_->Cancel(); 104 proof_verify_callback_->Cancel();
101 } 105 }
102 } 106 }
103 107
104 void QuicCryptoClientStream::OnHandshakeMessage( 108 void QuicCryptoClientStream::OnHandshakeMessage(
105 const CryptoHandshakeMessage& message) { 109 const CryptoHandshakeMessage& message) {
106 QuicCryptoStream::OnHandshakeMessage(message); 110 QuicCryptoClientStreamBase::OnHandshakeMessage(message);
107 111
108 if (message.tag() == kSCUP) { 112 if (message.tag() == kSCUP) {
109 if (!handshake_confirmed()) { 113 if (!handshake_confirmed()) {
110 CloseConnection(QUIC_CRYPTO_UPDATE_BEFORE_HANDSHAKE_COMPLETE); 114 CloseConnection(QUIC_CRYPTO_UPDATE_BEFORE_HANDSHAKE_COMPLETE);
111 return; 115 return;
112 } 116 }
113 117
114 // |message| is an update from the server, so we treat it differently from a 118 // |message| is an update from the server, so we treat it differently from a
115 // handshake message. 119 // handshake message.
116 HandleServerConfigUpdateMessage(message); 120 HandleServerConfigUpdateMessage(message);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 do { 184 do {
181 CHECK_NE(STATE_NONE, next_state_); 185 CHECK_NE(STATE_NONE, next_state_);
182 const State state = next_state_; 186 const State state = next_state_;
183 next_state_ = STATE_IDLE; 187 next_state_ = STATE_IDLE;
184 rv = QUIC_SUCCESS; 188 rv = QUIC_SUCCESS;
185 switch (state) { 189 switch (state) {
186 case STATE_INITIALIZE: 190 case STATE_INITIALIZE:
187 DoInitialize(cached); 191 DoInitialize(cached);
188 break; 192 break;
189 case STATE_SEND_CHLO: 193 case STATE_SEND_CHLO:
190 DoSendCHLO(in, cached); 194 DoSendCHLO(cached);
191 return; // return waiting to hear from server. 195 return; // return waiting to hear from server.
192 case STATE_RECV_REJ: 196 case STATE_RECV_REJ:
193 DoReceiveREJ(in, cached); 197 DoReceiveREJ(in, cached);
194 break; 198 break;
195 case STATE_VERIFY_PROOF: 199 case STATE_VERIFY_PROOF:
196 rv = DoVerifyProof(cached); 200 rv = DoVerifyProof(cached);
197 break; 201 break;
198 case STATE_VERIFY_PROOF_COMPLETE: 202 case STATE_VERIFY_PROOF_COMPLETE:
199 DoVerifyProofComplete(cached); 203 DoVerifyProofComplete(cached);
200 break; 204 break;
(...skipping 29 matching lines...) Expand all
230 // the proof. 234 // the proof.
231 DCHECK(crypto_config_->proof_verifier()); 235 DCHECK(crypto_config_->proof_verifier());
232 // If the cached state needs to be verified, do it now. 236 // If the cached state needs to be verified, do it now.
233 next_state_ = STATE_VERIFY_PROOF; 237 next_state_ = STATE_VERIFY_PROOF;
234 } else { 238 } else {
235 next_state_ = STATE_GET_CHANNEL_ID; 239 next_state_ = STATE_GET_CHANNEL_ID;
236 } 240 }
237 } 241 }
238 242
239 void QuicCryptoClientStream::DoSendCHLO( 243 void QuicCryptoClientStream::DoSendCHLO(
240 const CryptoHandshakeMessage* in,
241 QuicCryptoClientConfig::CachedState* cached) { 244 QuicCryptoClientConfig::CachedState* cached) {
242 if (stateless_reject_received_) { 245 if (stateless_reject_received_) {
243 // If we've gotten to this point, we've sent at least one hello 246 // If we've gotten to this point, we've sent at least one hello
244 // and received a stateless reject in response. We cannot 247 // and received a stateless reject in response. We cannot
245 // continue to send hellos because the server has abandoned state 248 // continue to send hellos because the server has abandoned state
246 // for this connection. Abandon further handshakes. 249 // for this connection. Abandon further handshakes.
247 next_state_ = STATE_NONE; 250 next_state_ = STATE_NONE;
248 if (session()->connection()->connected()) { 251 if (session()->connection()->connected()) {
249 session()->connection()->CloseConnection( 252 session()->connection()->CloseConnection(
250 QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, false); 253 QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, false);
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 } 615 }
613 } 616 }
614 return false; 617 return false;
615 } 618 }
616 619
617 QuicClientSessionBase* QuicCryptoClientStream::client_session() { 620 QuicClientSessionBase* QuicCryptoClientStream::client_session() {
618 return reinterpret_cast<QuicClientSessionBase*>(session()); 621 return reinterpret_cast<QuicClientSessionBase*>(session());
619 } 622 }
620 623
621 } // namespace net 624 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_crypto_client_stream.h ('k') | net/quic/quic_crypto_client_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698