diff options
Diffstat (limited to 'chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.cc')
-rw-r--r-- | chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.cc | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.cc b/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.cc index 56ee23241db..95260ab3e7a 100644 --- a/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.cc +++ b/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.cc @@ -4,10 +4,10 @@ #include "net/third_party/quiche/src/quic/core/qpack/qpack_encoder_stream_receiver.h" +#include "absl/strings/string_view.h" #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h" #include "net/third_party/quiche/src/http2/decoder/decode_status.h" #include "net/third_party/quiche/src/quic/core/qpack/qpack_instructions.h" -#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h" namespace quic { @@ -18,7 +18,7 @@ QpackEncoderStreamReceiver::QpackEncoderStreamReceiver(Delegate* delegate) DCHECK(delegate_); } -void QpackEncoderStreamReceiver::Decode(quiche::QuicheStringPiece data) { +void QpackEncoderStreamReceiver::Decode(absl::string_view data) { if (data.empty() || error_detected_) { return; } @@ -51,12 +51,29 @@ bool QpackEncoderStreamReceiver::OnInstructionDecoded( return true; } -void QpackEncoderStreamReceiver::OnError( - quiche::QuicheStringPiece error_message) { +void QpackEncoderStreamReceiver::OnInstructionDecodingError( + QpackInstructionDecoder::ErrorCode error_code, + absl::string_view error_message) { DCHECK(!error_detected_); error_detected_ = true; - delegate_->OnErrorDetected(error_message); + + QuicErrorCode quic_error_code; + switch (error_code) { + case QpackInstructionDecoder::ErrorCode::INTEGER_TOO_LARGE: + quic_error_code = QUIC_QPACK_ENCODER_STREAM_INTEGER_TOO_LARGE; + break; + case QpackInstructionDecoder::ErrorCode::STRING_LITERAL_TOO_LONG: + quic_error_code = QUIC_QPACK_ENCODER_STREAM_STRING_LITERAL_TOO_LONG; + break; + case QpackInstructionDecoder::ErrorCode::HUFFMAN_ENCODING_ERROR: + quic_error_code = QUIC_QPACK_ENCODER_STREAM_HUFFMAN_ENCODING_ERROR; + break; + default: + quic_error_code = QUIC_INTERNAL_ERROR; + } + + delegate_->OnErrorDetected(quic_error_code, error_message); } } // namespace quic |