@fails-components/webtransport 0.0.1-rc.0 → 0.0.1-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish-packages.yml +0 -0
- package/CMakeLists.txt +2 -0
- package/package.json +1 -1
- package/readme.md +0 -0
- package/src/http3serversession.h +1 -1
- package/src/webtransport.js +4 -2
- package/third_party/boringssl/src/CMakeLists.txt +9 -12
- package/third_party/boringssl/src/crypto/CMakeLists.txt +2 -3
- package/third_party/boringssl/src/crypto/asn1/time_support.c +206 -206
- package/third_party/boringssl/src/crypto/bio/socket_helper.c +124 -122
- package/third_party/boringssl/src/crypto/evp/digestsign.c +268 -231
- package/third_party/boringssl/src/crypto/evp/p_ec.c +286 -286
- package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +246 -236
- package/third_party/boringssl/src/crypto/fipsmodule/aes/mode_wrappers.c +124 -122
- package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +3 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bytes.c +246 -230
- package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +734 -715
- package/third_party/boringssl/src/crypto/fipsmodule/bn/random.c +349 -341
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/cipher.c +670 -648
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +1504 -1472
- package/third_party/boringssl/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +435 -446
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_3des_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes128_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes192_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes256_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +318 -278
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac_test.cc +268 -267
- package/third_party/boringssl/src/crypto/fipsmodule/dh/dh.c +5 -1
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec.c +11 -17
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +15 -4
- package/third_party/boringssl/src/crypto/fipsmodule/ec/internal.h +2 -6
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p224-64.c +1164 -1180
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +3 -3
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz_test.cc +2 -2
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256.c +44 -33
- package/third_party/boringssl/src/crypto/fipsmodule/ec/scalar.c +169 -175
- package/third_party/boringssl/src/crypto/fipsmodule/ec/simple.c +352 -357
- package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +4 -0
- package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +14 -9
- package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +256 -235
- package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +204 -202
- package/third_party/boringssl/src/crypto/fipsmodule/rsa/padding.c +702 -695
- package/third_party/boringssl/src/crypto/fipsmodule/rsa/rsa_impl.c +7 -2
- package/third_party/boringssl/src/crypto/fipsmodule/self_check/self_check.c +7 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +333 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator_test.cc +2410 -0
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c +359 -357
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha256.c +325 -321
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha512.c +510 -508
- package/third_party/boringssl/src/crypto/fipsmodule/tls/kdf.c +177 -165
- package/third_party/boringssl/src/crypto/internal.h +13 -0
- package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +884 -884
- package/third_party/boringssl/src/crypto/x509/internal.h +0 -2
- package/third_party/boringssl/src/crypto/x509/t_crl.c +148 -148
- package/third_party/boringssl/src/crypto/x509/t_req.c +249 -250
- package/third_party/boringssl/src/crypto/x509/t_x509.c +2 -3
- package/third_party/boringssl/src/crypto/x509/x509_req.c +262 -304
- package/third_party/boringssl/src/crypto/x509/x509_set.c +250 -240
- package/third_party/boringssl/src/crypto/x509/x509_test.cc +466 -4
- package/third_party/boringssl/src/crypto/x509/x509cset.c +292 -279
- package/third_party/boringssl/src/crypto/x509/x509rset.c +89 -86
- package/third_party/boringssl/src/crypto/x509/x_crl.c +37 -125
- package/third_party/boringssl/src/crypto/x509/x_req.c +114 -109
- package/third_party/boringssl/src/crypto/x509/x_x509.c +394 -394
- package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +11 -16
- package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +644 -642
- package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +130 -133
- package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +149 -144
- package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +496 -500
- package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +105 -106
- package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +126 -121
- package/third_party/boringssl/src/crypto/x509v3/v3_info.c +206 -218
- package/third_party/boringssl/src/crypto/x509v3/v3_int.c +97 -91
- package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +290 -289
- package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +161 -156
- package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +5 -3
- package/third_party/boringssl/src/include/openssl/aead.h +480 -480
- package/third_party/boringssl/src/include/openssl/asn1.h +2 -0
- package/third_party/boringssl/src/include/openssl/base.h +1 -1
- package/third_party/boringssl/src/include/openssl/service_indicator.h +96 -0
- package/third_party/boringssl/src/include/openssl/ssl.h +7 -0
- package/third_party/boringssl/src/include/openssl/x509.h +11 -33
- package/third_party/boringssl/src/include/openssl/x509v3.h +990 -1018
- package/third_party/boringssl/src/sources.cmake +4 -4
- package/third_party/boringssl/src/ssl/internal.h +10 -0
- package/third_party/boringssl/src/ssl/ssl_lib.cc +3081 -3072
- package/third_party/boringssl/src/ssl/ssl_test.cc +46 -0
- package/third_party/boringssl/src/ssl/tls13_server.cc +4 -6
- package/third_party/boringssl/src/util/bot/DEPS +14 -27
- package/third_party/boringssl/src/util/bot/UPDATING +3 -9
- package/third_party/boringssl/src/util/bot/update_clang.py +172 -172
- package/third_party/boringssl/src/util/bot/vs_toolchain.py +3 -3
- package/third_party/quiche/.bazelrc +8 -0
- package/third_party/quiche/BUILD.bazel +7 -0
- package/third_party/quiche/WHITESPACE +3 -1
- package/third_party/quiche/WORKSPACE.bazel +87 -0
- package/third_party/quiche/build/BUILD.bazel +7 -0
- package/third_party/quiche/build/source_list.bzl +1511 -0
- package/third_party/quiche/build/source_list.gni +1511 -0
- package/third_party/quiche/build/source_list.json +1511 -0
- package/third_party/quiche/build/test.bzl +26 -0
- package/third_party/quiche/build/zlib.BUILD +25 -0
- package/third_party/quiche/quiche/BUILD.bazel +270 -0
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.cc +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.h +7 -7
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.cc +39 -18
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.h +11 -10
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame_test.cc +67 -63
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.cc +13 -12
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.h +16 -8
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers_test.cc +9 -9
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_visitor_interface.h +4 -4
- package/third_party/quiche/quiche/{common/balsa → balsa}/framer_interface.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_api.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties_test.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/noop_balsa_visitor.h +4 -4
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.cc +22 -29
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.h +18 -16
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer_test.cc +79 -32
- package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.h +3 -3
- package/third_party/quiche/quiche/common/platform/api/quiche_command_line_flags.h +6 -1
- package/third_party/quiche/quiche/common/platform/api/quiche_flags.h +8 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_logging.h +0 -3
- package/third_party/quiche/quiche/common/platform/api/quiche_lower_case_string_test.cc +29 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_test.h +5 -7
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quic_flags_impl.h +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_bug_tracker_impl.h +3 -2
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.cc +41 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h +33 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h +15 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +84 -50
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h +25 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +25 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h +56 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h +27 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_thread_impl.h +26 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc +1 -0
- package/third_party/quiche/quiche/common/quiche_buffer_allocator_test.cc +1 -1
- package/third_party/quiche/quiche/common/quiche_mem_slice_storage.h +2 -3
- package/third_party/quiche/quiche/common/structured_headers.cc +14 -12
- package/third_party/quiche/quiche/http2/adapter/event_forwarder.cc +7 -5
- package/third_party/quiche/quiche/http2/adapter/event_forwarder.h +4 -2
- package/third_party/quiche/quiche/http2/adapter/event_forwarder_test.cc +14 -9
- package/third_party/quiche/quiche/http2/adapter/header_validator.cc +43 -19
- package/third_party/quiche/quiche/http2/adapter/header_validator.h +11 -40
- package/third_party/quiche/quiche/http2/adapter/header_validator_base.h +69 -0
- package/third_party/quiche/quiche/http2/adapter/header_validator_test.cc +73 -1
- package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +66 -0
- package/third_party/quiche/quiche/http2/adapter/nghttp2_session_test.cc +8 -5
- package/third_party/quiche/quiche/http2/adapter/nghttp2_test.cc +1 -1
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator.cc +22 -0
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator.h +25 -0
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator_test.cc +523 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +186 -5
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +37 -43
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +22 -23
- package/third_party/quiche/quiche/http2/adapter/test_utils.cc +1 -1
- package/third_party/quiche/quiche/http2/adapter/window_manager_test.cc +11 -5
- package/third_party/quiche/quiche/http2/core/http2_trace_logging.cc +13 -11
- package/third_party/quiche/quiche/http2/core/http2_trace_logging.h +5 -4
- package/third_party/quiche/quiche/http2/core/priority_write_scheduler.h +42 -36
- package/third_party/quiche/quiche/http2/core/priority_write_scheduler_test.cc +2 -2
- package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +9 -9
- package/third_party/quiche/quiche/http2/decoder/decode_http2_structures_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/http2_frame_decoder_test.cc +14 -14
- package/third_party/quiche/quiche/http2/decoder/http2_structure_decoder_test.cc +17 -17
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/window_update_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_block_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc +8 -8
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_string_buffer_test.cc +4 -3
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_tables_test.cc +17 -17
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_test.cc +25 -25
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_type_decoder_test.cc +7 -6
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_string_decoder_test.cc +6 -6
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_encoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_transcoder_test.cc +5 -5
- package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_decoder_test.cc +4 -4
- package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_round_trip_test.cc +1 -1
- package/third_party/quiche/quiche/http2/http2_constants_test.cc +1 -1
- package/third_party/quiche/quiche/http2/http2_structures_test.cc +23 -22
- package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.cc +1 -1
- package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.h +1 -1
- package/third_party/quiche/quiche/http2/test_tools/frame_parts.cc +38 -38
- package/third_party/quiche/quiche/http2/test_tools/hpack_block_collector.cc +15 -15
- package/third_party/quiche/quiche/http2/test_tools/hpack_entry_collector.cc +24 -22
- package/third_party/quiche/quiche/http2/test_tools/hpack_string_collector.cc +5 -5
- package/third_party/quiche/quiche/http2/test_tools/http2_frame_builder_test.cc +70 -89
- package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.cc +1 -1
- package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.h +29 -26
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.cc → random_decoder_test_base.cc} +13 -10
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.h → random_decoder_test_base.h} +15 -17
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test_test.cc → random_decoder_test_base_test.cc} +1 -1
- package/third_party/quiche/quiche/http2/test_tools/verify_macros.h +32 -0
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +2 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_simulator_test.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender_test.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.h +2 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats_test.cc +2 -13
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view.cc +15 -0
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view.h +7 -0
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view_test.cc +16 -0
- package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -0
- package/third_party/quiche/quiche/quic/core/crypto/proof_source.h +2 -2
- package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.cc +3 -5
- package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.h +1 -2
- package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.cc +1 -1
- package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.h +3 -3
- package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.cc +2 -8
- package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.h +0 -1
- package/third_party/quiche/quiche/quic/core/frames/quic_crypto_frame.h +2 -0
- package/third_party/quiche/quiche/quic/core/frames/quic_frames_test.cc +2 -1
- package/third_party/quiche/quiche/quic/core/http/capsule.cc +2 -22
- package/third_party/quiche/quiche/quic/core/http/capsule.h +0 -2
- package/third_party/quiche/quiche/quic/core/http/capsule_test.cc +1 -2
- package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +148 -57
- package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -1
- package/third_party/quiche/quiche/quic/core/http/http_constants.h +2 -2
- package/third_party/quiche/quiche/quic/core/http/quic_header_list_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/http/quic_headers_stream_test.cc +18 -14
- package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream.h +2 -1
- package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream_test.cc +3 -7
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.h +4 -0
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.cc +47 -65
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +5 -17
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +63 -54
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +34 -91
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +1 -9
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +27 -134
- package/third_party/quiche/quiche/quic/core/http/spdy_utils.cc +0 -41
- package/third_party/quiche/quiche/quic/core/http/spdy_utils.h +0 -9
- package/third_party/quiche/quiche/quic/core/http/spdy_utils_test.cc +0 -32
- package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +0 -1
- package/third_party/quiche/quiche/quic/core/packet_number_indexed_queue_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/qpack/qpack_header_table.cc +2 -1
- package/third_party/quiche/quiche/quic/core/qpack/qpack_send_stream.h +2 -1
- package/third_party/quiche/quiche/quic/core/quic_arena_scoped_ptr_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection.cc +68 -46
- package/third_party/quiche/quiche/quic/core/quic_connection.h +7 -6
- package/third_party/quiche/quiche/quic/core/quic_connection_context_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_id_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +45 -132
- package/third_party/quiche/quiche/quic/core/quic_constants.h +0 -7
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +11 -3
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.h +1 -1
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.cc +13 -1
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.h +3 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.cc +6 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.h +8 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.cc +26 -13
- package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.h +5 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +55 -47
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.h +15 -10
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +34 -5
- package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +20 -11
- package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +37 -13
- package/third_party/quiche/quiche/quic/core/quic_flags_list.h +6 -10
- package/third_party/quiche/quiche/quic/core/quic_flow_controller.cc +3 -3
- package/third_party/quiche/quiche/quic/core/quic_flow_controller.h +2 -2
- package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +15 -10
- package/third_party/quiche/quiche/quic/core/quic_framer.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_one_block_arena.h +3 -2
- package/third_party/quiche/quiche/quic/core/quic_one_block_arena_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +3 -11
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.h +0 -8
- package/third_party/quiche/quiche/quic/core/quic_ping_manager.cc +14 -14
- package/third_party/quiche/quiche/quic/core/quic_ping_manager_test.cc +48 -0
- package/third_party/quiche/quiche/quic/core/quic_received_packet_manager.cc +3 -18
- package/third_party/quiche/quiche/quic/core/quic_received_packet_manager_test.cc +4 -14
- package/third_party/quiche/quiche/quic/core/quic_server_id_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_session.cc +4 -4
- package/third_party/quiche/quiche/quic/core/quic_session.h +1 -1
- package/third_party/quiche/quiche/quic/core/quic_session_test.cc +21 -1
- package/third_party/quiche/quiche/quic/core/quic_stream.cc +4 -7
- package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +2 -4
- package/third_party/quiche/quiche/quic/core/quic_trace_visitor_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_types.h +3 -8
- package/third_party/quiche/quiche/quic/core/quic_udp_socket_posix.cc +5 -4
- package/third_party/quiche/quiche/quic/core/quic_unacked_packet_map_test.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_utils.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_utils.h +2 -2
- package/third_party/quiche/quiche/quic/core/quic_versions_test.cc +0 -1
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker.cc +13 -0
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker.h +2 -0
- package/third_party/quiche/quiche/quic/core/tls_server_handshaker.cc +17 -3
- package/third_party/quiche/quiche/quic/core/tls_server_handshaker.h +3 -1
- package/third_party/quiche/quiche/quic/core/uber_received_packet_manager_test.cc +18 -10
- package/third_party/quiche/quiche/quic/masque/masque_client_bin.cc +6 -4
- package/third_party/quiche/quiche/quic/masque/masque_client_session.cc +23 -7
- package/third_party/quiche/quiche/quic/masque/masque_client_session.h +1 -1
- package/third_party/quiche/quiche/quic/masque/masque_server_backend.cc +13 -0
- package/third_party/quiche/quiche/quic/masque/masque_server_backend.h +2 -0
- package/third_party/quiche/quiche/quic/masque/masque_server_bin.cc +5 -4
- package/third_party/quiche/quiche/quic/masque/masque_server_session.cc +30 -40
- package/third_party/quiche/quiche/quic/masque/masque_server_session.h +1 -1
- package/third_party/quiche/quiche/quic/platform/api/quic_export.h +4 -4
- package/third_party/quiche/quiche/quic/platform/api/quic_flags.h +0 -1
- package/third_party/quiche/quiche/quic/platform/api/quic_logging.h +0 -6
- package/third_party/quiche/quiche/quic/platform/api/quic_test.h +6 -5
- package/third_party/quiche/quiche/quic/qbone/bonnet/icmp_reachable_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/mock_qbone_tunnel.h +2 -0
- package/third_party/quiche/quiche/quic/qbone/bonnet/qbone_tunnel_interface.h +2 -0
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_controller_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/platform/netlink_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/platform/tcp_packet.cc +5 -4
- package/third_party/quiche/quiche/quic/qbone/qbone_client_session.cc +4 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor.cc +2 -1
- package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_server_session.cc +4 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_session_base.cc +3 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_stream.cc +4 -4
- package/third_party/quiche/quiche/quic/test_tools/quic_connection_peer.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/index.html +63 -0
- package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/map.html +65 -0
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.cc +4 -3
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +18 -1
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint_test.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/simulator/simulator_test.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.h +2 -2
- package/third_party/quiche/quiche/quic/{core/crypto → tools}/crypto_message_printer_bin.cc +0 -0
- package/third_party/quiche/quiche/quic/{core/qpack → tools}/qpack_offline_decoder_bin.cc +0 -0
- package/third_party/quiche/quiche/quic/tools/quic_client_interop_test_bin.cc +4 -3
- package/third_party/quiche/quiche/quic/tools/quic_memory_cache_backend_test.cc +3 -31
- package/third_party/quiche/quiche/quic/tools/quic_packet_printer_bin.cc +2 -2
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_session.h +1 -1
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_session_test.cc +1 -1
- package/third_party/quiche/quiche/quic/tools/quic_toy_client.cc +52 -38
- package/third_party/quiche/quiche/quic/tools/quic_toy_server.cc +10 -7
- package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.cc +1 -1
- package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.h +1 -1
- package/third_party/quiche/quiche/quic/tools/web_transport_test_visitors.h +3 -2
- package/third_party/quiche/quiche/spdy/core/array_output_buffer.h +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_encoder_test.cc +2 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_header_table_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_round_trip_test.cc +2 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_static_table_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.cc +8 -6
- package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.h +17 -6
- package/third_party/quiche/quiche/spdy/core/metadata_extension.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/metadata_extension_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_framer_test.cc +21 -17
- package/third_party/quiche/quiche/spdy/core/spdy_intrusive_list_test.cc +3 -3
- package/third_party/quiche/quiche/spdy/core/spdy_no_op_visitor.h +6 -4
- package/third_party/quiche/quiche/spdy/core/spdy_pinnable_buffer_piece_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_protocol_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/test_tools/mock_spdy_framer_visitor.h +5 -4
- package/third_party/boringssl/src/util/bot/cmake-win32.zip.sha1 +0 -1
- package/third_party/quiche/quiche/common/platform/api/quiche_mock_log.h +0 -18
- package/third_party/quiche/quiche/common/platform/api/quiche_test_helpers.h +0 -8
- package/third_party/quiche/quiche/quic/platform/api/quic_mock_log.h +0 -19
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.cc +0 -51
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.h +0 -41
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.cc +0 -168
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.h +0 -78
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
#include "quiche/
|
|
5
|
+
#include "quiche/balsa/balsa_frame.h"
|
|
6
6
|
|
|
7
7
|
#include <stdlib.h>
|
|
8
8
|
|
|
@@ -15,20 +15,21 @@
|
|
|
15
15
|
#include <utility>
|
|
16
16
|
#include <vector>
|
|
17
17
|
|
|
18
|
-
#include "absl/flags/flag.h"
|
|
19
18
|
#include "absl/strings/escaping.h"
|
|
20
19
|
#include "absl/strings/numbers.h"
|
|
21
20
|
#include "absl/strings/str_cat.h"
|
|
22
21
|
#include "absl/strings/str_format.h"
|
|
23
22
|
#include "absl/strings/str_replace.h"
|
|
24
23
|
#include "absl/strings/string_view.h"
|
|
25
|
-
#include "quiche/
|
|
26
|
-
#include "quiche/
|
|
27
|
-
#include "quiche/
|
|
28
|
-
#include "quiche/
|
|
29
|
-
#include "quiche/
|
|
30
|
-
#include "quiche/
|
|
24
|
+
#include "quiche/balsa/balsa_enums.h"
|
|
25
|
+
#include "quiche/balsa/balsa_headers.h"
|
|
26
|
+
#include "quiche/balsa/balsa_visitor_interface.h"
|
|
27
|
+
#include "quiche/balsa/http_validation_policy.h"
|
|
28
|
+
#include "quiche/balsa/noop_balsa_visitor.h"
|
|
29
|
+
#include "quiche/balsa/simple_buffer.h"
|
|
30
|
+
#include "quiche/common/platform/api/quiche_command_line_flags.h"
|
|
31
31
|
#include "quiche/common/platform/api/quiche_expect_bug.h"
|
|
32
|
+
#include "quiche/common/platform/api/quiche_flags.h"
|
|
32
33
|
#include "quiche/common/platform/api/quiche_logging.h"
|
|
33
34
|
#include "quiche/common/platform/api/quiche_test.h"
|
|
34
35
|
|
|
@@ -43,9 +44,10 @@ using testing::Range;
|
|
|
43
44
|
using testing::StrEq;
|
|
44
45
|
using testing::StrictMock;
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
DEFINE_QUICHE_COMMAND_LINE_FLAG(
|
|
48
|
+
std::string, randseed, "",
|
|
49
|
+
"This is the seed for Pseudo-random number"
|
|
50
|
+
" generator used when generating random messages for unittests");
|
|
49
51
|
|
|
50
52
|
namespace quiche {
|
|
51
53
|
|
|
@@ -880,7 +882,7 @@ void WhitespaceHeaderTestHelper(
|
|
|
880
882
|
SCOPED_TRACE(EscapeString(message));
|
|
881
883
|
size_t bytes_consumed = framer.ProcessInput(message.data(), message.size());
|
|
882
884
|
EXPECT_EQ(message.size(), bytes_consumed);
|
|
883
|
-
if (expected_error_code == BalsaFrameEnums::
|
|
885
|
+
if (expected_error_code == BalsaFrameEnums::BALSA_NO_ERROR) {
|
|
884
886
|
EXPECT_EQ(false, framer.Error());
|
|
885
887
|
} else {
|
|
886
888
|
EXPECT_EQ(true, framer.Error());
|
|
@@ -910,13 +912,13 @@ TEST(HTTPBalsaFrame, WhitespaceInRequestsProcessedProperly) {
|
|
|
910
912
|
"test: test\r\n"
|
|
911
913
|
" continued\r\n"
|
|
912
914
|
"\r\n",
|
|
913
|
-
true, BalsaFrameEnums::
|
|
915
|
+
true, BalsaFrameEnums::BALSA_NO_ERROR);
|
|
914
916
|
WhitespaceHeaderTestHelper(
|
|
915
917
|
"GET / HTTP/1.1\r\n"
|
|
916
918
|
"test: test\r\n"
|
|
917
919
|
" \r\n"
|
|
918
920
|
"\r\n",
|
|
919
|
-
true, BalsaFrameEnums::
|
|
921
|
+
true, BalsaFrameEnums::BALSA_NO_ERROR);
|
|
920
922
|
}
|
|
921
923
|
|
|
922
924
|
TEST(HTTPBalsaFrame, WhitespaceInResponsesProcessedProperly) {
|
|
@@ -936,14 +938,14 @@ TEST(HTTPBalsaFrame, WhitespaceInResponsesProcessedProperly) {
|
|
|
936
938
|
" continued\r\n"
|
|
937
939
|
"Content-Length: 0\r\n"
|
|
938
940
|
"\r\n",
|
|
939
|
-
false, BalsaFrameEnums::
|
|
941
|
+
false, BalsaFrameEnums::BALSA_NO_ERROR);
|
|
940
942
|
WhitespaceHeaderTestHelper(
|
|
941
943
|
"HTTP/1.0 200 Reason\r\n"
|
|
942
944
|
"test: test\r\n"
|
|
943
945
|
" \r\n"
|
|
944
946
|
"Content-Length: 0\r\n"
|
|
945
947
|
"\r\n",
|
|
946
|
-
false, BalsaFrameEnums::
|
|
948
|
+
false, BalsaFrameEnums::BALSA_NO_ERROR);
|
|
947
949
|
}
|
|
948
950
|
|
|
949
951
|
TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForTrivialRequest) {
|
|
@@ -1194,7 +1196,7 @@ TEST_F(HTTPBalsaFrameTest, NothingBadHappensWhenNoVisitorIsAssigned) {
|
|
|
1194
1196
|
EXPECT_EQ(trailer.size(),
|
|
1195
1197
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
1196
1198
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1197
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1199
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1198
1200
|
}
|
|
1199
1201
|
|
|
1200
1202
|
TEST_F(HTTPBalsaFrameTest, NothingBadHappensWhenNoVisitorIsAssignedInResponse) {
|
|
@@ -1223,7 +1225,7 @@ TEST_F(HTTPBalsaFrameTest, NothingBadHappensWhenNoVisitorIsAssignedInResponse) {
|
|
|
1223
1225
|
EXPECT_EQ(trailer.size(),
|
|
1224
1226
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
1225
1227
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1226
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1228
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1227
1229
|
const absl::string_view crass = trailer_.GetHeader("crass");
|
|
1228
1230
|
EXPECT_EQ("monkeys", crass);
|
|
1229
1231
|
const absl::string_view funky = trailer_.GetHeader("funky");
|
|
@@ -1246,7 +1248,7 @@ TEST_F(HTTPBalsaFrameTest, TransferEncodingIdentityIsIgnored) {
|
|
|
1246
1248
|
EXPECT_FALSE(balsa_frame_.MessageFullyRead());
|
|
1247
1249
|
ASSERT_EQ(body.size(), balsa_frame_.ProcessInput(body.data(), body.size()));
|
|
1248
1250
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1249
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1251
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1250
1252
|
}
|
|
1251
1253
|
|
|
1252
1254
|
TEST_F(HTTPBalsaFrameTest,
|
|
@@ -1274,7 +1276,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
1274
1276
|
ASSERT_EQ(trailer.size(),
|
|
1275
1277
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
1276
1278
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1277
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1279
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1278
1280
|
}
|
|
1279
1281
|
|
|
1280
1282
|
TEST_F(HTTPBalsaFrameTest,
|
|
@@ -1305,7 +1307,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
1305
1307
|
ASSERT_EQ(trailer.size(),
|
|
1306
1308
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
1307
1309
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1308
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1310
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1309
1311
|
const absl::string_view crass = trailer_.GetHeader("crass");
|
|
1310
1312
|
EXPECT_EQ("monkeys", crass);
|
|
1311
1313
|
const absl::string_view funky = trailer_.GetHeader("funky");
|
|
@@ -1517,7 +1519,7 @@ TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForRequestWithContentLength) {
|
|
|
1517
1519
|
message.size()));
|
|
1518
1520
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1519
1521
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1520
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1522
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1521
1523
|
}
|
|
1522
1524
|
|
|
1523
1525
|
TEST_F(HTTPBalsaFrameTest,
|
|
@@ -1553,7 +1555,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
1553
1555
|
message.size()));
|
|
1554
1556
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1555
1557
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1556
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1558
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1557
1559
|
}
|
|
1558
1560
|
|
|
1559
1561
|
TEST_F(HTTPBalsaFrameTest,
|
|
@@ -1615,7 +1617,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
1615
1617
|
message.size()));
|
|
1616
1618
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1617
1619
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1618
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1620
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1619
1621
|
|
|
1620
1622
|
EXPECT_EQ(message_body, body_input);
|
|
1621
1623
|
EXPECT_EQ(message_body_data, body_data);
|
|
@@ -1687,7 +1689,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
1687
1689
|
message.size()));
|
|
1688
1690
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1689
1691
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1690
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1692
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1691
1693
|
|
|
1692
1694
|
EXPECT_EQ(message_body, body_input);
|
|
1693
1695
|
EXPECT_EQ(message_body_data, body_data);
|
|
@@ -1928,7 +1930,7 @@ TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForTrivialResponse) {
|
|
|
1928
1930
|
balsa_frame_.ProcessInput(message.data(), message.size()));
|
|
1929
1931
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1930
1932
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1931
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1933
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1932
1934
|
}
|
|
1933
1935
|
|
|
1934
1936
|
TEST_F(HTTPBalsaFrameTest,
|
|
@@ -1961,7 +1963,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
1961
1963
|
header_input.data(), header_input.size()));
|
|
1962
1964
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1963
1965
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1964
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
1966
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
1965
1967
|
}
|
|
1966
1968
|
|
|
1967
1969
|
TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForResponseWithBlankLines) {
|
|
@@ -1996,7 +1998,7 @@ TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForResponseWithBlankLines) {
|
|
|
1996
1998
|
balsa_frame_.ProcessInput(message.data(), message.size()));
|
|
1997
1999
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
1998
2000
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
1999
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2001
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2000
2002
|
}
|
|
2001
2003
|
|
|
2002
2004
|
TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForResponseWithContentLength) {
|
|
@@ -2032,7 +2034,7 @@ TEST_F(HTTPBalsaFrameTest, VisitorInvokedProperlyForResponseWithContentLength) {
|
|
|
2032
2034
|
message.size()));
|
|
2033
2035
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
2034
2036
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
2035
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2037
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2036
2038
|
}
|
|
2037
2039
|
|
|
2038
2040
|
TEST_F(HTTPBalsaFrameTest,
|
|
@@ -2091,7 +2093,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
2091
2093
|
message.size()));
|
|
2092
2094
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
2093
2095
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
2094
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2096
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2095
2097
|
|
|
2096
2098
|
EXPECT_EQ(message_body, body_input);
|
|
2097
2099
|
EXPECT_EQ(message_body_data, body_data);
|
|
@@ -2161,7 +2163,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
2161
2163
|
message.size()));
|
|
2162
2164
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
2163
2165
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
2164
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2166
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2165
2167
|
|
|
2166
2168
|
EXPECT_EQ(message_body, body_input);
|
|
2167
2169
|
EXPECT_EQ(message_body_data, body_data);
|
|
@@ -2236,7 +2238,7 @@ TEST_F(
|
|
|
2236
2238
|
}
|
|
2237
2239
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
2238
2240
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
2239
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2241
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2240
2242
|
|
|
2241
2243
|
EXPECT_EQ(message_body, body_input);
|
|
2242
2244
|
EXPECT_EQ(message_body_data, body_data);
|
|
@@ -2249,7 +2251,7 @@ TEST_F(
|
|
|
2249
2251
|
TEST(HTTPBalsaFrame,
|
|
2250
2252
|
VisitorInvokedProperlyForResponseWithTransferEncodingAndTrailersRandom) {
|
|
2251
2253
|
TestSeed seed;
|
|
2252
|
-
seed.Initialize(
|
|
2254
|
+
seed.Initialize(GetQuicheCommandLineFlag(FLAGS_randseed));
|
|
2253
2255
|
RandomEngine rng;
|
|
2254
2256
|
rng.seed(seed.GetSeed());
|
|
2255
2257
|
for (int i = 0; i < 1000; ++i) {
|
|
@@ -2331,7 +2333,7 @@ TEST(HTTPBalsaFrame,
|
|
|
2331
2333
|
EXPECT_EQ(message.size(), total_processed);
|
|
2332
2334
|
EXPECT_TRUE(balsa_frame.MessageFullyRead());
|
|
2333
2335
|
EXPECT_FALSE(balsa_frame.Error());
|
|
2334
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2336
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame.ErrorCode());
|
|
2335
2337
|
|
|
2336
2338
|
EXPECT_EQ(message_body, body_input);
|
|
2337
2339
|
EXPECT_EQ(message_body_data, body_data);
|
|
@@ -2403,7 +2405,7 @@ TEST_F(HTTPBalsaFrameTest, AppropriateActionTakenWhenHeadersTooLongWhenReset) {
|
|
|
2403
2405
|
EXPECT_EQ(BalsaFrameEnums::HEADERS_TOO_LONG, balsa_frame_.ErrorCode());
|
|
2404
2406
|
}
|
|
2405
2407
|
|
|
2406
|
-
class BalsaFrameParsingTest : public
|
|
2408
|
+
class BalsaFrameParsingTest : public QuicheTest {
|
|
2407
2409
|
protected:
|
|
2408
2410
|
void SetUp() override {
|
|
2409
2411
|
balsa_frame_.set_http_validation_policy(
|
|
@@ -2878,10 +2880,10 @@ TEST_F(HTTPBalsaFrameTest, TwoSameContentHeadersIsNotAnError) {
|
|
|
2878
2880
|
"\r\n"
|
|
2879
2881
|
"1";
|
|
2880
2882
|
balsa_frame_.ProcessInput(header.data(), header.size());
|
|
2881
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2883
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2882
2884
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
2883
2885
|
balsa_frame_.ProcessInput(header.data(), header.size());
|
|
2884
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
2886
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
2885
2887
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
2886
2888
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
2887
2889
|
}
|
|
@@ -3170,7 +3172,7 @@ TEST_F(HTTPBalsaFrameTest, MultipleHeadersInTrailer) {
|
|
|
3170
3172
|
std::map<std::string, std::string>::const_iterator iter;
|
|
3171
3173
|
std::string trailer_data;
|
|
3172
3174
|
TestSeed seed;
|
|
3173
|
-
seed.Initialize(
|
|
3175
|
+
seed.Initialize(GetQuicheCommandLineFlag(FLAGS_randseed));
|
|
3174
3176
|
RandomEngine rng;
|
|
3175
3177
|
rng.seed(seed.GetSeed());
|
|
3176
3178
|
FakeHeaders fake_headers_in_trailer;
|
|
@@ -3223,7 +3225,7 @@ TEST_F(HTTPBalsaFrameTest, MultipleHeadersInTrailer) {
|
|
|
3223
3225
|
trailer_data.data(), trailer_data.size()));
|
|
3224
3226
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3225
3227
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3226
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3228
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3227
3229
|
|
|
3228
3230
|
EXPECT_EQ(chunks, body_input);
|
|
3229
3231
|
|
|
@@ -3261,7 +3263,7 @@ TEST_F(HTTPBalsaFrameTest, NothingBadHappensWithNULLTrailer) {
|
|
|
3261
3263
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
3262
3264
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3263
3265
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3264
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3266
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3265
3267
|
}
|
|
3266
3268
|
|
|
3267
3269
|
// Test Reset() correctly resets trailer related states.
|
|
@@ -3291,7 +3293,7 @@ TEST_F(HTTPBalsaFrameTest, FrameAndResetAndFrameAgain) {
|
|
|
3291
3293
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
3292
3294
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3293
3295
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3294
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3296
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3295
3297
|
|
|
3296
3298
|
absl::string_view value = trailer_.GetHeader("k");
|
|
3297
3299
|
EXPECT_EQ("v", value);
|
|
@@ -3319,7 +3321,7 @@ TEST_F(HTTPBalsaFrameTest, FrameAndResetAndFrameAgain) {
|
|
|
3319
3321
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
3320
3322
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3321
3323
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3322
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3324
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3323
3325
|
|
|
3324
3326
|
value = trailer_.GetHeader("k");
|
|
3325
3327
|
EXPECT_TRUE(value.empty());
|
|
@@ -3482,31 +3484,33 @@ TEST_F(HTTPBalsaFrameTest, InvalidCharsAreCounted) {
|
|
|
3482
3484
|
// Test gibberish in headers and trailer. GFE does not crash but garbage in
|
|
3483
3485
|
// garbage out.
|
|
3484
3486
|
TEST_F(HTTPBalsaFrameTest, GibberishInHeadersAndTrailer) {
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
+
// Use static_cast<char> for values exceeding SCHAR_MAX to make sure this
|
|
3488
|
+
// compiles on platforms where char is signed.
|
|
3489
|
+
const char kGibberish1[] = {static_cast<char>(138), static_cast<char>(175),
|
|
3490
|
+
static_cast<char>(233), 0};
|
|
3491
|
+
const char kGibberish2[] = {'?',
|
|
3492
|
+
'?',
|
|
3493
|
+
static_cast<char>(128),
|
|
3494
|
+
static_cast<char>(255),
|
|
3495
|
+
static_cast<char>(129),
|
|
3496
|
+
static_cast<char>(254),
|
|
3497
|
+
0};
|
|
3487
3498
|
const char kGibberish3[] = "foo: bar : eeep : baz";
|
|
3488
3499
|
|
|
3489
|
-
std::string gibberish_headers
|
|
3490
|
-
|
|
3491
|
-
gibberish_headers += ":";
|
|
3492
|
-
gibberish_headers += kGibberish2;
|
|
3493
|
-
gibberish_headers += "\r\n";
|
|
3494
|
-
gibberish_headers += kGibberish3;
|
|
3495
|
-
gibberish_headers += "\r\n";
|
|
3500
|
+
std::string gibberish_headers =
|
|
3501
|
+
absl::StrCat(kGibberish1, ":", kGibberish2, "\r\n", kGibberish3, "\r\n");
|
|
3496
3502
|
|
|
3497
|
-
std::string headers =
|
|
3503
|
+
std::string headers = absl::StrCat(
|
|
3498
3504
|
"HTTP/1.1 200 OK\r\n"
|
|
3499
|
-
"transfer-encoding: chunked\r\n"
|
|
3500
|
-
|
|
3501
|
-
headers += "\r\n";
|
|
3505
|
+
"transfer-encoding: chunked\r\n",
|
|
3506
|
+
gibberish_headers, "\r\n");
|
|
3502
3507
|
|
|
3503
3508
|
std::string chunks =
|
|
3504
3509
|
"3\r\n"
|
|
3505
3510
|
"123\r\n"
|
|
3506
3511
|
"0\r\n";
|
|
3507
|
-
|
|
3508
|
-
trailer
|
|
3509
|
-
trailer += "\n";
|
|
3512
|
+
|
|
3513
|
+
std::string trailer = absl::StrCat("k: v\n", gibberish_headers, "\n");
|
|
3510
3514
|
|
|
3511
3515
|
balsa_frame_.set_is_request(false);
|
|
3512
3516
|
balsa_frame_.set_balsa_trailer(&trailer_);
|
|
@@ -3520,7 +3524,7 @@ TEST_F(HTTPBalsaFrameTest, GibberishInHeadersAndTrailer) {
|
|
|
3520
3524
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
3521
3525
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3522
3526
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3523
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3527
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3524
3528
|
|
|
3525
3529
|
// Transfer-encoding can be multi-valued, so GetHeader does not work.
|
|
3526
3530
|
EXPECT_TRUE(headers_.transfer_encoding_is_chunked());
|
|
@@ -3608,7 +3612,7 @@ TEST_F(HTTPBalsaFrameTest,
|
|
|
3608
3612
|
balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
|
|
3609
3613
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3610
3614
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3611
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3615
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3612
3616
|
}
|
|
3613
3617
|
|
|
3614
3618
|
// Handle two sets of headers when set up properly and the first is 100
|
|
@@ -3636,7 +3640,7 @@ TEST_F(HTTPBalsaFrameTest, Support100Continue) {
|
|
|
3636
3640
|
ASSERT_EQ(body.size(), balsa_frame_.ProcessInput(body.data(), body.size()));
|
|
3637
3641
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3638
3642
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3639
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3643
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3640
3644
|
}
|
|
3641
3645
|
|
|
3642
3646
|
// Handle two sets of headers when set up properly and the first is 100
|
|
@@ -3664,7 +3668,7 @@ TEST_F(HTTPBalsaFrameTest, Support100Continue401Unauthorized) {
|
|
|
3664
3668
|
ASSERT_EQ(body.size(), balsa_frame_.ProcessInput(body.data(), body.size()));
|
|
3665
3669
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3666
3670
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3667
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3671
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3668
3672
|
}
|
|
3669
3673
|
|
|
3670
3674
|
TEST_F(HTTPBalsaFrameTest, Support100ContinueRunTogether) {
|
|
@@ -3693,7 +3697,7 @@ TEST_F(HTTPBalsaFrameTest, Support100ContinueRunTogether) {
|
|
|
3693
3697
|
ASSERT_EQ(body.size(), balsa_frame_.ProcessInput(body.data(), body.size()));
|
|
3694
3698
|
EXPECT_TRUE(balsa_frame_.MessageFullyRead());
|
|
3695
3699
|
EXPECT_FALSE(balsa_frame_.Error());
|
|
3696
|
-
EXPECT_EQ(BalsaFrameEnums::
|
|
3700
|
+
EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
|
|
3697
3701
|
}
|
|
3698
3702
|
|
|
3699
3703
|
} // namespace
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
#include "quiche/
|
|
5
|
+
#include "quiche/balsa/balsa_headers.h"
|
|
6
6
|
|
|
7
7
|
#include <sys/types.h>
|
|
8
8
|
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
#include "absl/strings/str_format.h"
|
|
20
20
|
#include "absl/strings/str_join.h"
|
|
21
21
|
#include "absl/strings/string_view.h"
|
|
22
|
-
#include "quiche/
|
|
23
|
-
#include "quiche/
|
|
22
|
+
#include "quiche/balsa/balsa_enums.h"
|
|
23
|
+
#include "quiche/balsa/header_properties.h"
|
|
24
24
|
#include "quiche/common/platform/api/quiche_header_policy.h"
|
|
25
25
|
#include "quiche/common/platform/api/quiche_logging.h"
|
|
26
26
|
|
|
@@ -182,8 +182,12 @@ void BalsaHeaders::ParseTokenList(absl::string_view header_value,
|
|
|
182
182
|
const char* start = header_value.begin();
|
|
183
183
|
const char* end = header_value.end();
|
|
184
184
|
while (true) {
|
|
185
|
+
// Cast `*start` to unsigned char to make values above 127 rank as expected
|
|
186
|
+
// on platforms with signed char, where such values are represented as
|
|
187
|
+
// negative numbers before the cast.
|
|
188
|
+
|
|
185
189
|
// search for first nonwhitespace, non separator char.
|
|
186
|
-
while (*start == ',' || *start <= ' ') {
|
|
190
|
+
while (*start == ',' || static_cast<unsigned char>(*start) <= ' ') {
|
|
187
191
|
++start;
|
|
188
192
|
if (start == end) {
|
|
189
193
|
return;
|
|
@@ -193,7 +197,7 @@ void BalsaHeaders::ParseTokenList(absl::string_view header_value,
|
|
|
193
197
|
const char* nws = start;
|
|
194
198
|
|
|
195
199
|
// search for next whitspace or separator char.
|
|
196
|
-
while (*start != ',' && *start > ' ') {
|
|
200
|
+
while (*start != ',' && static_cast<unsigned char>(*start) > ' ') {
|
|
197
201
|
++start;
|
|
198
202
|
if (start == end) {
|
|
199
203
|
if (nws != start) {
|
|
@@ -784,13 +788,10 @@ size_t BalsaHeaders::RemoveValue(absl::string_view key,
|
|
|
784
788
|
bool found = absl::StartsWith(values, needle);
|
|
785
789
|
|
|
786
790
|
// Find the entirety of this value (including trailing comma if existent).
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
values.find(',', /* pos = */ found ? needle.size() : 0);
|
|
792
|
-
comma_found = next_comma != absl::string_view::npos;
|
|
793
|
-
cur_size = (comma_found ? next_comma + 1 : values.size());
|
|
791
|
+
const size_t next_comma =
|
|
792
|
+
values.find(',', /* pos = */ (found ? needle.size() : 0));
|
|
793
|
+
const bool comma_found = next_comma != absl::string_view::npos;
|
|
794
|
+
const size_t cur_size = (comma_found ? next_comma + 1 : values.size());
|
|
794
795
|
|
|
795
796
|
// Make sure that our prefix match is a full match.
|
|
796
797
|
if (found && cur_size != needle.size()) {
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
// A lightweight implementation for storing HTTP headers.
|
|
6
6
|
|
|
7
|
-
#ifndef
|
|
8
|
-
#define
|
|
7
|
+
#ifndef QUICHE_BALSA_BALSA_HEADERS_H_
|
|
8
|
+
#define QUICHE_BALSA_BALSA_HEADERS_H_
|
|
9
9
|
|
|
10
10
|
#include <cstddef>
|
|
11
11
|
#include <cstring>
|
|
@@ -17,14 +17,16 @@
|
|
|
17
17
|
#include <utility>
|
|
18
18
|
#include <vector>
|
|
19
19
|
|
|
20
|
+
#include "absl/container/flat_hash_map.h"
|
|
21
|
+
#include "absl/container/flat_hash_set.h"
|
|
20
22
|
#include "absl/memory/memory.h"
|
|
21
23
|
#include "absl/strings/ascii.h"
|
|
22
24
|
#include "absl/strings/match.h"
|
|
23
25
|
#include "absl/strings/string_view.h"
|
|
24
26
|
#include "absl/types/optional.h"
|
|
25
|
-
#include "quiche/
|
|
26
|
-
#include "quiche/
|
|
27
|
-
#include "quiche/
|
|
27
|
+
#include "quiche/balsa/balsa_enums.h"
|
|
28
|
+
#include "quiche/balsa/header_api.h"
|
|
29
|
+
#include "quiche/balsa/standard_header_map.h"
|
|
28
30
|
#include "quiche/common/platform/api/quiche_bug_tracker.h"
|
|
29
31
|
#include "quiche/common/platform/api/quiche_export.h"
|
|
30
32
|
#include "quiche/common/platform/api/quiche_logging.h"
|
|
@@ -517,6 +519,9 @@ class QUICHE_EXPORT_PRIVATE BalsaHeaders : public HeaderApi {
|
|
|
517
519
|
// Returns the value corresponding to the given header key. Returns an empty
|
|
518
520
|
// string if the header key does not exist. For headers that may consist of
|
|
519
521
|
// multiple lines, use GetAllOfHeader() instead.
|
|
522
|
+
// Make the QuicheLowerCaseString overload visible,
|
|
523
|
+
// and only override the absl::string_view one.
|
|
524
|
+
using HeaderApi::GetHeader;
|
|
520
525
|
absl::string_view GetHeader(absl::string_view key) const override;
|
|
521
526
|
|
|
522
527
|
// Iterates over all currently valid header lines, appending their
|
|
@@ -545,7 +550,8 @@ class QUICHE_EXPORT_PRIVATE BalsaHeaders : public HeaderApi {
|
|
|
545
550
|
// See gfe::header_properties::IsMultivaluedHeader() for which headers
|
|
546
551
|
// GFE treats as being multivalued.
|
|
547
552
|
|
|
548
|
-
// Make
|
|
553
|
+
// Make the QuicheLowerCaseString overload visible,
|
|
554
|
+
// and only override the absl::string_view one.
|
|
549
555
|
using HeaderApi::GetAllOfHeader;
|
|
550
556
|
void GetAllOfHeader(absl::string_view key,
|
|
551
557
|
std::vector<absl::string_view>* out) const override;
|
|
@@ -557,6 +563,9 @@ class QUICHE_EXPORT_PRIVATE BalsaHeaders : public HeaderApi {
|
|
|
557
563
|
std::vector<absl::string_view>* out) const;
|
|
558
564
|
|
|
559
565
|
// Joins all values for `key` into a comma-separated string.
|
|
566
|
+
// Make the QuicheLowerCaseString overload visible,
|
|
567
|
+
// and only override the absl::string_view one.
|
|
568
|
+
using HeaderApi::GetAllOfHeaderAsString;
|
|
560
569
|
std::string GetAllOfHeaderAsString(absl::string_view key) const override;
|
|
561
570
|
|
|
562
571
|
// Determine if a given header is present. Case-insensitive.
|
|
@@ -1337,7 +1346,6 @@ BalsaHeaders::header_lines_key_end() const {
|
|
|
1337
1346
|
inline void BalsaHeaders::erase(const const_header_lines_iterator& it) {
|
|
1338
1347
|
QUICHE_DCHECK_EQ(it.headers_, this);
|
|
1339
1348
|
QUICHE_DCHECK_LT(it.idx_, header_lines_.size());
|
|
1340
|
-
QUICHE_DCHECK_GE(it.idx_, 0u);
|
|
1341
1349
|
header_lines_[it.idx_].skip = true;
|
|
1342
1350
|
}
|
|
1343
1351
|
|
|
@@ -1466,4 +1474,4 @@ const IteratorType BalsaHeaders::HeaderLinesEndHelper() const {
|
|
|
1466
1474
|
|
|
1467
1475
|
} // namespace quiche
|
|
1468
1476
|
|
|
1469
|
-
#endif //
|
|
1477
|
+
#endif // QUICHE_BALSA_BALSA_HEADERS_H_
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// tested in the balsa_frame_test as the BalsaFrame and
|
|
7
7
|
// BalsaHeaders classes are fairly related.
|
|
8
8
|
|
|
9
|
-
#include "quiche/
|
|
9
|
+
#include "quiche/balsa/balsa_headers.h"
|
|
10
10
|
|
|
11
11
|
#include <cstring>
|
|
12
12
|
#include <limits>
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
#include "absl/strings/str_cat.h"
|
|
23
23
|
#include "absl/strings/str_format.h"
|
|
24
24
|
#include "absl/strings/string_view.h"
|
|
25
|
-
#include "quiche/
|
|
26
|
-
#include "quiche/
|
|
27
|
-
#include "quiche/
|
|
25
|
+
#include "quiche/balsa/balsa_enums.h"
|
|
26
|
+
#include "quiche/balsa/balsa_frame.h"
|
|
27
|
+
#include "quiche/balsa/simple_buffer.h"
|
|
28
|
+
#include "quiche/common/platform/api/quiche_expect_bug.h"
|
|
28
29
|
#include "quiche/common/platform/api/quiche_logging.h"
|
|
29
30
|
#include "quiche/common/platform/api/quiche_test.h"
|
|
30
|
-
#include "quiche/common/platform/api/quiche_test_helpers.h"
|
|
31
31
|
|
|
32
32
|
using absl::make_unique;
|
|
33
33
|
using testing::AnyOf;
|
|
@@ -837,11 +837,11 @@ TEST(BalsaHeaders, TestRemovingValues) {
|
|
|
837
837
|
EXPECT_TRUE(headers.HeaderHasValue(key, value2));
|
|
838
838
|
EXPECT_EQ(value, headers.GetAllOfHeaderAsString(key));
|
|
839
839
|
|
|
840
|
-
|
|
840
|
+
EXPECT_EQ(1u, headers.RemoveValue(key, value2));
|
|
841
841
|
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
842
|
+
EXPECT_TRUE(headers.HeaderHasValue(key, value1));
|
|
843
|
+
EXPECT_FALSE(headers.HeaderHasValue(key, value2));
|
|
844
|
+
EXPECT_EQ(value1, headers.GetAllOfHeaderAsString(key));
|
|
845
845
|
}
|
|
846
846
|
|
|
847
847
|
{
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
#ifndef
|
|
6
|
-
#define
|
|
5
|
+
#ifndef QUICHE_BALSA_BALSA_VISITOR_INTERFACE_H_
|
|
6
|
+
#define QUICHE_BALSA_BALSA_VISITOR_INTERFACE_H_
|
|
7
7
|
|
|
8
8
|
#include <cstddef>
|
|
9
9
|
|
|
10
10
|
#include "absl/strings/string_view.h"
|
|
11
|
-
#include "quiche/
|
|
11
|
+
#include "quiche/balsa/balsa_enums.h"
|
|
12
12
|
#include "quiche/common/platform/api/quiche_export.h"
|
|
13
13
|
|
|
14
14
|
namespace quiche {
|
|
@@ -145,4 +145,4 @@ class QUICHE_EXPORT_PRIVATE BalsaVisitorInterface {
|
|
|
145
145
|
|
|
146
146
|
} // namespace quiche
|
|
147
147
|
|
|
148
|
-
#endif //
|
|
148
|
+
#endif // QUICHE_BALSA_BALSA_VISITOR_INTERFACE_H_
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
#ifndef
|
|
6
|
-
#define
|
|
5
|
+
#ifndef QUICHE_BALSA_FRAMER_INTERFACE_H_
|
|
6
|
+
#define QUICHE_BALSA_FRAMER_INTERFACE_H_
|
|
7
7
|
|
|
8
8
|
#include <cstddef>
|
|
9
9
|
|
|
@@ -21,4 +21,4 @@ class QUICHE_EXPORT_PRIVATE FramerInterface {
|
|
|
21
21
|
|
|
22
22
|
} // namespace quiche
|
|
23
23
|
|
|
24
|
-
#endif //
|
|
24
|
+
#endif // QUICHE_BALSA_FRAMER_INTERFACE_H_
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
#ifndef
|
|
6
|
-
#define
|
|
5
|
+
#ifndef QUICHE_BALSA_HEADER_API_H_
|
|
6
|
+
#define QUICHE_BALSA_HEADER_API_H_
|
|
7
7
|
|
|
8
8
|
#include <cstddef>
|
|
9
9
|
#include <functional>
|
|
@@ -271,4 +271,4 @@ class QUICHE_EXPORT_PRIVATE HeaderApi : public virtual ConstHeaderApi {
|
|
|
271
271
|
|
|
272
272
|
} // namespace quiche
|
|
273
273
|
|
|
274
|
-
#endif //
|
|
274
|
+
#endif // QUICHE_BALSA_HEADER_API_H_
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
-
#ifndef
|
|
6
|
-
#define
|
|
5
|
+
#ifndef QUICHE_BALSA_HEADER_PROPERTIES_H_
|
|
6
|
+
#define QUICHE_BALSA_HEADER_PROPERTIES_H_
|
|
7
7
|
|
|
8
8
|
#include <cstdint>
|
|
9
9
|
|
|
@@ -47,4 +47,4 @@ QUICHE_EXPORT_PRIVATE bool HasInvalidHeaderChars(absl::string_view value);
|
|
|
47
47
|
|
|
48
48
|
} // namespace quiche::header_properties
|
|
49
49
|
|
|
50
|
-
#endif //
|
|
50
|
+
#endif // QUICHE_BALSA_HEADER_PROPERTIES_H_
|