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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/quic/stateless_rejector.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/quic/stateless_rejector.cc
diff --git a/net/tools/quic/stateless_rejector.cc b/net/tools/quic/stateless_rejector.cc
index 1e121eb065b6559152cf9a7229d7bbe305e6dfb9..6cf95304d90aa96d4d14cb383a8d7a352fd85b4a 100644
--- a/net/tools/quic/stateless_rejector.cc
+++ b/net/tools/quic/stateless_rejector.cc
@@ -97,24 +97,59 @@ void StatelessRejector::Process(std::unique_ptr<StatelessRejector> rejector,
new ValidateCallback(std::move(rejector), std::move(done_cb))));
}
+class StatelessRejector::ProcessClientHelloCallback
+ : public ProcessClientHelloResultCallback {
+ public:
+ ProcessClientHelloCallback(
+ std::unique_ptr<StatelessRejector> rejector,
+ std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb)
+ : rejector_(std::move(rejector)), done_cb_(std::move(done_cb)) {}
+
+ void Run(
+ QuicErrorCode error,
+ const std::string& error_details,
+ std::unique_ptr<CryptoHandshakeMessage> message,
+ std::unique_ptr<DiversificationNonce> diversification_nonce) override {
+ StatelessRejector* rejector_ptr = rejector_.get();
+ rejector_ptr->ProcessClientHelloDone(
+ error, error_details, std::move(message), std::move(rejector_),
+ std::move(done_cb_));
+ }
+
+ private:
+ std::unique_ptr<StatelessRejector> rejector_;
+ std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb_;
+};
+
void StatelessRejector::ProcessClientHello(
scoped_refptr<ValidateClientHelloResultCallback::Result> result,
std::unique_ptr<StatelessRejector> rejector,
std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb) {
- QuicCryptoNegotiatedParameters params;
- DiversificationNonce diversification_nonce;
- QuicErrorCode error = crypto_config_->ProcessClientHello(
+ std::unique_ptr<ProcessClientHelloCallback> cb(
+ new ProcessClientHelloCallback(std::move(rejector), std::move(done_cb)));
+ crypto_config_->ProcessClientHello(
result,
/*reject_only=*/true, connection_id_, server_address_.address(),
client_address_, version_, versions_,
/*use_stateless_rejects=*/true, server_designated_connection_id_, clock_,
- random_, compressed_certs_cache_, &params, &proof_,
+ random_, compressed_certs_cache_, &params_, &proof_,
QuicCryptoStream::CryptoMessageFramingOverhead(version_),
- chlo_packet_size_, &reply_, &diversification_nonce, &error_details_);
+ chlo_packet_size_, std::move(cb));
+}
+
+void StatelessRejector::ProcessClientHelloDone(
+ QuicErrorCode error,
+ const std::string& error_details,
+ std::unique_ptr<CryptoHandshakeMessage> message,
+ std::unique_ptr<StatelessRejector> rejector,
+ std::unique_ptr<StatelessRejector::ProcessDoneCallback> done_cb) {
+ reply_ = std::move(message);
+
if (error != QUIC_NO_ERROR) {
error_ = error;
+ error_details_ = error_details;
state_ = FAILED;
- } else if (reply_.tag() == kSREJ) {
+ } else if (reply_->tag() == kSREJ) {
state_ = REJECTED;
} else {
state_ = ACCEPTED;
« 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