Renames NoopHeaderValidator to MinimalHeaderValidator in oghttp2. PiperOrigin-RevId: 587020916
diff --git a/build/source_list.bzl b/build/source_list.bzl index ade85e5..6f3a955 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -67,7 +67,7 @@ "http2/adapter/http2_session.h", "http2/adapter/http2_util.h", "http2/adapter/http2_visitor_interface.h", - "http2/adapter/noop_header_validator.h", + "http2/adapter/minimal_header_validator.h", "http2/adapter/oghttp2_adapter.h", "http2/adapter/oghttp2_session.h", "http2/adapter/oghttp2_util.h", @@ -421,7 +421,7 @@ "http2/adapter/header_validator.cc", "http2/adapter/http2_protocol.cc", "http2/adapter/http2_util.cc", - "http2/adapter/noop_header_validator.cc", + "http2/adapter/minimal_header_validator.cc", "http2/adapter/oghttp2_adapter.cc", "http2/adapter/oghttp2_session.cc", "http2/adapter/oghttp2_util.cc", @@ -1085,7 +1085,7 @@ "common/wire_serialization_test.cc", "http2/adapter/event_forwarder_test.cc", "http2/adapter/header_validator_test.cc", - "http2/adapter/noop_header_validator_test.cc", + "http2/adapter/minimal_header_validator_test.cc", "http2/adapter/oghttp2_adapter_metadata_test.cc", "http2/adapter/oghttp2_adapter_test.cc", "http2/adapter/oghttp2_session_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index c514ab2..c76364a 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -67,7 +67,7 @@ "src/quiche/http2/adapter/http2_session.h", "src/quiche/http2/adapter/http2_util.h", "src/quiche/http2/adapter/http2_visitor_interface.h", - "src/quiche/http2/adapter/noop_header_validator.h", + "src/quiche/http2/adapter/minimal_header_validator.h", "src/quiche/http2/adapter/oghttp2_adapter.h", "src/quiche/http2/adapter/oghttp2_session.h", "src/quiche/http2/adapter/oghttp2_util.h", @@ -421,7 +421,7 @@ "src/quiche/http2/adapter/header_validator.cc", "src/quiche/http2/adapter/http2_protocol.cc", "src/quiche/http2/adapter/http2_util.cc", - "src/quiche/http2/adapter/noop_header_validator.cc", + "src/quiche/http2/adapter/minimal_header_validator.cc", "src/quiche/http2/adapter/oghttp2_adapter.cc", "src/quiche/http2/adapter/oghttp2_session.cc", "src/quiche/http2/adapter/oghttp2_util.cc", @@ -1086,7 +1086,7 @@ "src/quiche/common/wire_serialization_test.cc", "src/quiche/http2/adapter/event_forwarder_test.cc", "src/quiche/http2/adapter/header_validator_test.cc", - "src/quiche/http2/adapter/noop_header_validator_test.cc", + "src/quiche/http2/adapter/minimal_header_validator_test.cc", "src/quiche/http2/adapter/oghttp2_adapter_metadata_test.cc", "src/quiche/http2/adapter/oghttp2_adapter_test.cc", "src/quiche/http2/adapter/oghttp2_session_test.cc",
diff --git a/build/source_list.json b/build/source_list.json index 68779fa..fb0d605 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -66,7 +66,7 @@ "quiche/http2/adapter/http2_session.h", "quiche/http2/adapter/http2_util.h", "quiche/http2/adapter/http2_visitor_interface.h", - "quiche/http2/adapter/noop_header_validator.h", + "quiche/http2/adapter/minimal_header_validator.h", "quiche/http2/adapter/oghttp2_adapter.h", "quiche/http2/adapter/oghttp2_session.h", "quiche/http2/adapter/oghttp2_util.h", @@ -420,7 +420,7 @@ "quiche/http2/adapter/header_validator.cc", "quiche/http2/adapter/http2_protocol.cc", "quiche/http2/adapter/http2_util.cc", - "quiche/http2/adapter/noop_header_validator.cc", + "quiche/http2/adapter/minimal_header_validator.cc", "quiche/http2/adapter/oghttp2_adapter.cc", "quiche/http2/adapter/oghttp2_session.cc", "quiche/http2/adapter/oghttp2_util.cc", @@ -1085,7 +1085,7 @@ "quiche/common/wire_serialization_test.cc", "quiche/http2/adapter/event_forwarder_test.cc", "quiche/http2/adapter/header_validator_test.cc", - "quiche/http2/adapter/noop_header_validator_test.cc", + "quiche/http2/adapter/minimal_header_validator_test.cc", "quiche/http2/adapter/oghttp2_adapter_metadata_test.cc", "quiche/http2/adapter/oghttp2_adapter_test.cc", "quiche/http2/adapter/oghttp2_session_test.cc",
diff --git a/quiche/http2/adapter/noop_header_validator.cc b/quiche/http2/adapter/minimal_header_validator.cc similarity index 83% rename from quiche/http2/adapter/noop_header_validator.cc rename to quiche/http2/adapter/minimal_header_validator.cc index b687df5..5b10fc2 100644 --- a/quiche/http2/adapter/noop_header_validator.cc +++ b/quiche/http2/adapter/minimal_header_validator.cc
@@ -1,4 +1,4 @@ -#include "quiche/http2/adapter/noop_header_validator.h" +#include "quiche/http2/adapter/minimal_header_validator.h" #include "absl/strings/escaping.h" #include "absl/strings/string_view.h" @@ -14,14 +14,14 @@ } // namespace -void NoopHeaderValidator::StartHeaderBlock() { +void MinimalHeaderValidator::StartHeaderBlock() { HeaderValidatorBase::StartHeaderBlock(); has_method_ = false; has_scheme_ = false; has_path_ = false; } -HeaderValidatorBase::HeaderStatus NoopHeaderValidator::ValidateSingleHeader( +HeaderValidatorBase::HeaderStatus MinimalHeaderValidator::ValidateSingleHeader( absl::string_view key, absl::string_view value) { if (key.empty()) { return HEADER_FIELD_INVALID; @@ -45,7 +45,7 @@ return HEADER_OK; } -bool NoopHeaderValidator::FinishHeaderBlock(HeaderType type) { +bool MinimalHeaderValidator::FinishHeaderBlock(HeaderType type) { if (type == HeaderType::REQUEST) { return has_method_ && has_scheme_ && has_path_; } else if (type == HeaderType::RESPONSE || type == HeaderType::RESPONSE_100) {
diff --git a/quiche/http2/adapter/noop_header_validator.h b/quiche/http2/adapter/minimal_header_validator.h similarity index 61% rename from quiche/http2/adapter/noop_header_validator.h rename to quiche/http2/adapter/minimal_header_validator.h index ef78027..5719b55 100644 --- a/quiche/http2/adapter/noop_header_validator.h +++ b/quiche/http2/adapter/minimal_header_validator.h
@@ -1,5 +1,5 @@ -#ifndef QUICHE_HTTP2_ADAPTER_NOOP_HEADER_VALIDATOR_H_ -#define QUICHE_HTTP2_ADAPTER_NOOP_HEADER_VALIDATOR_H_ +#ifndef QUICHE_HTTP2_ADAPTER_MINIMAL_HEADER_VALIDATOR_H_ +#define QUICHE_HTTP2_ADAPTER_MINIMAL_HEADER_VALIDATOR_H_ #include "absl/strings/string_view.h" #include "quiche/http2/adapter/header_validator_base.h" @@ -8,10 +8,10 @@ namespace http2 { namespace adapter { -// A validator that does not actually perform any validation. -class QUICHE_EXPORT NoopHeaderValidator : public HeaderValidatorBase { +// A validator that performs the minimum validation necessary. +class QUICHE_EXPORT MinimalHeaderValidator : public HeaderValidatorBase { public: - NoopHeaderValidator() = default; + MinimalHeaderValidator() = default; void StartHeaderBlock() override; HeaderStatus ValidateSingleHeader(absl::string_view key, @@ -28,4 +28,4 @@ } // namespace adapter } // namespace http2 -#endif // QUICHE_HTTP2_ADAPTER_NOOP_HEADER_VALIDATOR_H_ +#endif // QUICHE_HTTP2_ADAPTER_MINIMAL_HEADER_VALIDATOR_H_
diff --git a/quiche/http2/adapter/noop_header_validator_test.cc b/quiche/http2/adapter/minimal_header_validator_test.cc similarity index 68% rename from quiche/http2/adapter/noop_header_validator_test.cc rename to quiche/http2/adapter/minimal_header_validator_test.cc index a6dc041..2e33012 100644 --- a/quiche/http2/adapter/noop_header_validator_test.cc +++ b/quiche/http2/adapter/minimal_header_validator_test.cc
@@ -1,4 +1,4 @@ -#include "quiche/http2/adapter/noop_header_validator.h" +#include "quiche/http2/adapter/minimal_header_validator.h" #include <optional> #include <utility> @@ -20,8 +20,8 @@ {":path", "/foo"}, {":scheme", "https"}}; -TEST(NoopHeaderValidatorTest, EmptyHeaderBlock) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, EmptyHeaderBlock) { + MinimalHeaderValidator v; v.StartHeaderBlock(); EXPECT_FALSE(v.FinishHeaderBlock(HeaderType::REQUEST)); @@ -29,33 +29,34 @@ EXPECT_FALSE(v.FinishHeaderBlock(HeaderType::RESPONSE)); } -TEST(NoopHeaderValidatorTest, HeaderNameEmpty) { - NoopHeaderValidator v; - NoopHeaderValidator::HeaderStatus status = +TEST(MinimalHeaderValidatorTest, HeaderNameEmpty) { + MinimalHeaderValidator v; + MinimalHeaderValidator::HeaderStatus status = v.ValidateSingleHeader("", "value"); - EXPECT_EQ(NoopHeaderValidator::HEADER_FIELD_INVALID, status); + EXPECT_EQ(MinimalHeaderValidator::HEADER_FIELD_INVALID, status); } -TEST(NoopHeaderValidatorTest, HeaderValueEmpty) { - NoopHeaderValidator v; - NoopHeaderValidator::HeaderStatus status = v.ValidateSingleHeader("name", ""); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, status); +TEST(MinimalHeaderValidatorTest, HeaderValueEmpty) { + MinimalHeaderValidator v; + MinimalHeaderValidator::HeaderStatus status = + v.ValidateSingleHeader("name", ""); + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, status); } -TEST(NoopHeaderValidatorTest, ExceedsMaxSize) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ExceedsMaxSize) { + MinimalHeaderValidator v; v.SetMaxFieldSize(64u); - NoopHeaderValidator::HeaderStatus status = + MinimalHeaderValidator::HeaderStatus status = v.ValidateSingleHeader("name", "value"); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, status); + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, status); status = v.ValidateSingleHeader( "name2", "Antidisestablishmentariansism is supercalifragilisticexpialodocious."); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, status); + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, status); } -TEST(NoopHeaderValidatorTest, FewInvalidNameChars) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, FewInvalidNameChars) { + MinimalHeaderValidator v; char pseudo_name[] = ":met hod"; char name[] = "na me"; for (int i = std::numeric_limits<char>::min(); @@ -76,8 +77,8 @@ } } -TEST(NoopHeaderValidatorTest, FewInvalidValueChars) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, FewInvalidValueChars) { + MinimalHeaderValidator v; char value[] = "val ue"; for (int i = std::numeric_limits<char>::min(); i < std::numeric_limits<char>::max(); ++i) { @@ -92,33 +93,33 @@ } } -TEST(NoopHeaderValidatorTest, AnyStatusIsValid) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, AnyStatusIsValid) { + MinimalHeaderValidator v; for (HeaderType type : {HeaderType::RESPONSE, HeaderType::RESPONSE_100}) { v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "bar")); EXPECT_TRUE(v.FinishHeaderBlock(type)); v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "10")); EXPECT_TRUE(v.FinishHeaderBlock(type)); v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "9000")); EXPECT_TRUE(v.FinishHeaderBlock(type)); v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "400")); EXPECT_TRUE(v.FinishHeaderBlock(type)); } } -TEST(NoopHeaderValidatorTest, FewInvalidAuthorityChars) { +TEST(MinimalHeaderValidatorTest, FewInvalidAuthorityChars) { char value[] = "ho st.example.com"; for (int i = std::numeric_limits<char>::min(); i < std::numeric_limits<char>::max(); ++i) { @@ -130,43 +131,43 @@ ? HeaderValidatorBase::HEADER_FIELD_INVALID : HeaderValidatorBase::HEADER_OK; for (absl::string_view key : {":authority", "host"}) { - NoopHeaderValidator v; + MinimalHeaderValidator v; v.StartHeaderBlock(); EXPECT_EQ(expected_status, v.ValidateSingleHeader(key, sv)); } } } -TEST(NoopHeaderValidatorTest, RequestHostAndAuthority) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, RequestHostAndAuthority) { + MinimalHeaderValidator v; v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } // If both "host" and ":authority" have the same value, validation succeeds. - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("host", "www.foo.com")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } // If "host" and ":authority" have different values, validation still // succeeds. - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("host", "www.bar.com")); } -TEST(NoopHeaderValidatorTest, RequestPseudoHeaders) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, RequestPseudoHeaders) { + MinimalHeaderValidator v; for (Header to_skip : kSampleRequestPseudoheaders) { v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { if (to_add != to_skip) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } @@ -182,7 +183,7 @@ // When all pseudo-headers are present, final validation will succeed. v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); @@ -191,10 +192,10 @@ // succeed. v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":extra", "blah")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); @@ -202,10 +203,10 @@ for (Header to_repeat : kSampleRequestPseudoheaders) { v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); if (to_add == to_repeat) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } @@ -213,27 +214,27 @@ } } -TEST(NoopHeaderValidatorTest, WebsocketPseudoHeaders) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, WebsocketPseudoHeaders) { + MinimalHeaderValidator v; v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":protocol", "websocket")); // Validation always succeeds. EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); - // This is a no-op for NoopHeaderValidator. + // This is a no-op for MinimalHeaderValidator. v.SetAllowExtendedConnect(); v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":protocol", "websocket")); // The validator does not check for a CONNECT request. EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); @@ -241,30 +242,30 @@ v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { if (to_add.first == ":method") { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, "CONNECT")); } else { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":protocol", "websocket")); // After allowing the method, `:protocol` is acepted for CONNECT requests. EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); } -TEST(NoopHeaderValidatorTest, AsteriskPathPseudoHeader) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, AsteriskPathPseudoHeader) { + MinimalHeaderValidator v; // The validator does not perform any path validation. v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { if (to_add.first == ":path") { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, "*")); } else { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } @@ -273,30 +274,30 @@ v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { if (to_add.first == ":path") { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, "*")); } else if (to_add.first == ":method") { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, "OPTIONS")); } else { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); } -TEST(NoopHeaderValidatorTest, InvalidPathPseudoHeader) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, InvalidPathPseudoHeader) { + MinimalHeaderValidator v; // An empty path is allowed. v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { if (to_add.first == ":path") { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, "")); } else { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } @@ -306,237 +307,237 @@ v.StartHeaderBlock(); for (Header to_add : kSampleRequestPseudoheaders) { if (to_add.first == ":path") { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, "shawarma")); } else { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(to_add.first, to_add.second)); } } EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::REQUEST)); } -TEST(NoopHeaderValidatorTest, ResponsePseudoHeaders) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ResponsePseudoHeaders) { + MinimalHeaderValidator v; for (HeaderType type : {HeaderType::RESPONSE, HeaderType::RESPONSE_100}) { // When `:status` is missing, validation fails. v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("foo", "bar")); EXPECT_FALSE(v.FinishHeaderBlock(type)); // When all pseudo-headers are present, final validation succeeds. v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "199")); EXPECT_TRUE(v.FinishHeaderBlock(type)); EXPECT_EQ("199", v.status_header()); // When `:status` is repeated, validation succeeds. v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "199")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "299")); EXPECT_TRUE(v.FinishHeaderBlock(type)); // When an extra pseudo-header is present, final validation succeeds. v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "199")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":extra", "blorp")); EXPECT_TRUE(v.FinishHeaderBlock(type)); } } -TEST(NoopHeaderValidatorTest, ResponseWithHost) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ResponseWithHost) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "200")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("host", "myserver.com")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE)); } -TEST(NoopHeaderValidatorTest, Response204) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, Response204) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "204")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("x-content", "is not present")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE)); } -TEST(NoopHeaderValidatorTest, ResponseWithMultipleIdenticalContentLength) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ResponseWithMultipleIdenticalContentLength) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "200")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "13")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "13")); } -TEST(NoopHeaderValidatorTest, ResponseWithMultipleDifferingContentLength) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ResponseWithMultipleDifferingContentLength) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "200")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "13")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "17")); } -TEST(NoopHeaderValidatorTest, Response204WithContentLengthZero) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, Response204WithContentLengthZero) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "204")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("x-content", "is not present")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "0")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE)); } -TEST(NoopHeaderValidatorTest, Response204WithContentLength) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, Response204WithContentLength) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "204")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("x-content", "is not present")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "1")); } -TEST(NoopHeaderValidatorTest, Response100) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, Response100) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "100")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("x-content", "is not present")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE)); } -TEST(NoopHeaderValidatorTest, Response100WithContentLengthZero) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, Response100WithContentLengthZero) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "100")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("x-content", "is not present")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "0")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE)); } -TEST(NoopHeaderValidatorTest, Response100WithContentLength) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, Response100WithContentLength) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "100")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("x-content", "is not present")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "1")); } -TEST(NoopHeaderValidatorTest, ResponseTrailerPseudoHeaders) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ResponseTrailerPseudoHeaders) { + MinimalHeaderValidator v; // When no pseudo-headers are present, validation will succeed. v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("foo", "bar")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE_TRAILER)); // When a pseudo-header is present, validation will succeed. v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(":status", "200")); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("foo", "bar")); EXPECT_TRUE(v.FinishHeaderBlock(HeaderType::RESPONSE_TRAILER)); } -TEST(NoopHeaderValidatorTest, ValidContentLength) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, ValidContentLength) { + MinimalHeaderValidator v; v.StartHeaderBlock(); EXPECT_EQ(v.content_length(), std::nullopt); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "41")); EXPECT_EQ(v.content_length(), std::nullopt); v.StartHeaderBlock(); EXPECT_EQ(v.content_length(), std::nullopt); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "42")); EXPECT_EQ(v.content_length(), std::nullopt); } -TEST(NoopHeaderValidatorTest, InvalidContentLength) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, InvalidContentLength) { + MinimalHeaderValidator v; v.StartHeaderBlock(); EXPECT_EQ(v.content_length(), std::nullopt); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "")); EXPECT_EQ(v.content_length(), std::nullopt); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "nan")); EXPECT_EQ(v.content_length(), std::nullopt); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "-42")); EXPECT_EQ(v.content_length(), std::nullopt); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("content-length", "42")); EXPECT_EQ(v.content_length(), std::nullopt); } -TEST(NoopHeaderValidatorTest, TeHeader) { - NoopHeaderValidator v; +TEST(MinimalHeaderValidatorTest, TeHeader) { + MinimalHeaderValidator v; v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("te", "trailers")); v.StartHeaderBlock(); - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader("te", "trailers, deflate")); } -TEST(NoopHeaderValidatorTest, ConnectionSpecificHeaders) { +TEST(MinimalHeaderValidatorTest, ConnectionSpecificHeaders) { const std::vector<Header> connection_headers = { {"connection", "keep-alive"}, {"proxy-connection", "keep-alive"}, {"keep-alive", "timeout=42"}, {"transfer-encoding", "chunked"}, {"upgrade", "h2c"}, }; for (const auto& [connection_key, connection_value] : connection_headers) { - NoopHeaderValidator v; + MinimalHeaderValidator v; v.StartHeaderBlock(); for (const auto& [sample_key, sample_value] : kSampleRequestPseudoheaders) { - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(sample_key, sample_value)); } - EXPECT_EQ(NoopHeaderValidator::HEADER_OK, + EXPECT_EQ(MinimalHeaderValidator::HEADER_OK, v.ValidateSingleHeader(connection_key, connection_value)); } }
diff --git a/quiche/http2/adapter/oghttp2_adapter_test.cc b/quiche/http2/adapter/oghttp2_adapter_test.cc index d077051..dea9a00 100644 --- a/quiche/http2/adapter/oghttp2_adapter_test.cc +++ b/quiche/http2/adapter/oghttp2_adapter_test.cc
@@ -7962,9 +7962,9 @@ SpdyFrameType::WINDOW_UPDATE})); } -// Verifies that NoopHeaderValidator allows several header combinations that +// Verifies that MinimalHeaderValidator allows several header combinations that // would otherwise be invalid. -TEST(OgHttp2AdapterTest, NoopHeaderValidatorTest) { +TEST(OgHttp2AdapterTest, MinimalHeaderValidatorTest) { DataSavingVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer;
diff --git a/quiche/http2/adapter/oghttp2_session.cc b/quiche/http2/adapter/oghttp2_session.cc index d91d9dc..57df0cf 100644 --- a/quiche/http2/adapter/oghttp2_session.cc +++ b/quiche/http2/adapter/oghttp2_session.cc
@@ -13,7 +13,7 @@ #include "quiche/http2/adapter/http2_protocol.h" #include "quiche/http2/adapter/http2_util.h" #include "quiche/http2/adapter/http2_visitor_interface.h" -#include "quiche/http2/adapter/noop_header_validator.h" +#include "quiche/http2/adapter/minimal_header_validator.h" #include "quiche/http2/adapter/oghttp2_util.h" #include "quiche/common/quiche_callbacks.h" #include "quiche/spdy/core/spdy_protocol.h" @@ -210,8 +210,8 @@ validator_->SetAllowDifferentHostAndAuthority(); } } else { - QUICHE_VLOG(2) << "instantiating noop header validator"; - validator_ = std::make_unique<NoopHeaderValidator>(); + QUICHE_VLOG(2) << "instantiating minimal header validator"; + validator_ = std::make_unique<MinimalHeaderValidator>(); } }