Add IsEncrypted() to ConnectionIdGeneratorInterface. This will be useful when individual connections decide to refresh CIDs. In the future, it might also be useful to determine if QUIC should disable migration or not. This CL does not add any production that invokes IsEncrypted(), so there is no risk. PiperOrigin-RevId: 995989054
diff --git a/quiche/quic/core/connection_id_generator.h b/quiche/quic/core/connection_id_generator.h index fc58c05..c150660 100644 --- a/quiche/quic/core/connection_id_generator.h +++ b/quiche/quic/core/connection_id_generator.h
@@ -11,6 +11,7 @@ #include "quiche/quic/core/quic_connection_id.h" #include "quiche/quic/core/quic_versions.h" +#include "quiche/common/platform/api/quiche_export.h" namespace quic { @@ -36,6 +37,8 @@ // Returns the length of a connection ID generated by this generator with the // specified first byte. virtual uint8_t ConnectionIdLength(uint8_t first_byte) const = 0; + // Returns true if the generator creates encrypted connection IDs. + virtual bool IsEncrypted() const = 0; virtual ~ConnectionIdGeneratorInterface() = default; };
diff --git a/quiche/quic/core/deterministic_connection_id_generator.h b/quiche/quic/core/deterministic_connection_id_generator.h index fc8f8e4..025f79b 100644 --- a/quiche/quic/core/deterministic_connection_id_generator.h +++ b/quiche/quic/core/deterministic_connection_id_generator.h
@@ -30,6 +30,7 @@ uint8_t ConnectionIdLength(uint8_t /*first_byte*/) const override { return expected_connection_id_length_; } + bool IsEncrypted() const override { return false; } private: const uint8_t expected_connection_id_length_;
diff --git a/quiche/quic/load_balancer/load_balancer_encoder.h b/quiche/quic/load_balancer/load_balancer_encoder.h index 56f575e..9fb155d 100644 --- a/quiche/quic/load_balancer/load_balancer_encoder.h +++ b/quiche/quic/load_balancer/load_balancer_encoder.h
@@ -113,7 +113,7 @@ // Returns true if there is an active configuration. virtual bool IsEncoding() const { return config_.has_value(); } // Returns true if there is an active configuration that uses encryption. - virtual bool IsEncrypted() const { + bool IsEncrypted() const override { return config_.has_value() && config_->IsEncrypted(); } virtual bool len_self_encoded() const { return len_self_encoded_; }
diff --git a/quiche/quic/test_tools/mock_connection_id_generator.h b/quiche/quic/test_tools/mock_connection_id_generator.h index 17d5c77..cc145ec 100644 --- a/quiche/quic/test_tools/mock_connection_id_generator.h +++ b/quiche/quic/test_tools/mock_connection_id_generator.h
@@ -31,6 +31,8 @@ MOCK_METHOD(uint8_t, ConnectionIdLength, (uint8_t first_byte), (const, override)); + + MOCK_METHOD(bool, IsEncrypted, (), (const, override)); }; } // namespace test