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

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

Issue 397803004: Reimplement QuicCryptoClientStream::WasChannelIDSent with a boolean (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
« no previous file with comments | « net/quic/quic_crypto_client_stream.h ('k') | net/quic/test_tools/quic_client_session_peer.h » ('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 "net/quic/crypto/crypto_protocol.h" 7 #include "net/quic/crypto/crypto_protocol.h"
8 #include "net/quic/crypto/crypto_utils.h" 8 #include "net/quic/crypto/crypto_utils.h"
9 #include "net/quic/crypto/null_encrypter.h" 9 #include "net/quic/crypto/null_encrypter.h"
10 #include "net/quic/quic_client_session_base.h" 10 #include "net/quic/quic_client_session_base.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 const QuicServerId& server_id, 71 const QuicServerId& server_id,
72 QuicClientSessionBase* session, 72 QuicClientSessionBase* session,
73 ProofVerifyContext* verify_context, 73 ProofVerifyContext* verify_context,
74 QuicCryptoClientConfig* crypto_config) 74 QuicCryptoClientConfig* crypto_config)
75 : QuicCryptoStream(session), 75 : QuicCryptoStream(session),
76 next_state_(STATE_IDLE), 76 next_state_(STATE_IDLE),
77 num_client_hellos_(0), 77 num_client_hellos_(0),
78 crypto_config_(crypto_config), 78 crypto_config_(crypto_config),
79 server_id_(server_id), 79 server_id_(server_id),
80 generation_counter_(0), 80 generation_counter_(0),
81 channel_id_sent_(false),
81 channel_id_source_callback_(NULL), 82 channel_id_source_callback_(NULL),
82 verify_context_(verify_context), 83 verify_context_(verify_context),
83 proof_verify_callback_(NULL) { 84 proof_verify_callback_(NULL) {
84 } 85 }
85 86
86 QuicCryptoClientStream::~QuicCryptoClientStream() { 87 QuicCryptoClientStream::~QuicCryptoClientStream() {
87 if (channel_id_source_callback_) { 88 if (channel_id_source_callback_) {
88 channel_id_source_callback_->Cancel(); 89 channel_id_source_callback_->Cancel();
89 } 90 }
90 if (proof_verify_callback_) { 91 if (proof_verify_callback_) {
(...skipping 12 matching lines...) Expand all
103 next_state_ = STATE_INITIALIZE; 104 next_state_ = STATE_INITIALIZE;
104 DoHandshakeLoop(NULL); 105 DoHandshakeLoop(NULL);
105 return true; 106 return true;
106 } 107 }
107 108
108 int QuicCryptoClientStream::num_sent_client_hellos() const { 109 int QuicCryptoClientStream::num_sent_client_hellos() const {
109 return num_client_hellos_; 110 return num_client_hellos_;
110 } 111 }
111 112
112 bool QuicCryptoClientStream::WasChannelIDSent() const { 113 bool QuicCryptoClientStream::WasChannelIDSent() const {
113 // TODO(rch): we should replace this with a boolean member so we 114 return channel_id_sent_;
114 // can free the memory associated with the key after we're finished with it.
115 return channel_id_key_.get() != NULL;
116 } 115 }
117 116
118 // kMaxClientHellos is the maximum number of times that we'll send a client 117 // kMaxClientHellos is the maximum number of times that we'll send a client
119 // hello. The value 3 accounts for: 118 // hello. The value 3 accounts for:
120 // * One failure due to an incorrect or missing source-address token. 119 // * One failure due to an incorrect or missing source-address token.
121 // * One failure due the server's certificate chain being unavailible and the 120 // * One failure due the server's certificate chain being unavailible and the
122 // server being unwilling to send it without a valid source-address token. 121 // server being unwilling to send it without a valid source-address token.
123 static const int kMaxClientHellos = 3; 122 static const int kMaxClientHellos = 3;
124 123
125 void QuicCryptoClientStream::DoHandshakeLoop( 124 void QuicCryptoClientStream::DoHandshakeLoop(
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 return; 184 return;
186 } 185 }
187 session()->config()->ToHandshakeMessage(&out); 186 session()->config()->ToHandshakeMessage(&out);
188 error = crypto_config_->FillClientHello( 187 error = crypto_config_->FillClientHello(
189 server_id_, 188 server_id_,
190 session()->connection()->connection_id(), 189 session()->connection()->connection_id(),
191 session()->connection()->supported_versions().front(), 190 session()->connection()->supported_versions().front(),
192 cached, 191 cached,
193 session()->connection()->clock()->WallNow(), 192 session()->connection()->clock()->WallNow(),
194 session()->connection()->random_generator(), 193 session()->connection()->random_generator(),
195 channel_id_key_.get(), 194 channel_id_key_.get(),
wtc 2014/07/16 02:01:27 If channel_id_key_.get() is not null, crypto_confi
196 &crypto_negotiated_params_, 195 &crypto_negotiated_params_,
197 &out, 196 &out,
198 &error_details); 197 &error_details);
199 if (error != QUIC_NO_ERROR) { 198 if (error != QUIC_NO_ERROR) {
200 // Flush the cached config so that, if it's bad, the server has a 199 // Flush the cached config so that, if it's bad, the server has a
201 // chance to send us another in the future. 200 // chance to send us another in the future.
202 cached->InvalidateServerConfig(); 201 cached->InvalidateServerConfig();
203 CloseConnectionWithDetails(error, error_details); 202 CloseConnectionWithDetails(error, error_details);
204 return; 203 return;
205 } 204 }
205 channel_id_sent_ = (channel_id_key_.get() != NULL);
206 if (cached->proof_verify_details()) { 206 if (cached->proof_verify_details()) {
207 client_session()->OnProofVerifyDetailsAvailable( 207 client_session()->OnProofVerifyDetailsAvailable(
208 *cached->proof_verify_details()); 208 *cached->proof_verify_details());
209 } 209 }
210 next_state_ = STATE_RECV_SHLO; 210 next_state_ = STATE_RECV_SHLO;
211 DVLOG(1) << "Client: Sending " << out.DebugString(); 211 DVLOG(1) << "Client: Sending " << out.DebugString();
212 SendHandshakeMessage(out); 212 SendHandshakeMessage(out);
213 // Be prepared to decrypt with the new server write key. 213 // Be prepared to decrypt with the new server write key.
214 session()->connection()->SetAlternativeDecrypter( 214 session()->connection()->SetAlternativeDecrypter(
215 crypto_negotiated_params_.initial_crypters.decrypter.release(), 215 crypto_negotiated_params_.initial_crypters.decrypter.release(),
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 } 456 }
457 } 457 }
458 return false; 458 return false;
459 } 459 }
460 460
461 QuicClientSessionBase* QuicCryptoClientStream::client_session() { 461 QuicClientSessionBase* QuicCryptoClientStream::client_session() {
462 return reinterpret_cast<QuicClientSessionBase*>(session()); 462 return reinterpret_cast<QuicClientSessionBase*>(session());
463 } 463 }
464 464
465 } // namespace net 465 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_crypto_client_stream.h ('k') | net/quic/test_tools/quic_client_session_peer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698