| OLD | NEW | 
|---|
| 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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 90   if (channel_id_source_callback_) { | 90   if (channel_id_source_callback_) { | 
| 91     channel_id_source_callback_->Cancel(); | 91     channel_id_source_callback_->Cancel(); | 
| 92   } | 92   } | 
| 93   if (proof_verify_callback_) { | 93   if (proof_verify_callback_) { | 
| 94     proof_verify_callback_->Cancel(); | 94     proof_verify_callback_->Cancel(); | 
| 95   } | 95   } | 
| 96 } | 96 } | 
| 97 | 97 | 
| 98 void QuicCryptoClientStream::OnHandshakeMessage( | 98 void QuicCryptoClientStream::OnHandshakeMessage( | 
| 99     const CryptoHandshakeMessage& message) { | 99     const CryptoHandshakeMessage& message) { | 
| 100   DVLOG(1) << "Client: Received " << message.DebugString(); |  | 
| 101 |  | 
| 102   QuicCryptoStream::OnHandshakeMessage(message); | 100   QuicCryptoStream::OnHandshakeMessage(message); | 
| 103 | 101 | 
| 104   if (message.tag() == kSCUP) { | 102   if (message.tag() == kSCUP) { | 
| 105     if (!handshake_confirmed()) { | 103     if (!handshake_confirmed()) { | 
| 106       CloseConnection(QUIC_CRYPTO_UPDATE_BEFORE_HANDSHAKE_COMPLETE); | 104       CloseConnection(QUIC_CRYPTO_UPDATE_BEFORE_HANDSHAKE_COMPLETE); | 
| 107       return; | 105       return; | 
| 108     } | 106     } | 
| 109 | 107 | 
| 110     // |message| is an update from the server, so we treat it differently from a | 108     // |message| is an update from the server, so we treat it differently from a | 
| 111     // handshake message. | 109     // handshake message. | 
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 218             CloseConnection(QUIC_INTERNAL_ERROR); | 216             CloseConnection(QUIC_INTERNAL_ERROR); | 
| 219             return; | 217             return; | 
| 220           } | 218           } | 
| 221           if (kClientHelloMinimumSize > max_packet_size - kFramingOverhead) { | 219           if (kClientHelloMinimumSize > max_packet_size - kFramingOverhead) { | 
| 222             DLOG(DFATAL) << "Client hello won't fit in a single packet."; | 220             DLOG(DFATAL) << "Client hello won't fit in a single packet."; | 
| 223             CloseConnection(QUIC_INTERNAL_ERROR); | 221             CloseConnection(QUIC_INTERNAL_ERROR); | 
| 224             return; | 222             return; | 
| 225           } | 223           } | 
| 226           out.set_minimum_size(max_packet_size - kFramingOverhead); | 224           out.set_minimum_size(max_packet_size - kFramingOverhead); | 
| 227           next_state_ = STATE_RECV_REJ; | 225           next_state_ = STATE_RECV_REJ; | 
| 228           DVLOG(1) << "Client: Sending " << out.DebugString(); |  | 
| 229           SendHandshakeMessage(out); | 226           SendHandshakeMessage(out); | 
| 230           return; | 227           return; | 
| 231         } | 228         } | 
| 232         session()->config()->ToHandshakeMessage(&out); | 229         session()->config()->ToHandshakeMessage(&out); | 
| 233         error = crypto_config_->FillClientHello( | 230         error = crypto_config_->FillClientHello( | 
| 234             server_id_, | 231             server_id_, | 
| 235             session()->connection()->connection_id(), | 232             session()->connection()->connection_id(), | 
| 236             session()->connection()->supported_versions().front(), | 233             session()->connection()->supported_versions().front(), | 
| 237             cached, | 234             cached, | 
| 238             session()->connection()->clock()->WallNow(), | 235             session()->connection()->clock()->WallNow(), | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 249           return; | 246           return; | 
| 250         } | 247         } | 
| 251         // TODO(wtc): a temporary change to measure the performance penalty of | 248         // TODO(wtc): a temporary change to measure the performance penalty of | 
| 252         // pooling connections less often if channel ID is used. | 249         // pooling connections less often if channel ID is used. | 
| 253         // channel_id_sent_ = (channel_id_key_.get() != NULL); | 250         // channel_id_sent_ = (channel_id_key_.get() != NULL); | 
| 254         if (cached->proof_verify_details()) { | 251         if (cached->proof_verify_details()) { | 
| 255           client_session()->OnProofVerifyDetailsAvailable( | 252           client_session()->OnProofVerifyDetailsAvailable( | 
| 256               *cached->proof_verify_details()); | 253               *cached->proof_verify_details()); | 
| 257         } | 254         } | 
| 258         next_state_ = STATE_RECV_SHLO; | 255         next_state_ = STATE_RECV_SHLO; | 
| 259         DVLOG(1) << "Client: Sending " << out.DebugString(); |  | 
| 260         SendHandshakeMessage(out); | 256         SendHandshakeMessage(out); | 
| 261         // Be prepared to decrypt with the new server write key. | 257         // Be prepared to decrypt with the new server write key. | 
| 262         session()->connection()->SetAlternativeDecrypter( | 258         session()->connection()->SetAlternativeDecrypter( | 
| 263             crypto_negotiated_params_.initial_crypters.decrypter.release(), | 259             crypto_negotiated_params_.initial_crypters.decrypter.release(), | 
| 264             ENCRYPTION_INITIAL, | 260             ENCRYPTION_INITIAL, | 
| 265             true /* latch once used */); | 261             true /* latch once used */); | 
| 266         // Send subsequent packets under encryption on the assumption that the | 262         // Send subsequent packets under encryption on the assumption that the | 
| 267         // server will accept the handshake. | 263         // server will accept the handshake. | 
| 268         session()->connection()->SetEncrypter( | 264         session()->connection()->SetEncrypter( | 
| 269             ENCRYPTION_INITIAL, | 265             ENCRYPTION_INITIAL, | 
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 509     } | 505     } | 
| 510   } | 506   } | 
| 511   return false; | 507   return false; | 
| 512 } | 508 } | 
| 513 | 509 | 
| 514 QuicClientSessionBase* QuicCryptoClientStream::client_session() { | 510 QuicClientSessionBase* QuicCryptoClientStream::client_session() { | 
| 515   return reinterpret_cast<QuicClientSessionBase*>(session()); | 511   return reinterpret_cast<QuicClientSessionBase*>(session()); | 
| 516 } | 512 } | 
| 517 | 513 | 
| 518 }  // namespace net | 514 }  // namespace net | 
| OLD | NEW | 
|---|