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)10absl::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