@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,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_HTTP_VALIDATION_POLICY_H_
|
|
6
|
+
#define QUICHE_BALSA_HTTP_VALIDATION_POLICY_H_
|
|
7
7
|
|
|
8
8
|
#include <ostream>
|
|
9
9
|
|
|
@@ -52,4 +52,4 @@ class QUICHE_EXPORT_PRIVATE HttpValidationPolicy {
|
|
|
52
52
|
|
|
53
53
|
} // namespace quiche
|
|
54
54
|
|
|
55
|
-
#endif //
|
|
55
|
+
#endif // QUICHE_BALSA_HTTP_VALIDATION_POLICY_H_
|
|
@@ -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_NOOP_BALSA_VISITOR_H_
|
|
6
|
+
#define QUICHE_BALSA_NOOP_BALSA_VISITOR_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_visitor_interface.h"
|
|
12
12
|
#include "quiche/common/platform/api/quiche_export.h"
|
|
13
13
|
|
|
14
14
|
namespace quiche {
|
|
@@ -53,4 +53,4 @@ class QUICHE_EXPORT_PRIVATE NoOpBalsaVisitor : public BalsaVisitorInterface {
|
|
|
53
53
|
|
|
54
54
|
} // namespace quiche
|
|
55
55
|
|
|
56
|
-
#endif //
|
|
56
|
+
#endif // QUICHE_BALSA_NOOP_BALSA_VISITOR_H_
|
|
@@ -2,8 +2,9 @@
|
|
|
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/simple_buffer.h"
|
|
6
6
|
|
|
7
|
+
#include <algorithm>
|
|
7
8
|
#include <cstring>
|
|
8
9
|
#include <memory>
|
|
9
10
|
|
|
@@ -12,35 +13,20 @@
|
|
|
12
13
|
|
|
13
14
|
namespace quiche {
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
constexpr int kMinimumSimpleBufferSize = 10;
|
|
16
17
|
|
|
17
|
-
SimpleBuffer::SimpleBuffer()
|
|
18
|
-
: storage_(new char[kInitialSimpleBufferSize]),
|
|
19
|
-
write_idx_(0),
|
|
20
|
-
read_idx_(0),
|
|
21
|
-
storage_size_(kInitialSimpleBufferSize) {}
|
|
22
|
-
|
|
23
|
-
SimpleBuffer::SimpleBuffer(int size)
|
|
24
|
-
: write_idx_(0), read_idx_(0), storage_size_(size) {
|
|
25
|
-
// Callers may try to allocate overly large blocks, but negative sizes are
|
|
26
|
-
// obviously wrong.
|
|
27
|
-
QUICHE_CHECK_GE(size, 0);
|
|
28
|
-
storage_ = new char[size];
|
|
29
|
-
}
|
|
18
|
+
SimpleBuffer::SimpleBuffer(int size) { Reserve(size); }
|
|
30
19
|
|
|
31
20
|
////////////////////////////////////////////////////////////////////////////////
|
|
32
21
|
|
|
33
22
|
int SimpleBuffer::Write(const char* bytes, int size) {
|
|
34
|
-
if (size
|
|
35
|
-
|
|
23
|
+
if (size <= 0) {
|
|
24
|
+
QUICHE_BUG_IF(simple_buffer_write_negative_size, size < 0)
|
|
36
25
|
<< "size must not be negative: " << size;
|
|
37
26
|
return 0;
|
|
38
27
|
}
|
|
39
28
|
|
|
40
|
-
|
|
41
|
-
if (!has_room) {
|
|
42
|
-
Reserve(size);
|
|
43
|
-
}
|
|
29
|
+
Reserve(size);
|
|
44
30
|
memcpy(storage_ + write_idx_, bytes, size);
|
|
45
31
|
AdvanceWritablePtr(size);
|
|
46
32
|
return size;
|
|
@@ -58,9 +44,11 @@ int SimpleBuffer::Read(char* bytes, int size) {
|
|
|
58
44
|
char* read_ptr = nullptr;
|
|
59
45
|
int read_size = 0;
|
|
60
46
|
GetReadablePtr(&read_ptr, &read_size);
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
read_size = std::min(read_size, size);
|
|
48
|
+
if (read_size == 0) {
|
|
49
|
+
return 0;
|
|
63
50
|
}
|
|
51
|
+
|
|
64
52
|
memcpy(bytes, read_ptr, read_size);
|
|
65
53
|
AdvanceReadablePtr(read_size);
|
|
66
54
|
return read_size;
|
|
@@ -85,6 +73,15 @@ void SimpleBuffer::Reserve(int size) {
|
|
|
85
73
|
int read_size = 0;
|
|
86
74
|
GetReadablePtr(&read_ptr, &read_size);
|
|
87
75
|
|
|
76
|
+
if (read_ptr == nullptr) {
|
|
77
|
+
QUICHE_DCHECK_EQ(0, read_size);
|
|
78
|
+
|
|
79
|
+
size = std::max(size, kMinimumSimpleBufferSize);
|
|
80
|
+
storage_ = new char[size];
|
|
81
|
+
storage_size_ = size;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
88
85
|
if (read_size + size <= storage_size_) {
|
|
89
86
|
// Can reclaim space from consumed bytes by shifting.
|
|
90
87
|
memmove(storage_, read_ptr, read_size);
|
|
@@ -95,19 +92,15 @@ void SimpleBuffer::Reserve(int size) {
|
|
|
95
92
|
|
|
96
93
|
// The new buffer needs to be at least `read_size + size` bytes.
|
|
97
94
|
// At least double the buffer to amortize allocation costs.
|
|
98
|
-
|
|
99
|
-
if (new_storage_size < size + read_size) {
|
|
100
|
-
new_storage_size = size + read_size;
|
|
101
|
-
}
|
|
95
|
+
storage_size_ = std::max(2 * storage_size_, size + read_size);
|
|
102
96
|
|
|
103
|
-
char* new_storage = new char[
|
|
97
|
+
char* new_storage = new char[storage_size_];
|
|
104
98
|
memcpy(new_storage, read_ptr, read_size);
|
|
105
99
|
delete[] storage_;
|
|
106
100
|
|
|
107
101
|
read_idx_ = 0;
|
|
108
102
|
write_idx_ = read_size;
|
|
109
103
|
storage_ = new_storage;
|
|
110
|
-
storage_size_ = new_storage_size;
|
|
111
104
|
}
|
|
112
105
|
|
|
113
106
|
void SimpleBuffer::AdvanceReadablePtr(int amount_to_advance) {
|
|
@@ -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_SIMPLE_BUFFER_H_
|
|
6
|
+
#define QUICHE_BALSA_SIMPLE_BUFFER_H_
|
|
7
7
|
|
|
8
8
|
#include "absl/strings/string_view.h"
|
|
9
9
|
#include "quiche/common/platform/api/quiche_export.h"
|
|
@@ -20,8 +20,8 @@ class SimpleBufferTest;
|
|
|
20
20
|
// position. Reading consumes data.
|
|
21
21
|
class QUICHE_EXPORT_PRIVATE SimpleBuffer {
|
|
22
22
|
public:
|
|
23
|
-
SimpleBuffer();
|
|
24
|
-
// Create SimpleBuffer with `size` reserved capacity.
|
|
23
|
+
SimpleBuffer() = default;
|
|
24
|
+
// Create SimpleBuffer with at least `size` reserved capacity.
|
|
25
25
|
explicit SimpleBuffer(int size);
|
|
26
26
|
|
|
27
27
|
SimpleBuffer(const SimpleBuffer&) = delete;
|
|
@@ -40,18 +40,19 @@ class QUICHE_EXPORT_PRIVATE SimpleBuffer {
|
|
|
40
40
|
return Write(piece.data(), piece.size());
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
//
|
|
44
|
-
// of characters
|
|
45
|
-
// size can be used in functions like recv() or read(). If
|
|
46
|
-
// upon returning from this function, then it is unsafe to
|
|
47
|
-
// Writing to this region after calling any other
|
|
48
|
-
// undefined behavior.
|
|
43
|
+
// Stores the pointer into the buffer that can be written to in `*ptr`, and
|
|
44
|
+
// the number of characters that are allowed to be written in `*size`. The
|
|
45
|
+
// pointer and size can be used in functions like recv() or read(). If
|
|
46
|
+
// `*size` is zero upon returning from this function, then it is unsafe to
|
|
47
|
+
// dereference `*ptr`. Writing to this region after calling any other
|
|
48
|
+
// non-const method results in undefined behavior.
|
|
49
49
|
void GetWritablePtr(char** ptr, int* size) const {
|
|
50
50
|
*ptr = storage_ + write_idx_;
|
|
51
51
|
*size = storage_size_ - write_idx_;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
//
|
|
54
|
+
// Stores the pointer that can be read from in `*ptr`, and the number of bytes
|
|
55
|
+
// that are allowed to be read in `*size`. The pointer and size can be used
|
|
55
56
|
// in functions like send() or write(). If `*size` is zero upon returning
|
|
56
57
|
// from this function, then it is unsafe to dereference `*ptr`. Reading from
|
|
57
58
|
// this region after calling any other non-const method results in undefined
|
|
@@ -100,17 +101,18 @@ class QUICHE_EXPORT_PRIVATE SimpleBuffer {
|
|
|
100
101
|
|
|
101
102
|
// The buffer owned by this class starts at `*storage_` and is `storage_size_`
|
|
102
103
|
// bytes long.
|
|
104
|
+
// If `storage_` is nullptr, then `storage_size_` must be zero.
|
|
103
105
|
// `0 <= read_idx_ <= write_idx_ <= storage_size_` must always hold.
|
|
104
106
|
// If `read_idx_ == write_idx_`, then they must be equal to zero.
|
|
105
107
|
// The first `read_idx_` bytes of the buffer are consumed,
|
|
106
108
|
// the next `write_idx_ - read_idx_` bytes are the readable region, and the
|
|
107
109
|
// remaining `storage_size_ - write_idx_` bytes are the writable region.
|
|
108
|
-
char* storage_;
|
|
109
|
-
int write_idx_;
|
|
110
|
-
int read_idx_;
|
|
111
|
-
int storage_size_;
|
|
110
|
+
char* storage_ = nullptr;
|
|
111
|
+
int write_idx_ = 0;
|
|
112
|
+
int read_idx_ = 0;
|
|
113
|
+
int storage_size_ = 0;
|
|
112
114
|
};
|
|
113
115
|
|
|
114
116
|
} // namespace quiche
|
|
115
117
|
|
|
116
|
-
#endif //
|
|
118
|
+
#endif // QUICHE_BALSA_SIMPLE_BUFFER_H_
|
|
@@ -2,11 +2,12 @@
|
|
|
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/simple_buffer.h"
|
|
6
6
|
|
|
7
7
|
#include <string>
|
|
8
8
|
|
|
9
9
|
#include "absl/strings/string_view.h"
|
|
10
|
+
#include "quiche/common/platform/api/quiche_expect_bug.h"
|
|
10
11
|
#include "quiche/common/platform/api/quiche_test.h"
|
|
11
12
|
|
|
12
13
|
namespace quiche {
|
|
@@ -15,6 +16,8 @@ namespace test {
|
|
|
15
16
|
|
|
16
17
|
namespace {
|
|
17
18
|
|
|
19
|
+
constexpr int kMinimumSimpleBufferSize = 10;
|
|
20
|
+
|
|
18
21
|
// Buffer full of 40 char strings.
|
|
19
22
|
const char ibuf[] = {
|
|
20
23
|
"123456789!@#$%^&*()abcdefghijklmnopqrstu"
|
|
@@ -35,31 +38,60 @@ class SimpleBufferTest : public QuicheTest {
|
|
|
35
38
|
|
|
36
39
|
namespace {
|
|
37
40
|
|
|
38
|
-
TEST_F(SimpleBufferTest,
|
|
39
|
-
SimpleBuffer
|
|
40
|
-
EXPECT_EQ(
|
|
41
|
+
TEST_F(SimpleBufferTest, CreationWithSize) {
|
|
42
|
+
SimpleBuffer buffer1(5);
|
|
43
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer1));
|
|
44
|
+
|
|
45
|
+
SimpleBuffer buffer2(25);
|
|
46
|
+
EXPECT_EQ(25, storage_size(buffer2));
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
// Make sure that a zero-sized initial buffer does not throw things off.
|
|
44
|
-
TEST_F(SimpleBufferTest,
|
|
50
|
+
TEST_F(SimpleBufferTest, CreationWithZeroSize) {
|
|
45
51
|
SimpleBuffer buffer(0);
|
|
46
52
|
EXPECT_EQ(0, storage_size(buffer));
|
|
47
53
|
EXPECT_EQ(4, buffer.Write(ibuf, 4));
|
|
48
54
|
EXPECT_EQ(4, write_idx(buffer));
|
|
49
|
-
EXPECT_EQ(
|
|
55
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
50
56
|
EXPECT_EQ(4, buffer.ReadableBytes());
|
|
51
57
|
}
|
|
52
58
|
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
TEST_F(SimpleBufferTest, ReadZeroBytes) {
|
|
60
|
+
SimpleBuffer buffer;
|
|
61
|
+
|
|
62
|
+
EXPECT_EQ(0, buffer.Read(nullptr, 0));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
TEST_F(SimpleBufferTest, WriteZeroFromNullptr) {
|
|
66
|
+
SimpleBuffer buffer;
|
|
67
|
+
|
|
68
|
+
EXPECT_EQ(0, buffer.Write(nullptr, 0));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
TEST(SimpleBufferExpectBug, ReserveNegativeSize) {
|
|
72
|
+
SimpleBuffer buffer;
|
|
73
|
+
|
|
74
|
+
EXPECT_QUICHE_BUG(buffer.Reserve(-1), "size must not be negative");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
TEST(SimpleBufferExpectBug, ReadNegativeSize) {
|
|
78
|
+
SimpleBuffer buffer;
|
|
79
|
+
|
|
80
|
+
EXPECT_QUICHE_BUG(buffer.Read(nullptr, -1), "size must not be negative");
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
TEST(SimpleBufferExpectBug, WriteNegativeSize) {
|
|
84
|
+
SimpleBuffer buffer;
|
|
85
|
+
|
|
86
|
+
EXPECT_QUICHE_BUG(buffer.Write(nullptr, -1), "size must not be negative");
|
|
55
87
|
}
|
|
56
88
|
|
|
57
|
-
TEST_F(SimpleBufferTest,
|
|
89
|
+
TEST_F(SimpleBufferTest, Basics) {
|
|
58
90
|
SimpleBuffer buffer;
|
|
59
91
|
|
|
60
92
|
EXPECT_TRUE(buffer.Empty());
|
|
61
93
|
EXPECT_EQ("", buffer.GetReadableRegion());
|
|
62
|
-
EXPECT_EQ(
|
|
94
|
+
EXPECT_EQ(0, storage_size(buffer));
|
|
63
95
|
EXPECT_EQ(0, read_idx(buffer));
|
|
64
96
|
EXPECT_EQ(0, write_idx(buffer));
|
|
65
97
|
|
|
@@ -73,20 +105,20 @@ TEST_F(SimpleBufferTest, TestBasics) {
|
|
|
73
105
|
EXPECT_EQ(storage(buffer), readable_ptr);
|
|
74
106
|
EXPECT_EQ(0, readable_size);
|
|
75
107
|
EXPECT_EQ(storage(buffer), writeable_ptr);
|
|
76
|
-
EXPECT_EQ(
|
|
108
|
+
EXPECT_EQ(0, writable_size);
|
|
77
109
|
EXPECT_EQ(0, buffer.ReadableBytes());
|
|
78
110
|
|
|
79
111
|
const SimpleBuffer buffer2;
|
|
80
112
|
EXPECT_EQ(0, buffer2.ReadableBytes());
|
|
81
113
|
}
|
|
82
114
|
|
|
83
|
-
TEST_F(SimpleBufferTest,
|
|
115
|
+
TEST_F(SimpleBufferTest, BasicWR) {
|
|
84
116
|
SimpleBuffer buffer;
|
|
85
117
|
|
|
86
118
|
EXPECT_EQ(4, buffer.Write(ibuf, 4));
|
|
87
119
|
EXPECT_EQ(0, read_idx(buffer));
|
|
88
120
|
EXPECT_EQ(4, write_idx(buffer));
|
|
89
|
-
EXPECT_EQ(
|
|
121
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
90
122
|
EXPECT_EQ(4, buffer.ReadableBytes());
|
|
91
123
|
EXPECT_EQ("1234", buffer.GetReadableRegion());
|
|
92
124
|
int bytes_written = 4;
|
|
@@ -109,7 +141,7 @@ TEST_F(SimpleBufferTest, TestBasicWR) {
|
|
|
109
141
|
EXPECT_EQ(4, buffer.Read(obuf + bytes_read, 40));
|
|
110
142
|
EXPECT_EQ(0, read_idx(buffer));
|
|
111
143
|
EXPECT_EQ(0, write_idx(buffer));
|
|
112
|
-
EXPECT_EQ(
|
|
144
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
113
145
|
EXPECT_EQ(0, buffer.ReadableBytes());
|
|
114
146
|
EXPECT_EQ("", buffer.GetReadableRegion());
|
|
115
147
|
bytes_read += 4;
|
|
@@ -119,7 +151,7 @@ TEST_F(SimpleBufferTest, TestBasicWR) {
|
|
|
119
151
|
EXPECT_EQ(storage(buffer), readable_ptr);
|
|
120
152
|
EXPECT_EQ(0, readable_size);
|
|
121
153
|
EXPECT_EQ(storage(buffer), writeable_ptr);
|
|
122
|
-
EXPECT_EQ(
|
|
154
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, writable_size);
|
|
123
155
|
|
|
124
156
|
EXPECT_EQ(bytes_written, bytes_read);
|
|
125
157
|
for (int i = 0; i < bytes_read; ++i) {
|
|
@@ -160,37 +192,41 @@ TEST_F(SimpleBufferTest, TestBasicWR) {
|
|
|
160
192
|
}
|
|
161
193
|
}
|
|
162
194
|
|
|
163
|
-
TEST_F(SimpleBufferTest,
|
|
195
|
+
TEST_F(SimpleBufferTest, Reserve) {
|
|
164
196
|
SimpleBuffer buffer;
|
|
197
|
+
EXPECT_EQ(0, storage_size(buffer));
|
|
198
|
+
|
|
199
|
+
buffer.WriteString("foo");
|
|
200
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
165
201
|
|
|
166
202
|
// Reserve by expanding the buffer.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
EXPECT_EQ(2 * initial_size, storage_size(buffer));
|
|
203
|
+
buffer.Reserve(kMinimumSimpleBufferSize + 1);
|
|
204
|
+
EXPECT_EQ(2 * kMinimumSimpleBufferSize, storage_size(buffer));
|
|
170
205
|
|
|
171
|
-
buffer.
|
|
172
|
-
buffer.
|
|
173
|
-
|
|
174
|
-
EXPECT_EQ(
|
|
206
|
+
buffer.Clear();
|
|
207
|
+
buffer.AdvanceWritablePtr(kMinimumSimpleBufferSize);
|
|
208
|
+
buffer.AdvanceReadablePtr(kMinimumSimpleBufferSize - 2);
|
|
209
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, write_idx(buffer));
|
|
210
|
+
EXPECT_EQ(2 * kMinimumSimpleBufferSize, storage_size(buffer));
|
|
175
211
|
|
|
176
212
|
// Reserve by moving data around. `storage_size` does not change.
|
|
177
|
-
buffer.Reserve(
|
|
213
|
+
buffer.Reserve(kMinimumSimpleBufferSize + 1);
|
|
178
214
|
EXPECT_EQ(2, write_idx(buffer));
|
|
179
|
-
EXPECT_EQ(2 *
|
|
215
|
+
EXPECT_EQ(2 * kMinimumSimpleBufferSize, storage_size(buffer));
|
|
180
216
|
}
|
|
181
217
|
|
|
182
|
-
TEST_F(SimpleBufferTest,
|
|
218
|
+
TEST_F(SimpleBufferTest, Extend) {
|
|
183
219
|
SimpleBuffer buffer;
|
|
184
220
|
|
|
185
221
|
// Test a write which should not extend the buffer.
|
|
186
222
|
EXPECT_EQ(7, buffer.Write(ibuf, 7));
|
|
187
223
|
EXPECT_EQ(0, read_idx(buffer));
|
|
188
224
|
EXPECT_EQ(7, write_idx(buffer));
|
|
189
|
-
EXPECT_EQ(
|
|
225
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
190
226
|
EXPECT_EQ(7, buffer.ReadableBytes());
|
|
191
227
|
EXPECT_EQ(0, read_idx(buffer));
|
|
192
228
|
EXPECT_EQ(7, write_idx(buffer));
|
|
193
|
-
EXPECT_EQ(
|
|
229
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
194
230
|
EXPECT_EQ(7, buffer.ReadableBytes());
|
|
195
231
|
int bytes_written = 7;
|
|
196
232
|
|
|
@@ -218,18 +254,26 @@ TEST_F(SimpleBufferTest, TestExtend) {
|
|
|
218
254
|
}
|
|
219
255
|
}
|
|
220
256
|
|
|
221
|
-
TEST_F(SimpleBufferTest,
|
|
257
|
+
TEST_F(SimpleBufferTest, Clear) {
|
|
222
258
|
SimpleBuffer buffer;
|
|
223
259
|
|
|
224
260
|
buffer.Clear();
|
|
261
|
+
|
|
225
262
|
EXPECT_EQ(0, read_idx(buffer));
|
|
226
263
|
EXPECT_EQ(0, write_idx(buffer));
|
|
227
|
-
EXPECT_EQ(
|
|
264
|
+
EXPECT_EQ(0, storage_size(buffer));
|
|
265
|
+
EXPECT_EQ(0, buffer.ReadableBytes());
|
|
266
|
+
|
|
267
|
+
buffer.WriteString("foo");
|
|
268
|
+
buffer.Clear();
|
|
269
|
+
|
|
270
|
+
EXPECT_EQ(0, read_idx(buffer));
|
|
271
|
+
EXPECT_EQ(0, write_idx(buffer));
|
|
272
|
+
EXPECT_EQ(kMinimumSimpleBufferSize, storage_size(buffer));
|
|
228
273
|
EXPECT_EQ(0, buffer.ReadableBytes());
|
|
229
|
-
EXPECT_EQ(10, storage_size(buffer));
|
|
230
274
|
}
|
|
231
275
|
|
|
232
|
-
TEST_F(SimpleBufferTest,
|
|
276
|
+
TEST_F(SimpleBufferTest, LongWrite) {
|
|
233
277
|
SimpleBuffer buffer;
|
|
234
278
|
|
|
235
279
|
std::string s1 = "HTTP/1.1 500 Service Unavailable";
|
|
@@ -337,11 +381,13 @@ TEST_F(SimpleBufferTest, ReleaseAsSlice) {
|
|
|
337
381
|
char* readable_ptr = nullptr;
|
|
338
382
|
int readable_size = 0;
|
|
339
383
|
buffer.GetReadablePtr(&readable_ptr, &readable_size);
|
|
384
|
+
EXPECT_EQ(nullptr, readable_ptr);
|
|
340
385
|
EXPECT_EQ(0, readable_size);
|
|
341
386
|
|
|
342
387
|
buffer.WriteString("def");
|
|
343
388
|
slice = buffer.ReleaseAsSlice();
|
|
344
389
|
buffer.GetReadablePtr(&readable_ptr, &readable_size);
|
|
390
|
+
EXPECT_EQ(nullptr, readable_ptr);
|
|
345
391
|
EXPECT_EQ(0, readable_size);
|
|
346
392
|
EXPECT_EQ("def", slice.AsStringView());
|
|
347
393
|
}
|
|
@@ -353,6 +399,7 @@ TEST_F(SimpleBufferTest, EmptyBufferReleaseAsSlice) {
|
|
|
353
399
|
|
|
354
400
|
QuicheMemSlice slice = buffer.ReleaseAsSlice();
|
|
355
401
|
buffer.GetReadablePtr(&readable_ptr, &readable_size);
|
|
402
|
+
EXPECT_EQ(nullptr, readable_ptr);
|
|
356
403
|
EXPECT_EQ(0, readable_size);
|
|
357
404
|
EXPECT_TRUE(slice.empty());
|
|
358
405
|
}
|
|
@@ -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_STANDARD_HEADER_MAP_H_
|
|
6
|
+
#define QUICHE_BALSA_STANDARD_HEADER_MAP_H_
|
|
7
7
|
|
|
8
8
|
#include "absl/container/flat_hash_set.h"
|
|
9
9
|
#include "absl/strings/string_view.h"
|
|
@@ -21,4 +21,4 @@ const StandardHttpHeaderNameSet& GetStandardHeaderSet();
|
|
|
21
21
|
|
|
22
22
|
} // namespace quiche
|
|
23
23
|
|
|
24
|
-
#endif //
|
|
24
|
+
#endif // QUICHE_BALSA_STANDARD_HEADER_MAP_H_
|
|
@@ -11,12 +11,17 @@
|
|
|
11
11
|
#include "quiche_platform_impl/quiche_command_line_flags_impl.h"
|
|
12
12
|
|
|
13
13
|
// Define a command-line flag that can be automatically set via
|
|
14
|
-
// QuicheParseCommandLineFlags().
|
|
14
|
+
// QuicheParseCommandLineFlags(). The macro has to be called in the .cc file of
|
|
15
|
+
// a unit test or the CLI tool reading the flag.
|
|
15
16
|
#define DEFINE_QUICHE_COMMAND_LINE_FLAG(type, name, default_value, help) \
|
|
16
17
|
DEFINE_QUICHE_COMMAND_LINE_FLAG_IMPL(type, name, default_value, help)
|
|
17
18
|
|
|
18
19
|
namespace quiche {
|
|
19
20
|
|
|
21
|
+
// The impl header must provide GetQuicheCommandLineFlag(), which takes
|
|
22
|
+
// PlatformSpecificFlag<T> variable defined by the macro above, and returns the
|
|
23
|
+
// flag value of type T.
|
|
24
|
+
|
|
20
25
|
// Parses command-line flags, setting flag variables defined using
|
|
21
26
|
// DEFINE_QUICHE_COMMAND_LINE_FLAG if they appear in the command line, and
|
|
22
27
|
// returning a list of any non-flag arguments specified in the command line. If
|
|
@@ -5,8 +5,12 @@
|
|
|
5
5
|
#ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_FLAGS_H_
|
|
6
6
|
#define QUICHE_COMMON_PLATFORM_API_QUICHE_FLAGS_H_
|
|
7
7
|
|
|
8
|
+
#include "quiche_platform_impl/quic_flags_impl.h"
|
|
8
9
|
#include "quiche_platform_impl/quiche_flags_impl.h"
|
|
9
10
|
|
|
11
|
+
// Flags accessed via GetQuicheReloadableFlag/GetQuicheRestartFlag are temporary
|
|
12
|
+
// boolean flags that are used to enable or disable code behavior changes. The
|
|
13
|
+
// current list is available in the quiche/quic/core/quic_flags_list.h file.
|
|
10
14
|
#define GetQuicheReloadableFlag(module, flag) \
|
|
11
15
|
GetQuicheReloadableFlagImpl(module, flag)
|
|
12
16
|
#define SetQuicheReloadableFlag(module, flag, value) \
|
|
@@ -15,6 +19,10 @@
|
|
|
15
19
|
GetQuicheRestartFlagImpl(module, flag)
|
|
16
20
|
#define SetQuicheRestartFlag(module, flag, value) \
|
|
17
21
|
SetQuicheRestartFlagImpl(module, flag, value)
|
|
22
|
+
|
|
23
|
+
// Flags accessed via GetQuicheFlag are permanent flags used to control QUICHE
|
|
24
|
+
// library behavior. The current list is available in the
|
|
25
|
+
// quiche/quic/core/quic_protocol_flags_list.h file.
|
|
18
26
|
#define GetQuicheFlag(flag) GetQuicheFlagImpl(flag)
|
|
19
27
|
#define SetQuicheFlag(flag, value) SetQuicheFlagImpl(flag, value)
|
|
20
28
|
|
|
@@ -26,9 +26,6 @@
|
|
|
26
26
|
#define QUICHE_LOG_IF(severity, condition) \
|
|
27
27
|
QUICHE_LOG_IF_IMPL(severity, condition)
|
|
28
28
|
|
|
29
|
-
#define QUICHE_PREDICT_FALSE(x) QUICHE_PREDICT_FALSE_IMPL(x)
|
|
30
|
-
#define QUICHE_PREDICT_TRUE(x) QUICHE_PREDICT_TRUE_IMPL(x)
|
|
31
|
-
|
|
32
29
|
// This is a noop in release build.
|
|
33
30
|
#define QUICHE_NOTREACHED() QUICHE_NOTREACHED_IMPL()
|
|
34
31
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright 2022 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/common/platform/api/quiche_lower_case_string.h"
|
|
6
|
+
|
|
7
|
+
#include "absl/strings/string_view.h"
|
|
8
|
+
#include "quiche/common/platform/api/quiche_test.h"
|
|
9
|
+
|
|
10
|
+
namespace quiche::test {
|
|
11
|
+
namespace {
|
|
12
|
+
|
|
13
|
+
TEST(QuicheLowerCaseString, Basic) {
|
|
14
|
+
QuicheLowerCaseString empty("");
|
|
15
|
+
EXPECT_EQ("", empty.get());
|
|
16
|
+
|
|
17
|
+
QuicheLowerCaseString from_lower_case("foo");
|
|
18
|
+
EXPECT_EQ("foo", from_lower_case.get());
|
|
19
|
+
|
|
20
|
+
QuicheLowerCaseString from_mixed_case("BaR");
|
|
21
|
+
EXPECT_EQ("bar", from_mixed_case.get());
|
|
22
|
+
|
|
23
|
+
const absl::string_view kData = "FooBar";
|
|
24
|
+
QuicheLowerCaseString from_string_view(kData);
|
|
25
|
+
EXPECT_EQ("foobar", from_string_view.get());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
} // namespace
|
|
29
|
+
} // namespace quiche::test
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
#include "quiche_platform_impl/quiche_test_impl.h"
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
namespace quiche::test {
|
|
11
|
+
|
|
12
|
+
using QuicheTest = QuicheTestImpl;
|
|
11
13
|
|
|
12
14
|
template <class T>
|
|
13
|
-
using QuicheTestWithParam =
|
|
15
|
+
using QuicheTestWithParam = QuicheTestWithParamImpl<T>;
|
|
14
16
|
|
|
15
17
|
using QuicheFlagSaver = QuicheFlagSaverImpl;
|
|
16
18
|
|
|
@@ -21,17 +23,13 @@ inline std::string QuicheGetTestMemoryCachePath() {
|
|
|
21
23
|
return QuicheGetTestMemoryCachePathImpl();
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
namespace quiche {
|
|
25
|
-
namespace test {
|
|
26
|
-
|
|
27
26
|
// Returns the path to quiche/common directory where the test data could be
|
|
28
27
|
// located.
|
|
29
28
|
inline std::string QuicheGetCommonSourcePath() {
|
|
30
29
|
return QuicheGetCommonSourcePathImpl();
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
} // namespace test
|
|
34
|
-
} // namespace quiche
|
|
32
|
+
} // namespace quiche::test
|
|
35
33
|
|
|
36
34
|
#define EXPECT_QUICHE_DEBUG_DEATH(condition, message) \
|
|
37
35
|
EXPECT_QUICHE_DEBUG_DEATH_IMPL(condition, message)
|
package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quic_flags_impl.h
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
#ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUIC_FLAGS_IMPL_H_
|
|
6
6
|
#define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUIC_FLAGS_IMPL_H_
|
|
7
7
|
|
|
8
|
-
#include <
|
|
8
|
+
#include <cstdint>
|
|
9
9
|
|
|
10
10
|
#include "quiche/common/platform/api/quiche_export.h"
|
|
11
11
|
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
#include "quiche/common/platform/api/quiche_logging.h"
|
|
9
9
|
|
|
10
|
-
#define QUICHE_BUG_IMPL(b) QUICHE_LOG(DFATAL)
|
|
11
|
-
#define QUICHE_BUG_IF_IMPL(b, condition)
|
|
10
|
+
#define QUICHE_BUG_IMPL(b) QUICHE_LOG(DFATAL) << #b ": "
|
|
11
|
+
#define QUICHE_BUG_IF_IMPL(b, condition) \
|
|
12
|
+
QUICHE_LOG_IF(DFATAL, condition) << #b ": "
|
|
12
13
|
#define QUICHE_PEER_BUG_IMPL(b) QUICHE_LOG(DFATAL)
|
|
13
14
|
#define QUICHE_PEER_BUG_IF_IMPL(b, condition) QUICHE_LOG_IF(DFATAL, condition)
|
|
14
15
|
|