xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/http2/hpack/decoder/hpack_decoding_error.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "quiche/http2/hpack/decoder/hpack_decoding_error.h"
6 
7 namespace http2 {
8 
9 // static
HpackDecodingErrorToString(HpackDecodingError error)10 absl::string_view HpackDecodingErrorToString(HpackDecodingError error) {
11   switch (error) {
12     case HpackDecodingError::kOk:
13       return "No error detected";
14     case HpackDecodingError::kIndexVarintError:
15       return "Index varint beyond implementation limit";
16     case HpackDecodingError::kNameLengthVarintError:
17       return "Name length varint beyond implementation limit";
18     case HpackDecodingError::kValueLengthVarintError:
19       return "Value length varint beyond implementation limit";
20     case HpackDecodingError::kNameTooLong:
21       return "Name length exceeds buffer limit";
22     case HpackDecodingError::kValueTooLong:
23       return "Value length exceeds buffer limit";
24     case HpackDecodingError::kNameHuffmanError:
25       return "Name Huffman encoding error";
26     case HpackDecodingError::kValueHuffmanError:
27       return "Value Huffman encoding error";
28     case HpackDecodingError::kMissingDynamicTableSizeUpdate:
29       return "Missing dynamic table size update";
30     case HpackDecodingError::kInvalidIndex:
31       return "Invalid index in indexed header field representation";
32     case HpackDecodingError::kInvalidNameIndex:
33       return "Invalid index in literal header field with indexed name "
34              "representation";
35     case HpackDecodingError::kDynamicTableSizeUpdateNotAllowed:
36       return "Dynamic table size update not allowed";
37     case HpackDecodingError::kInitialDynamicTableSizeUpdateIsAboveLowWaterMark:
38       return "Initial dynamic table size update is above low water mark";
39     case HpackDecodingError::kDynamicTableSizeUpdateIsAboveAcknowledgedSetting:
40       return "Dynamic table size update is above acknowledged setting";
41     case HpackDecodingError::kTruncatedBlock:
42       return "Block ends in the middle of an instruction";
43     case HpackDecodingError::kFragmentTooLong:
44       return "Incoming data fragment exceeds buffer limit";
45     case HpackDecodingError::kCompressedHeaderSizeExceedsLimit:
46       return "Total compressed HPACK data size exceeds limit";
47   }
48   return "invalid HpackDecodingError value";
49 }
50 
51 }  // namespace http2
52