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

Side by Side Diff: net/tools/quic/stateless_rejector.cc

Issue 2338013004: Simplify lifetime management of ValidateClientHelloResultCallback::Result objects (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
« no previous file with comments | « net/tools/quic/stateless_rejector.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/tools/quic/stateless_rejector.h" 5 #include "net/tools/quic/stateless_rejector.h"
6 6
7 #include "net/quic/core/quic_crypto_server_stream.h" 7 #include "net/quic/core/quic_crypto_server_stream.h"
8 #include "net/quic/core/quic_flags.h" 8 #include "net/quic/core/quic_flags.h"
9 9
10 namespace net { 10 namespace net {
11 11
12 class StatelessRejector::ValidateCallback 12 class StatelessRejector::ValidateCallback
13 : public ValidateClientHelloResultCallback { 13 : public ValidateClientHelloResultCallback {
14 public: 14 public:
15 explicit ValidateCallback( 15 explicit ValidateCallback(
16 std::unique_ptr<StatelessRejector> rejector, 16 std::unique_ptr<StatelessRejector> rejector,
17 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb) 17 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb)
18 : rejector_(std::move(rejector)), cb_(std::move(cb)) {} 18 : rejector_(std::move(rejector)), cb_(std::move(cb)) {}
19 19
20 ~ValidateCallback() override {} 20 ~ValidateCallback() override {}
21 21
22 void RunImpl(const CryptoHandshakeMessage& client_hello, 22 void RunImpl(std::unique_ptr<Result> result,
23 const Result& result,
24 std::unique_ptr<ProofSource::Details> /* proof_source_details */) 23 std::unique_ptr<ProofSource::Details> /* proof_source_details */)
25 override { 24 override {
26 StatelessRejector* rejector_ptr = rejector_.get(); 25 StatelessRejector* rejector_ptr = rejector_.get();
27 rejector_ptr->ProcessClientHello(client_hello, result, std::move(rejector_), 26 rejector_ptr->ProcessClientHello(*result, std::move(rejector_),
28 std::move(cb_)); 27 std::move(cb_));
29 } 28 }
30 29
31 private: 30 private:
32 std::unique_ptr<StatelessRejector> rejector_; 31 std::unique_ptr<StatelessRejector> rejector_;
33 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb_; 32 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb_;
34 }; 33 };
35 34
36 StatelessRejector::StatelessRejector( 35 StatelessRejector::StatelessRejector(
37 QuicVersion version, 36 QuicVersion version,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 89
91 StatelessRejector* rejector_ptr = rejector.get(); 90 StatelessRejector* rejector_ptr = rejector.get();
92 rejector_ptr->crypto_config_->ValidateClientHello( 91 rejector_ptr->crypto_config_->ValidateClientHello(
93 rejector_ptr->chlo_, rejector_ptr->client_address_.address(), 92 rejector_ptr->chlo_, rejector_ptr->client_address_.address(),
94 rejector_ptr->server_address_.address(), rejector_ptr->version_, 93 rejector_ptr->server_address_.address(), rejector_ptr->version_,
95 rejector_ptr->clock_, &rejector_ptr->proof_, 94 rejector_ptr->clock_, &rejector_ptr->proof_,
96 new ValidateCallback(std::move(rejector), std::move(cb))); 95 new ValidateCallback(std::move(rejector), std::move(cb)));
97 } 96 }
98 97
99 void StatelessRejector::ProcessClientHello( 98 void StatelessRejector::ProcessClientHello(
100 const CryptoHandshakeMessage& client_hello,
101 const ValidateClientHelloResultCallback::Result& result, 99 const ValidateClientHelloResultCallback::Result& result,
102 std::unique_ptr<StatelessRejector> rejector, 100 std::unique_ptr<StatelessRejector> rejector,
103 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb) { 101 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb) {
104 QuicCryptoNegotiatedParameters params; 102 QuicCryptoNegotiatedParameters params;
105 DiversificationNonce diversification_nonce; 103 DiversificationNonce diversification_nonce;
106 QuicErrorCode error = crypto_config_->ProcessClientHello( 104 QuicErrorCode error = crypto_config_->ProcessClientHello(
107 result, 105 result,
108 /*reject_only=*/true, connection_id_, server_address_.address(), 106 /*reject_only=*/true, connection_id_, server_address_.address(),
109 client_address_, version_, versions_, 107 client_address_, version_, versions_,
110 /*use_stateless_rejects=*/true, server_designated_connection_id_, clock_, 108 /*use_stateless_rejects=*/true, server_designated_connection_id_, clock_,
111 random_, compressed_certs_cache_, &params, &proof_, 109 random_, compressed_certs_cache_, &params, &proof_,
112 QuicCryptoStream::CryptoMessageFramingOverhead(version_), 110 QuicCryptoStream::CryptoMessageFramingOverhead(version_),
113 chlo_packet_size_, &reply_, &diversification_nonce, &error_details_); 111 chlo_packet_size_, &reply_, &diversification_nonce, &error_details_);
114 if (error != QUIC_NO_ERROR) { 112 if (error != QUIC_NO_ERROR) {
115 error_ = error; 113 error_ = error;
116 state_ = FAILED; 114 state_ = FAILED;
117 } else if (reply_.tag() == kSREJ) { 115 } else if (reply_.tag() == kSREJ) {
118 state_ = REJECTED; 116 state_ = REJECTED;
119 } else { 117 } else {
120 state_ = ACCEPTED; 118 state_ = ACCEPTED;
121 } 119 }
122 cb->Run(std::move(rejector)); 120 cb->Run(std::move(rejector));
123 } 121 }
124 122
125 } // namespace net 123 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/stateless_rejector.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698