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

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

Issue 2334363002: Landing Recent QUIC changes until Sat Sep 10 00:32:41 (Closed)
Patch Set: Revase 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 Run(std::unique_ptr<Result> result,
23 const Result& result, 23 std::unique_ptr<ProofSource::Details> /* proof_source_details */)
24 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 if (rejector->state() != UNKNOWN) { 85 if (rejector->state() != UNKNOWN) {
87 cb->Run(std::move(rejector)); 86 cb->Run(std::move(rejector));
88 return; 87 return;
89 } 88 }
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 std::unique_ptr<ValidateCallback>(
96 new ValidateCallback(std::move(rejector), std::move(cb))));
97 } 97 }
98 98
99 void StatelessRejector::ProcessClientHello( 99 void StatelessRejector::ProcessClientHello(
100 const CryptoHandshakeMessage& client_hello,
101 const ValidateClientHelloResultCallback::Result& result, 100 const ValidateClientHelloResultCallback::Result& result,
102 std::unique_ptr<StatelessRejector> rejector, 101 std::unique_ptr<StatelessRejector> rejector,
103 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb) { 102 std::unique_ptr<StatelessRejector::ProcessDoneCallback> cb) {
104 QuicCryptoNegotiatedParameters params; 103 QuicCryptoNegotiatedParameters params;
105 DiversificationNonce diversification_nonce; 104 DiversificationNonce diversification_nonce;
106 QuicErrorCode error = crypto_config_->ProcessClientHello( 105 QuicErrorCode error = crypto_config_->ProcessClientHello(
107 result, 106 result,
108 /*reject_only=*/true, connection_id_, server_address_.address(), 107 /*reject_only=*/true, connection_id_, server_address_.address(),
109 client_address_, version_, versions_, 108 client_address_, version_, versions_,
110 /*use_stateless_rejects=*/true, server_designated_connection_id_, clock_, 109 /*use_stateless_rejects=*/true, server_designated_connection_id_, clock_,
111 random_, compressed_certs_cache_, &params, &proof_, 110 random_, compressed_certs_cache_, &params, &proof_,
112 QuicCryptoStream::CryptoMessageFramingOverhead(version_), 111 QuicCryptoStream::CryptoMessageFramingOverhead(version_),
113 chlo_packet_size_, &reply_, &diversification_nonce, &error_details_); 112 chlo_packet_size_, &reply_, &diversification_nonce, &error_details_);
114 if (error != QUIC_NO_ERROR) { 113 if (error != QUIC_NO_ERROR) {
115 error_ = error; 114 error_ = error;
116 state_ = FAILED; 115 state_ = FAILED;
117 } else if (reply_.tag() == kSREJ) { 116 } else if (reply_.tag() == kSREJ) {
118 state_ = REJECTED; 117 state_ = REJECTED;
119 } else { 118 } else {
120 state_ = ACCEPTED; 119 state_ = ACCEPTED;
121 } 120 }
122 cb->Run(std::move(rejector)); 121 cb->Run(std::move(rejector));
123 } 122 }
124 123
125 } // namespace net 124 } // 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