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

Side by Side Diff: net/quic/core/quic_crypto_server_stream.cc

Issue 2339433004: Use unique_ptrs to manage callback lifetimes in some QUIC code (Closed)
Patch Set: Created 4 years, 3 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
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/core/quic_crypto_server_stream.h" 5 #include "net/quic/core/quic_crypto_server_stream.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "crypto/secure_hash.h" 10 #include "crypto/secure_hash.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 // does not allow for clients to send multiple handshake messages 108 // does not allow for clients to send multiple handshake messages
109 // before the server has a chance to respond. 109 // before the server has a chance to respond.
110 CloseConnectionWithDetails( 110 CloseConnectionWithDetails(
111 QUIC_CRYPTO_MESSAGE_WHILE_VALIDATING_CLIENT_HELLO, 111 QUIC_CRYPTO_MESSAGE_WHILE_VALIDATING_CLIENT_HELLO,
112 "Unexpected handshake message while processing CHLO"); 112 "Unexpected handshake message while processing CHLO");
113 return; 113 return;
114 } 114 }
115 115
116 CryptoUtils::HashHandshakeMessage(message, &chlo_hash_); 116 CryptoUtils::HashHandshakeMessage(message, &chlo_hash_);
117 117
118 validate_client_hello_cb_ = new ValidateCallback(this); 118 std::unique_ptr<ValidateCallback> cb(new ValidateCallback(this));
119 validate_client_hello_cb_ = cb.get();
119 crypto_config_->ValidateClientHello( 120 crypto_config_->ValidateClientHello(
120 message, session()->connection()->peer_address().address(), 121 message, session()->connection()->peer_address().address(),
121 session()->connection()->self_address().address(), version(), 122 session()->connection()->self_address().address(), version(),
122 session()->connection()->clock(), &crypto_proof_, 123 session()->connection()->clock(), &crypto_proof_, std::move(cb));
123 validate_client_hello_cb_);
124 } 124 }
125 125
126 void QuicCryptoServerStream::FinishProcessingHandshakeMessage( 126 void QuicCryptoServerStream::FinishProcessingHandshakeMessage(
127 const ValidateClientHelloResultCallback::Result& result, 127 const ValidateClientHelloResultCallback::Result& result,
128 std::unique_ptr<ProofSource::Details> details) { 128 std::unique_ptr<ProofSource::Details> details) {
129 const CryptoHandshakeMessage& message = result.client_hello; 129 const CryptoHandshakeMessage& message = result.client_hello;
130 130
131 // Clear the callback that got us here. 131 // Clear the callback that got us here.
132 DCHECK(validate_client_hello_cb_ != nullptr); 132 DCHECK(validate_client_hello_cb_ != nullptr);
133 validate_client_hello_cb_ = nullptr; 133 validate_client_hello_cb_ = nullptr;
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 void QuicCryptoServerStream::OverrideQuicConfigDefaults(QuicConfig* config) {} 421 void QuicCryptoServerStream::OverrideQuicConfigDefaults(QuicConfig* config) {}
422 422
423 QuicCryptoServerStream::ValidateCallback::ValidateCallback( 423 QuicCryptoServerStream::ValidateCallback::ValidateCallback(
424 QuicCryptoServerStream* parent) 424 QuicCryptoServerStream* parent)
425 : parent_(parent) {} 425 : parent_(parent) {}
426 426
427 void QuicCryptoServerStream::ValidateCallback::Cancel() { 427 void QuicCryptoServerStream::ValidateCallback::Cancel() {
428 parent_ = nullptr; 428 parent_ = nullptr;
429 } 429 }
430 430
431 void QuicCryptoServerStream::ValidateCallback::RunImpl( 431 void QuicCryptoServerStream::ValidateCallback::Run(
432 std::unique_ptr<Result> result, 432 std::unique_ptr<Result> result,
433 std::unique_ptr<ProofSource::Details> details) { 433 std::unique_ptr<ProofSource::Details> details) {
434 if (parent_ != nullptr) { 434 if (parent_ != nullptr) {
435 parent_->FinishProcessingHandshakeMessage(*result, std::move(details)); 435 parent_->FinishProcessingHandshakeMessage(*result, std::move(details));
436 } 436 }
437 } 437 }
438 438
439 QuicConnectionId QuicCryptoServerStream::GenerateConnectionIdForReject( 439 QuicConnectionId QuicCryptoServerStream::GenerateConnectionIdForReject(
440 bool use_stateless_rejects) { 440 bool use_stateless_rejects) {
441 if (!use_stateless_rejects) { 441 if (!use_stateless_rejects) {
442 return 0; 442 return 0;
443 } 443 }
444 return helper_->GenerateConnectionIdForReject( 444 return helper_->GenerateConnectionIdForReject(
445 session()->connection()->connection_id()); 445 session()->connection()->connection_id());
446 } 446 }
447 447
448 } // namespace net 448 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698