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

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

Issue 2397513002: Conversion of a QUIC method to an async signature and resulting fallout. No functional change inten… (Closed)
Patch Set: Add NET_EXPORT_PRIVATE Created 4 years, 2 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_bug_tracker.h" 7 #include "net/quic/core/quic_bug_tracker.h"
8 #include "net/quic/core/quic_crypto_server_stream.h" 8 #include "net/quic/core/quic_crypto_server_stream.h"
9 #include "net/quic/core/quic_flags.h" 9 #include "net/quic/core/quic_flags.h"
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 90
91 StatelessRejector* rejector_ptr = rejector.get(); 91 StatelessRejector* rejector_ptr = rejector.get();
92 rejector_ptr->crypto_config_->ValidateClientHello( 92 rejector_ptr->crypto_config_->ValidateClientHello(
93 rejector_ptr->chlo_, rejector_ptr->client_address_.address(), 93 rejector_ptr->chlo_, rejector_ptr->client_address_.address(),
94 rejector_ptr->server_address_.address(), rejector_ptr->version_, 94 rejector_ptr->server_address_.address(), rejector_ptr->version_,
95 rejector_ptr->clock_, &rejector_ptr->proof_, 95 rejector_ptr->clock_, &rejector_ptr->proof_,
96 std::unique_ptr<ValidateCallback>( 96 std::unique_ptr<ValidateCallback>(
97 new ValidateCallback(std::move(rejector), std::move(done_cb)))); 97 new ValidateCallback(std::move(rejector), std::move(done_cb))));
98 } 98 }
99 99
100 class StatelessRejector::ProcessClientHelloCallback
101 : public ProcessClientHelloResultCallback {
102 public:
103 ProcessClientHelloCallback(
104 std::unique_ptr<StatelessRejector> rejector,
105 std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb)
106 : rejector_(std::move(rejector)), done_cb_(std::move(done_cb)) {}
107
108 void Run(
109 QuicErrorCode error,
110 const std::string& error_details,
111 std::unique_ptr<CryptoHandshakeMessage> message,
112 std::unique_ptr<DiversificationNonce> diversification_nonce) override {
113 StatelessRejector* rejector_ptr = rejector_.get();
114 rejector_ptr->ProcessClientHelloDone(
115 error, error_details, std::move(message), std::move(rejector_),
116 std::move(done_cb_));
117 }
118
119 private:
120 std::unique_ptr<StatelessRejector> rejector_;
121 std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb_;
122 };
123
100 void StatelessRejector::ProcessClientHello( 124 void StatelessRejector::ProcessClientHello(
101 scoped_refptr<ValidateClientHelloResultCallback::Result> result, 125 scoped_refptr<ValidateClientHelloResultCallback::Result> result,
102 std::unique_ptr<StatelessRejector> rejector, 126 std::unique_ptr<StatelessRejector> rejector,
103 std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb) { 127 std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb) {
104 QuicCryptoNegotiatedParameters params; 128 std::unique_ptr<ProcessClientHelloCallback> cb(
105 DiversificationNonce diversification_nonce; 129 new ProcessClientHelloCallback(std::move(rejector), std::move(done_cb)));
106 QuicErrorCode error = crypto_config_->ProcessClientHello( 130 crypto_config_->ProcessClientHello(
107 result, 131 result,
108 /*reject_only=*/true, connection_id_, server_address_.address(), 132 /*reject_only=*/true, connection_id_, server_address_.address(),
109 client_address_, version_, versions_, 133 client_address_, version_, versions_,
110 /*use_stateless_rejects=*/true, server_designated_connection_id_, clock_, 134 /*use_stateless_rejects=*/true, server_designated_connection_id_, clock_,
111 random_, compressed_certs_cache_, &params, &proof_, 135 random_, compressed_certs_cache_, &params_, &proof_,
112 QuicCryptoStream::CryptoMessageFramingOverhead(version_), 136 QuicCryptoStream::CryptoMessageFramingOverhead(version_),
113 chlo_packet_size_, &reply_, &diversification_nonce, &error_details_); 137 chlo_packet_size_, std::move(cb));
138 }
139
140 void StatelessRejector::ProcessClientHelloDone(
141 QuicErrorCode error,
142 const std::string& error_details,
143 std::unique_ptr<CryptoHandshakeMessage> message,
144 std::unique_ptr<StatelessRejector> rejector,
145 std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb) {
146 reply_ = std::move(message);
147
114 if (error != QUIC_NO_ERROR) { 148 if (error != QUIC_NO_ERROR) {
115 error_ = error; 149 error_ = error;
150 error_details_ = error_details;
116 state_ = FAILED; 151 state_ = FAILED;
117 } else if (reply_.tag() == kSREJ) { 152 } else if (reply_->tag() == kSREJ) {
118 state_ = REJECTED; 153 state_ = REJECTED;
119 } else { 154 } else {
120 state_ = ACCEPTED; 155 state_ = ACCEPTED;
121 } 156 }
122 done_cb->Run(std::move(rejector)); 157 done_cb->Run(std::move(rejector));
123 } 158 }
124 159
125 } // namespace net 160 } // 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