Simplifies HeaderValidator error codes. There's no difference in practice between any of the non-OK error codes. PiperOrigin-RevId: 416328720
diff --git a/http2/adapter/header_validator.cc b/http2/adapter/header_validator.cc index 5e8ee97..321e958 100644 --- a/http2/adapter/header_validator.cc +++ b/http2/adapter/header_validator.cc
@@ -59,20 +59,20 @@ HeaderValidator::HeaderStatus HeaderValidator::ValidateSingleHeader( absl::string_view key, absl::string_view value) { if (key.empty()) { - return HEADER_NAME_EMPTY; + return HEADER_FIELD_INVALID; } const absl::string_view validated_key = key[0] == ':' ? key.substr(1) : key; if (validated_key.find_first_not_of(kHttp2HeaderNameAllowedChars) != absl::string_view::npos) { QUICHE_VLOG(2) << "invalid chars in header name: [" << absl::CEscape(validated_key) << "]"; - return HEADER_NAME_INVALID_CHAR; + return HEADER_FIELD_INVALID; } if (value.find_first_not_of(kHttp2HeaderValueAllowedChars) != absl::string_view::npos) { QUICHE_VLOG(2) << "invalid chars in header value: [" << absl::CEscape(value) << "]"; - return HEADER_VALUE_INVALID_CHAR; + return HEADER_FIELD_INVALID; } if (key[0] == ':') { if (key == ":status") { @@ -81,11 +81,11 @@ absl::string_view::npos) { QUICHE_VLOG(2) << "malformed status value: [" << absl::CEscape(value) << "]"; - return HEADER_VALUE_INVALID_CHAR; + return HEADER_FIELD_INVALID; } if (value == "101") { // Switching protocols is not allowed on a HTTP/2 stream. - return HEADER_VALUE_INVALID_STATUS; + return HEADER_FIELD_INVALID; } status_ = std::string(value); } else if (key == ":method") {
diff --git a/http2/adapter/header_validator.h b/http2/adapter/header_validator.h index ecde204..a1d27bb 100644 --- a/http2/adapter/header_validator.h +++ b/http2/adapter/header_validator.h
@@ -30,10 +30,7 @@ enum HeaderStatus { HEADER_OK, - HEADER_NAME_EMPTY, - HEADER_NAME_INVALID_CHAR, - HEADER_VALUE_INVALID_CHAR, - HEADER_VALUE_INVALID_STATUS, + HEADER_FIELD_INVALID, }; HeaderStatus ValidateSingleHeader(absl::string_view key, absl::string_view value);
diff --git a/http2/adapter/header_validator_test.cc b/http2/adapter/header_validator_test.cc index dcd92e1..35750d3 100644 --- a/http2/adapter/header_validator_test.cc +++ b/http2/adapter/header_validator_test.cc
@@ -10,7 +10,7 @@ TEST(HeaderValidatorTest, HeaderNameEmpty) { HeaderValidator v; HeaderValidator::HeaderStatus status = v.ValidateSingleHeader("", "value"); - EXPECT_EQ(HeaderValidator::HEADER_NAME_EMPTY, status); + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); } TEST(HeaderValidatorTest, HeaderValueEmpty) { @@ -37,13 +37,13 @@ : absl::StrCat("na", c, "me"); HeaderValidator::HeaderStatus status = v.ValidateSingleHeader(name, "value"); - EXPECT_EQ(HeaderValidator::HEADER_NAME_INVALID_CHAR, status); + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); } // Uppercase characters in header names should not be allowed. const std::string uc_name = is_pseudo_header ? ":Method" : "Name"; HeaderValidator::HeaderStatus status = v.ValidateSingleHeader(uc_name, "value"); - EXPECT_EQ(HeaderValidator::HEADER_NAME_INVALID_CHAR, status); + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); } } @@ -60,7 +60,7 @@ for (const char* c : {"\r", "\n"}) { HeaderValidator::HeaderStatus status = v.ValidateSingleHeader("name", absl::StrCat("val", c, "ue")); - EXPECT_EQ(HeaderValidator::HEADER_VALUE_INVALID_CHAR, status); + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, status); } } @@ -70,19 +70,19 @@ for (HeaderType type : {HeaderType::RESPONSE, HeaderType::RESPONSE_100}) { // When `:status` has a non-digit value, validation will fail. v.StartHeaderBlock(); - EXPECT_EQ(HeaderValidator::HEADER_VALUE_INVALID_CHAR, + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, v.ValidateSingleHeader(":status", "bar")); EXPECT_FALSE(v.FinishHeaderBlock(type)); // When `:status` is too short, validation will fail. v.StartHeaderBlock(); - EXPECT_EQ(HeaderValidator::HEADER_VALUE_INVALID_CHAR, + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, v.ValidateSingleHeader(":status", "10")); EXPECT_FALSE(v.FinishHeaderBlock(type)); // When `:status` is too long, validation will fail. v.StartHeaderBlock(); - EXPECT_EQ(HeaderValidator::HEADER_VALUE_INVALID_CHAR, + EXPECT_EQ(HeaderValidator::HEADER_FIELD_INVALID, v.ValidateSingleHeader(":status", "9000")); EXPECT_FALSE(v.FinishHeaderBlock(type));