grpc 1.53.0 → 1.54.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +80 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/grpc_types.h +11 -2
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +137 -0
- data/src/core/ext/gcp/metadata_query.h +87 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +5 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +118 -222
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +295 -113
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +466 -273
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +9 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +43 -42
- data/src/core/lib/surface/validate_metadata.h +9 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +9 -6
- data/src/core/lib/transport/metadata_batch.h +168 -18
- data/src/core/lib/transport/parsed_metadata.h +19 -9
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +105 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -45,10 +45,55 @@
|
|
45
45
|
#include "src/core/lib/gprpp/time.h"
|
46
46
|
#include "src/core/lib/resource_quota/arena.h"
|
47
47
|
#include "src/core/lib/slice/slice.h"
|
48
|
+
#include "src/core/lib/transport/custom_metadata.h"
|
48
49
|
#include "src/core/lib/transport/parsed_metadata.h"
|
49
50
|
|
50
51
|
namespace grpc_core {
|
51
52
|
|
53
|
+
///////////////////////////////////////////////////////////////////////////////
|
54
|
+
// Compression traits.
|
55
|
+
//
|
56
|
+
// Each metadata trait exposes exactly one compression trait.
|
57
|
+
// This type directs how transports might choose to compress the metadata.
|
58
|
+
// Adding a value here typically involves editing all transports to support the
|
59
|
+
// trait, and so should not be done lightly.
|
60
|
+
|
61
|
+
// No compression.
|
62
|
+
struct NoCompressionCompressor {};
|
63
|
+
|
64
|
+
// Expect a single value for this metadata key, but we don't know apriori its
|
65
|
+
// value.
|
66
|
+
// It's ok if it changes over time, but it should be mostly stable.
|
67
|
+
// This is used for things like user-agent, which is expected to be the same
|
68
|
+
// for all requests.
|
69
|
+
struct StableValueCompressor {};
|
70
|
+
|
71
|
+
// Expect a single value for this metadata key, and we know apriori its value.
|
72
|
+
template <typename T, T value>
|
73
|
+
struct KnownValueCompressor {};
|
74
|
+
|
75
|
+
// Values are uncompressible, but expect the key to be in most requests and try
|
76
|
+
// and compress that.
|
77
|
+
struct FrequentKeyWithNoValueCompressionCompressor {};
|
78
|
+
|
79
|
+
// Expect a small set of values for this metadata key.
|
80
|
+
struct SmallSetOfValuesCompressor {};
|
81
|
+
|
82
|
+
// Expect integral values up to N for this metadata key.
|
83
|
+
template <size_t N>
|
84
|
+
struct SmallIntegralValuesCompressor {};
|
85
|
+
|
86
|
+
// Specialty compressor for grpc-timeout metadata.
|
87
|
+
struct TimeoutCompressor {};
|
88
|
+
|
89
|
+
// Specialty compressors for HTTP/2 psuedo headers.
|
90
|
+
struct HttpSchemeCompressor {};
|
91
|
+
struct HttpMethodCompressor {};
|
92
|
+
struct HttpStatusCompressor {};
|
93
|
+
|
94
|
+
///////////////////////////////////////////////////////////////////////////////
|
95
|
+
// Metadata traits
|
96
|
+
|
52
97
|
// Given a metadata key and a value, return the encoded size.
|
53
98
|
// Defaults to calling the key's Encode() method and then calculating the size
|
54
99
|
// of that, but can be overridden for specific keys if there's a better way of
|
@@ -70,11 +115,13 @@ struct GrpcTimeoutMetadata {
|
|
70
115
|
static constexpr bool kRepeatable = false;
|
71
116
|
using ValueType = Timestamp;
|
72
117
|
using MementoType = Duration;
|
118
|
+
using CompressionTraits = TimeoutCompressor;
|
73
119
|
static absl::string_view key() { return "grpc-timeout"; }
|
74
120
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
75
121
|
static ValueType MementoToValue(MementoType timeout);
|
76
122
|
static Slice Encode(ValueType x);
|
77
|
-
static std::string DisplayValue(
|
123
|
+
static std::string DisplayValue(ValueType x) { return x.ToString(); }
|
124
|
+
static std::string DisplayMemento(MementoType x) { return x.ToString(); }
|
78
125
|
};
|
79
126
|
|
80
127
|
// TE metadata trait.
|
@@ -88,6 +135,7 @@ struct TeMetadata {
|
|
88
135
|
kInvalid,
|
89
136
|
};
|
90
137
|
using MementoType = ValueType;
|
138
|
+
using CompressionTraits = KnownValueCompressor<ValueType, kTrailers>;
|
91
139
|
static absl::string_view key() { return "te"; }
|
92
140
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
93
141
|
static ValueType MementoToValue(MementoType te) { return te; }
|
@@ -95,7 +143,8 @@ struct TeMetadata {
|
|
95
143
|
GPR_ASSERT(x == kTrailers);
|
96
144
|
return StaticSlice::FromStaticString("trailers");
|
97
145
|
}
|
98
|
-
static const char* DisplayValue(
|
146
|
+
static const char* DisplayValue(ValueType te);
|
147
|
+
static const char* DisplayMemento(MementoType te) { return DisplayValue(te); }
|
99
148
|
};
|
100
149
|
|
101
150
|
inline size_t EncodedSizeOfKey(TeMetadata, TeMetadata::ValueType x) {
|
@@ -114,6 +163,7 @@ struct ContentTypeMetadata {
|
|
114
163
|
kInvalid,
|
115
164
|
};
|
116
165
|
using MementoType = ValueType;
|
166
|
+
using CompressionTraits = KnownValueCompressor<ValueType, kApplicationGrpc>;
|
117
167
|
static absl::string_view key() { return "content-type"; }
|
118
168
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
119
169
|
static ValueType MementoToValue(MementoType content_type) {
|
@@ -121,7 +171,10 @@ struct ContentTypeMetadata {
|
|
121
171
|
}
|
122
172
|
|
123
173
|
static StaticSlice Encode(ValueType x);
|
124
|
-
static const char* DisplayValue(
|
174
|
+
static const char* DisplayValue(ValueType content_type);
|
175
|
+
static const char* DisplayMemento(ValueType content_type) {
|
176
|
+
return DisplayValue(content_type);
|
177
|
+
}
|
125
178
|
};
|
126
179
|
|
127
180
|
// scheme metadata trait.
|
@@ -133,6 +186,7 @@ struct HttpSchemeMetadata {
|
|
133
186
|
kInvalid,
|
134
187
|
};
|
135
188
|
using MementoType = ValueType;
|
189
|
+
using CompressionTraits = HttpSchemeCompressor;
|
136
190
|
static absl::string_view key() { return ":scheme"; }
|
137
191
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
|
138
192
|
return Parse(value.as_string_view(), on_error);
|
@@ -143,7 +197,10 @@ struct HttpSchemeMetadata {
|
|
143
197
|
return content_type;
|
144
198
|
}
|
145
199
|
static StaticSlice Encode(ValueType x);
|
146
|
-
static const char* DisplayValue(
|
200
|
+
static const char* DisplayValue(ValueType content_type);
|
201
|
+
static const char* DisplayMemento(MementoType content_type) {
|
202
|
+
return DisplayValue(content_type);
|
203
|
+
}
|
147
204
|
};
|
148
205
|
|
149
206
|
size_t EncodedSizeOfKey(HttpSchemeMetadata, HttpSchemeMetadata::ValueType x);
|
@@ -158,13 +215,17 @@ struct HttpMethodMetadata {
|
|
158
215
|
kInvalid,
|
159
216
|
};
|
160
217
|
using MementoType = ValueType;
|
218
|
+
using CompressionTraits = HttpMethodCompressor;
|
161
219
|
static absl::string_view key() { return ":method"; }
|
162
220
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
163
221
|
static ValueType MementoToValue(MementoType content_type) {
|
164
222
|
return content_type;
|
165
223
|
}
|
166
224
|
static StaticSlice Encode(ValueType x);
|
167
|
-
static const char* DisplayValue(
|
225
|
+
static const char* DisplayValue(ValueType content_type);
|
226
|
+
static const char* DisplayMemento(MementoType content_type) {
|
227
|
+
return DisplayValue(content_type);
|
228
|
+
}
|
168
229
|
};
|
169
230
|
|
170
231
|
// Base type for metadata pertaining to a single compression algorithm
|
@@ -178,24 +239,28 @@ struct CompressionAlgorithmBasedMetadata {
|
|
178
239
|
GPR_ASSERT(x != GRPC_COMPRESS_ALGORITHMS_COUNT);
|
179
240
|
return Slice::FromStaticString(CompressionAlgorithmAsString(x));
|
180
241
|
}
|
181
|
-
static const char* DisplayValue(
|
242
|
+
static const char* DisplayValue(ValueType x) {
|
182
243
|
if (const char* p = CompressionAlgorithmAsString(x)) {
|
183
244
|
return p;
|
184
245
|
} else {
|
185
246
|
return "<discarded-invalid-value>";
|
186
247
|
}
|
187
248
|
}
|
249
|
+
static const char* DisplayMemento(MementoType x) { return DisplayValue(x); }
|
188
250
|
};
|
189
251
|
|
190
252
|
// grpc-encoding metadata trait.
|
191
253
|
struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata {
|
192
254
|
static constexpr bool kRepeatable = false;
|
255
|
+
using CompressionTraits =
|
256
|
+
SmallIntegralValuesCompressor<GRPC_COMPRESS_ALGORITHMS_COUNT>;
|
193
257
|
static absl::string_view key() { return "grpc-encoding"; }
|
194
258
|
};
|
195
259
|
|
196
260
|
// grpc-internal-encoding-request metadata trait.
|
197
261
|
struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata {
|
198
262
|
static constexpr bool kRepeatable = false;
|
263
|
+
using CompressionTraits = NoCompressionCompressor;
|
199
264
|
static absl::string_view key() { return "grpc-internal-encoding-request"; }
|
200
265
|
};
|
201
266
|
|
@@ -205,12 +270,16 @@ struct GrpcAcceptEncodingMetadata {
|
|
205
270
|
static absl::string_view key() { return "grpc-accept-encoding"; }
|
206
271
|
using ValueType = CompressionAlgorithmSet;
|
207
272
|
using MementoType = ValueType;
|
273
|
+
using CompressionTraits = StableValueCompressor;
|
208
274
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn) {
|
209
275
|
return CompressionAlgorithmSet::FromString(value.as_string_view());
|
210
276
|
}
|
211
277
|
static ValueType MementoToValue(MementoType x) { return x; }
|
212
278
|
static Slice Encode(ValueType x) { return x.ToSlice(); }
|
213
|
-
static absl::string_view DisplayValue(
|
279
|
+
static absl::string_view DisplayValue(ValueType x) { return x.ToString(); }
|
280
|
+
static absl::string_view DisplayMemento(MementoType x) {
|
281
|
+
return DisplayValue(x);
|
282
|
+
}
|
214
283
|
};
|
215
284
|
|
216
285
|
struct SimpleSliceBasedMetadata {
|
@@ -221,7 +290,10 @@ struct SimpleSliceBasedMetadata {
|
|
221
290
|
}
|
222
291
|
static ValueType MementoToValue(MementoType value) { return value; }
|
223
292
|
static Slice Encode(const ValueType& x) { return x.Ref(); }
|
224
|
-
static absl::string_view DisplayValue(const
|
293
|
+
static absl::string_view DisplayValue(const ValueType& value) {
|
294
|
+
return value.as_string_view();
|
295
|
+
}
|
296
|
+
static absl::string_view DisplayMemento(const MementoType& value) {
|
225
297
|
return value.as_string_view();
|
226
298
|
}
|
227
299
|
};
|
@@ -229,54 +301,63 @@ struct SimpleSliceBasedMetadata {
|
|
229
301
|
// user-agent metadata trait.
|
230
302
|
struct UserAgentMetadata : public SimpleSliceBasedMetadata {
|
231
303
|
static constexpr bool kRepeatable = false;
|
304
|
+
using CompressionTraits = StableValueCompressor;
|
232
305
|
static absl::string_view key() { return "user-agent"; }
|
233
306
|
};
|
234
307
|
|
235
308
|
// grpc-message metadata trait.
|
236
309
|
struct GrpcMessageMetadata : public SimpleSliceBasedMetadata {
|
237
310
|
static constexpr bool kRepeatable = false;
|
311
|
+
using CompressionTraits = NoCompressionCompressor;
|
238
312
|
static absl::string_view key() { return "grpc-message"; }
|
239
313
|
};
|
240
314
|
|
241
315
|
// host metadata trait.
|
242
316
|
struct HostMetadata : public SimpleSliceBasedMetadata {
|
243
317
|
static constexpr bool kRepeatable = false;
|
318
|
+
using CompressionTraits = NoCompressionCompressor;
|
244
319
|
static absl::string_view key() { return "host"; }
|
245
320
|
};
|
246
321
|
|
247
322
|
// endpoint-load-metrics-bin metadata trait.
|
248
323
|
struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
|
249
324
|
static constexpr bool kRepeatable = false;
|
325
|
+
using CompressionTraits = NoCompressionCompressor;
|
250
326
|
static absl::string_view key() { return "endpoint-load-metrics-bin"; }
|
251
327
|
};
|
252
328
|
|
253
329
|
// grpc-server-stats-bin metadata trait.
|
254
330
|
struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata {
|
255
331
|
static constexpr bool kRepeatable = false;
|
332
|
+
using CompressionTraits = NoCompressionCompressor;
|
256
333
|
static absl::string_view key() { return "grpc-server-stats-bin"; }
|
257
334
|
};
|
258
335
|
|
259
336
|
// grpc-trace-bin metadata trait.
|
260
337
|
struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata {
|
261
338
|
static constexpr bool kRepeatable = false;
|
339
|
+
using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor;
|
262
340
|
static absl::string_view key() { return "grpc-trace-bin"; }
|
263
341
|
};
|
264
342
|
|
265
343
|
// grpc-tags-bin metadata trait.
|
266
344
|
struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata {
|
267
345
|
static constexpr bool kRepeatable = false;
|
346
|
+
using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor;
|
268
347
|
static absl::string_view key() { return "grpc-tags-bin"; }
|
269
348
|
};
|
270
349
|
|
271
350
|
// :authority metadata trait.
|
272
351
|
struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata {
|
273
352
|
static constexpr bool kRepeatable = false;
|
353
|
+
using CompressionTraits = SmallSetOfValuesCompressor;
|
274
354
|
static absl::string_view key() { return ":authority"; }
|
275
355
|
};
|
276
356
|
|
277
357
|
// :path metadata trait.
|
278
358
|
struct HttpPathMetadata : public SimpleSliceBasedMetadata {
|
279
359
|
static constexpr bool kRepeatable = false;
|
360
|
+
using CompressionTraits = SmallSetOfValuesCompressor;
|
280
361
|
static absl::string_view key() { return ":path"; }
|
281
362
|
};
|
282
363
|
|
@@ -289,7 +370,8 @@ struct SimpleIntBasedMetadataBase {
|
|
289
370
|
using MementoType = Int;
|
290
371
|
static ValueType MementoToValue(MementoType value) { return value; }
|
291
372
|
static Slice Encode(ValueType x) { return Slice::FromInt64(x); }
|
292
|
-
static Int DisplayValue(
|
373
|
+
static Int DisplayValue(ValueType x) { return x; }
|
374
|
+
static Int DisplayMemento(MementoType x) { return x; }
|
293
375
|
};
|
294
376
|
|
295
377
|
template <typename Int, Int kInvalidValue>
|
@@ -309,6 +391,7 @@ struct SimpleIntBasedMetadata : public SimpleIntBasedMetadataBase<Int> {
|
|
309
391
|
struct GrpcStatusMetadata
|
310
392
|
: public SimpleIntBasedMetadata<grpc_status_code, GRPC_STATUS_UNKNOWN> {
|
311
393
|
static constexpr bool kRepeatable = false;
|
394
|
+
using CompressionTraits = SmallIntegralValuesCompressor<16>;
|
312
395
|
static absl::string_view key() { return "grpc-status"; }
|
313
396
|
};
|
314
397
|
|
@@ -316,6 +399,7 @@ struct GrpcStatusMetadata
|
|
316
399
|
struct GrpcPreviousRpcAttemptsMetadata
|
317
400
|
: public SimpleIntBasedMetadata<uint32_t, 0> {
|
318
401
|
static constexpr bool kRepeatable = false;
|
402
|
+
using CompressionTraits = NoCompressionCompressor;
|
319
403
|
static absl::string_view key() { return "grpc-previous-rpc-attempts"; }
|
320
404
|
};
|
321
405
|
|
@@ -325,9 +409,11 @@ struct GrpcRetryPushbackMsMetadata {
|
|
325
409
|
static absl::string_view key() { return "grpc-retry-pushback-ms"; }
|
326
410
|
using ValueType = Duration;
|
327
411
|
using MementoType = Duration;
|
412
|
+
using CompressionTraits = NoCompressionCompressor;
|
328
413
|
static ValueType MementoToValue(MementoType x) { return x; }
|
329
414
|
static Slice Encode(Duration x) { return Slice::FromInt64(x.millis()); }
|
330
415
|
static int64_t DisplayValue(Duration x) { return x.millis(); }
|
416
|
+
static int64_t DisplayMemento(Duration x) { return DisplayValue(x); }
|
331
417
|
static Duration ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
332
418
|
};
|
333
419
|
|
@@ -335,6 +421,7 @@ struct GrpcRetryPushbackMsMetadata {
|
|
335
421
|
// TODO(ctiller): consider moving to uint16_t
|
336
422
|
struct HttpStatusMetadata : public SimpleIntBasedMetadata<uint32_t, 0> {
|
337
423
|
static constexpr bool kRepeatable = false;
|
424
|
+
using CompressionTraits = HttpStatusCompressor;
|
338
425
|
static absl::string_view key() { return ":status"; }
|
339
426
|
};
|
340
427
|
|
@@ -347,9 +434,13 @@ struct GrpcLbClientStatsMetadata {
|
|
347
434
|
static absl::string_view key() { return "grpclb_client_stats"; }
|
348
435
|
using ValueType = GrpcLbClientStats*;
|
349
436
|
using MementoType = ValueType;
|
437
|
+
using CompressionTraits = NoCompressionCompressor;
|
350
438
|
static ValueType MementoToValue(MementoType value) { return value; }
|
351
439
|
static Slice Encode(ValueType) { abort(); }
|
352
|
-
static const char* DisplayValue(
|
440
|
+
static const char* DisplayValue(ValueType) { return "<internal-lb-stats>"; }
|
441
|
+
static const char* DisplayMemento(MementoType) {
|
442
|
+
return "<internal-lb-stats>";
|
443
|
+
}
|
353
444
|
static MementoType ParseMemento(Slice, MetadataParseErrorFn) {
|
354
445
|
return nullptr;
|
355
446
|
}
|
@@ -363,6 +454,7 @@ inline size_t EncodedSizeOfKey(GrpcLbClientStatsMetadata,
|
|
363
454
|
// lb-token metadata
|
364
455
|
struct LbTokenMetadata : public SimpleSliceBasedMetadata {
|
365
456
|
static constexpr bool kRepeatable = false;
|
457
|
+
using CompressionTraits = NoCompressionCompressor;
|
366
458
|
static absl::string_view key() { return "lb-token"; }
|
367
459
|
};
|
368
460
|
|
@@ -375,9 +467,11 @@ struct LbCostBinMetadata {
|
|
375
467
|
std::string name;
|
376
468
|
};
|
377
469
|
using MementoType = ValueType;
|
470
|
+
using CompressionTraits = NoCompressionCompressor;
|
378
471
|
static ValueType MementoToValue(MementoType value) { return value; }
|
379
472
|
static Slice Encode(const ValueType& x);
|
380
|
-
static std::string DisplayValue(
|
473
|
+
static std::string DisplayValue(ValueType x);
|
474
|
+
static std::string DisplayMemento(MementoType x) { return DisplayValue(x); }
|
381
475
|
static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
|
382
476
|
};
|
383
477
|
|
@@ -397,8 +491,8 @@ struct GrpcStreamNetworkState {
|
|
397
491
|
struct PeerString {
|
398
492
|
static absl::string_view DebugKey() { return "PeerString"; }
|
399
493
|
static constexpr bool kRepeatable = false;
|
400
|
-
using ValueType =
|
401
|
-
static std::string DisplayValue(ValueType x);
|
494
|
+
using ValueType = Slice;
|
495
|
+
static std::string DisplayValue(const ValueType& x);
|
402
496
|
};
|
403
497
|
|
404
498
|
// Annotation added by various systems to describe the reason for a failure.
|
@@ -417,6 +511,15 @@ struct GrpcStatusFromWire {
|
|
417
511
|
static absl::string_view DisplayValue(bool x) { return x ? "true" : "false"; }
|
418
512
|
};
|
419
513
|
|
514
|
+
// Annotation to denote that this call qualifies for cancelled=1 for the
|
515
|
+
// RECV_CLOSE_ON_SERVER op
|
516
|
+
struct GrpcCallWasCancelled {
|
517
|
+
static absl::string_view DebugKey() { return "GrpcCallWasCancelled"; }
|
518
|
+
static constexpr bool kRepeatable = false;
|
519
|
+
using ValueType = bool;
|
520
|
+
static absl::string_view DisplayValue(bool x) { return x ? "true" : "false"; }
|
521
|
+
};
|
522
|
+
|
420
523
|
// Annotation added by client surface code to denote wait-for-ready state
|
421
524
|
struct WaitForReady {
|
422
525
|
struct ValueType {
|
@@ -542,8 +645,9 @@ class ParseHelper {
|
|
542
645
|
|
543
646
|
GPR_ATTRIBUTE_NOINLINE ParsedMetadata<Container> NotFound(
|
544
647
|
absl::string_view key) {
|
545
|
-
return ParsedMetadata<Container>(
|
546
|
-
|
648
|
+
return ParsedMetadata<Container>(
|
649
|
+
typename ParsedMetadata<Container>::FromSlicePair{},
|
650
|
+
Slice::FromCopiedString(key), std::move(value_), transport_size_);
|
547
651
|
}
|
548
652
|
|
549
653
|
private:
|
@@ -698,6 +802,11 @@ struct AdaptDisplayValueToLog<Slice> {
|
|
698
802
|
}
|
699
803
|
};
|
700
804
|
|
805
|
+
template <>
|
806
|
+
struct AdaptDisplayValueToLog<const char*> {
|
807
|
+
static std::string ToString(const char* value) { return std::string(value); }
|
808
|
+
};
|
809
|
+
|
701
810
|
template <>
|
702
811
|
struct AdaptDisplayValueToLog<StaticSlice> {
|
703
812
|
static absl::string_view ToString(StaticSlice value) {
|
@@ -739,7 +848,7 @@ struct Value<Which, absl::enable_if_t<Which::kRepeatable == false &&
|
|
739
848
|
return EncodeTo(encoder);
|
740
849
|
}
|
741
850
|
void LogTo(LogFn log_fn) const {
|
742
|
-
LogKeyValueTo(Which::key(), value, Which::
|
851
|
+
LogKeyValueTo(Which::key(), value, Which::DisplayValue, log_fn);
|
743
852
|
}
|
744
853
|
using StorageType = typename Which::ValueType;
|
745
854
|
GPR_NO_UNIQUE_ADDRESS StorageType value;
|
@@ -954,6 +1063,35 @@ class UnknownMap {
|
|
954
1063
|
ChunkedVector<std::pair<Slice, Slice>, 10> unknown_;
|
955
1064
|
};
|
956
1065
|
|
1066
|
+
// Given a factory template Factory, construct a type that derives from
|
1067
|
+
// Factory<MetadataTrait, MetadataTrait::CompressionTraits> for all
|
1068
|
+
// MetadataTraits. Useful for transports in defining the stateful parts of their
|
1069
|
+
// compression algorithm.
|
1070
|
+
template <template <typename, typename> class Factory,
|
1071
|
+
typename... MetadataTraits>
|
1072
|
+
struct StatefulCompressor;
|
1073
|
+
|
1074
|
+
template <template <typename, typename> class Factory, typename MetadataTrait,
|
1075
|
+
bool kEncodable = IsEncodableTrait<MetadataTrait>::value>
|
1076
|
+
struct SpecificStatefulCompressor;
|
1077
|
+
|
1078
|
+
template <template <typename, typename> class Factory, typename MetadataTrait>
|
1079
|
+
struct SpecificStatefulCompressor<Factory, MetadataTrait, true>
|
1080
|
+
: public Factory<MetadataTrait, typename MetadataTrait::CompressionTraits> {
|
1081
|
+
};
|
1082
|
+
|
1083
|
+
template <template <typename, typename> class Factory, typename MetadataTrait>
|
1084
|
+
struct SpecificStatefulCompressor<Factory, MetadataTrait, false> {};
|
1085
|
+
|
1086
|
+
template <template <typename, typename> class Factory, typename MetadataTrait,
|
1087
|
+
typename... MetadataTraits>
|
1088
|
+
struct StatefulCompressor<Factory, MetadataTrait, MetadataTraits...>
|
1089
|
+
: public SpecificStatefulCompressor<Factory, MetadataTrait>,
|
1090
|
+
public StatefulCompressor<Factory, MetadataTraits...> {};
|
1091
|
+
|
1092
|
+
template <template <typename, typename> class Factory>
|
1093
|
+
struct StatefulCompressor<Factory> {};
|
1094
|
+
|
957
1095
|
} // namespace metadata_detail
|
958
1096
|
|
959
1097
|
// Helper function for encoders
|
@@ -1025,7 +1163,8 @@ MetadataValueAsSlice(typename Which::ValueType value) {
|
|
1025
1163
|
// // Convert a value to something that can be passed to StrCat and
|
1026
1164
|
// displayed
|
1027
1165
|
// // for debugging
|
1028
|
-
// static SomeStrCatableType DisplayValue(
|
1166
|
+
// static SomeStrCatableType DisplayValue(ValueType value) { ... }
|
1167
|
+
// static SomeStrCatableType DisplayMemento(MementoType value) { ... }
|
1029
1168
|
// };
|
1030
1169
|
//
|
1031
1170
|
// Non-encodable traits are determined by missing the key() method, and have
|
@@ -1071,6 +1210,15 @@ class MetadataMap {
|
|
1071
1210
|
explicit MetadataMap(Arena* arena);
|
1072
1211
|
~MetadataMap();
|
1073
1212
|
|
1213
|
+
// Given a compressor factory - template taking <MetadataTrait,
|
1214
|
+
// CompressionTrait>, StatefulCompressor<Factory> provides a type
|
1215
|
+
// derived from all Encodable traits in this MetadataMap.
|
1216
|
+
// This can be used by transports to delegate compression to the appropriate
|
1217
|
+
// compression algorithm.
|
1218
|
+
template <template <typename, typename> class Factory>
|
1219
|
+
using StatefulCompressor =
|
1220
|
+
metadata_detail::StatefulCompressor<Factory, Traits...>;
|
1221
|
+
|
1074
1222
|
MetadataMap(const MetadataMap&) = delete;
|
1075
1223
|
MetadataMap& operator=(const MetadataMap&) = delete;
|
1076
1224
|
MetadataMap(MetadataMap&&) noexcept;
|
@@ -1348,7 +1496,9 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
|
|
1348
1496
|
// Non-encodable things
|
1349
1497
|
grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
|
1350
1498
|
grpc_core::GrpcStatusContext, grpc_core::GrpcStatusFromWire,
|
1351
|
-
grpc_core::
|
1499
|
+
grpc_core::GrpcCallWasCancelled, grpc_core::WaitForReady,
|
1500
|
+
grpc_core::GrpcTrailersOnly GRPC_CUSTOM_CLIENT_METADATA
|
1501
|
+
GRPC_CUSTOM_SERVER_METADATA>;
|
1352
1502
|
|
1353
1503
|
struct grpc_metadata_batch : public grpc_metadata_batch_base {
|
1354
1504
|
using grpc_metadata_batch_base::grpc_metadata_batch_base;
|
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
#include "absl/functional/function_ref.h"
|
28
28
|
#include "absl/meta/type_traits.h"
|
29
|
+
#include "absl/strings/escaping.h"
|
29
30
|
#include "absl/strings/match.h"
|
30
31
|
#include "absl/strings/str_cat.h"
|
31
32
|
#include "absl/strings/string_view.h"
|
@@ -151,9 +152,14 @@ class ParsedMetadata {
|
|
151
152
|
value_.slice = value.TakeCSlice();
|
152
153
|
}
|
153
154
|
// Construct metadata from a string key, slice value pair.
|
154
|
-
|
155
|
+
// FromSlicePair() is used to adjust the overload set so that we don't
|
156
|
+
// inadvertently match against any of the previous overloads.
|
157
|
+
// TODO(ctiller): re-evaluate the overload functions here so and maybe
|
158
|
+
// introduce some factory functions?
|
159
|
+
struct FromSlicePair {};
|
160
|
+
ParsedMetadata(FromSlicePair, Slice key, Slice value, uint32_t transport_size)
|
155
161
|
: vtable_(ParsedMetadata::KeyValueVTable(key.as_string_view())),
|
156
|
-
transport_size_(
|
162
|
+
transport_size_(transport_size) {
|
157
163
|
value_.pointer =
|
158
164
|
new std::pair<Slice, Slice>(std::move(key), std::move(value));
|
159
165
|
}
|
@@ -187,14 +193,13 @@ class ParsedMetadata {
|
|
187
193
|
// HTTP2 defined storage size of this metadatum.
|
188
194
|
uint32_t transport_size() const { return transport_size_; }
|
189
195
|
// Create a new parsed metadata with the same key but a different value.
|
190
|
-
ParsedMetadata WithNewValue(Slice value,
|
196
|
+
ParsedMetadata WithNewValue(Slice value, uint32_t value_wire_size,
|
191
197
|
MetadataParseErrorFn on_error) const {
|
192
198
|
ParsedMetadata result;
|
193
199
|
result.vtable_ = vtable_;
|
194
200
|
result.value_ = value_;
|
195
201
|
result.transport_size_ =
|
196
|
-
TransportSize(static_cast<uint32_t>(key().length()),
|
197
|
-
static_cast<uint32_t>(value.length()));
|
202
|
+
TransportSize(static_cast<uint32_t>(key().length()), value_wire_size);
|
198
203
|
vtable_->with_new_value(&value, on_error, &result);
|
199
204
|
return result;
|
200
205
|
}
|
@@ -300,7 +305,7 @@ ParsedMetadata<MetadataContainer>::TrivialTraitVTable() {
|
|
300
305
|
return metadata_detail::MakeDebugStringPipeline(
|
301
306
|
Which::key(), value,
|
302
307
|
metadata_detail::FieldFromTrivial<typename Which::MementoType>,
|
303
|
-
Which::
|
308
|
+
Which::DisplayMemento);
|
304
309
|
},
|
305
310
|
// key
|
306
311
|
Which::key(),
|
@@ -334,7 +339,7 @@ ParsedMetadata<MetadataContainer>::NonTrivialTraitVTable() {
|
|
334
339
|
return metadata_detail::MakeDebugStringPipeline(
|
335
340
|
Which::key(), value,
|
336
341
|
metadata_detail::FieldFromPointer<typename Which::MementoType>,
|
337
|
-
Which::
|
342
|
+
Which::DisplayMemento);
|
338
343
|
},
|
339
344
|
// key
|
340
345
|
Which::key(),
|
@@ -362,7 +367,7 @@ ParsedMetadata<MetadataContainer>::SliceTraitVTable() {
|
|
362
367
|
[](const Buffer& value) {
|
363
368
|
return metadata_detail::MakeDebugStringPipeline(
|
364
369
|
Which::key(), value, metadata_detail::SliceFromBuffer,
|
365
|
-
Which::
|
370
|
+
Which::DisplayMemento);
|
366
371
|
},
|
367
372
|
// key
|
368
373
|
Which::key(),
|
@@ -395,12 +400,17 @@ ParsedMetadata<MetadataContainer>::KeyValueVTable(absl::string_view key) {
|
|
395
400
|
return absl::StrCat(p->first.as_string_view(), ": ",
|
396
401
|
p->second.as_string_view());
|
397
402
|
};
|
403
|
+
static const auto binary_debug_string = [](const Buffer& value) {
|
404
|
+
auto* p = static_cast<KV*>(value.pointer);
|
405
|
+
return absl::StrCat(p->first.as_string_view(), ": \"",
|
406
|
+
absl::CEscape(p->second.as_string_view()), "\"");
|
407
|
+
};
|
398
408
|
static const auto key_fn = [](const Buffer& value) {
|
399
409
|
return static_cast<KV*>(value.pointer)->first.as_string_view();
|
400
410
|
};
|
401
411
|
static const VTable vtable[2] = {
|
402
412
|
{false, destroy, set, with_new_value, debug_string, "", key_fn},
|
403
|
-
{true, destroy, set, with_new_value,
|
413
|
+
{true, destroy, set, with_new_value, binary_debug_string, "", key_fn},
|
404
414
|
};
|
405
415
|
return &vtable[absl::EndsWith(key, "-bin")];
|
406
416
|
}
|
@@ -20,6 +20,8 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/transport/timeout_encoding.h"
|
22
22
|
|
23
|
+
#include <limits>
|
24
|
+
|
23
25
|
#include "absl/base/attributes.h"
|
24
26
|
|
25
27
|
#include <grpc/support/log.h>
|
@@ -30,7 +32,7 @@ namespace grpc_core {
|
|
30
32
|
namespace {
|
31
33
|
|
32
34
|
int64_t DivideRoundingUp(int64_t dividend, int64_t divisor) {
|
33
|
-
return (dividend + divisor
|
35
|
+
return (dividend - 1 + divisor) / divisor;
|
34
36
|
}
|
35
37
|
|
36
38
|
constexpr int64_t kSecondsPerMinute = 60;
|
@@ -173,6 +175,9 @@ Timeout Timeout::FromMillis(int64_t millis) {
|
|
173
175
|
} else if (millis < 100000) {
|
174
176
|
int64_t value = DivideRoundingUp(millis, 100);
|
175
177
|
if (value % 10 != 0) return Timeout(value, Unit::kHundredMilliseconds);
|
178
|
+
} else if (millis > std::numeric_limits<int64_t>::max() - 999) {
|
179
|
+
// prevent signed integer overflow.
|
180
|
+
return Timeout(kMaxHours, Unit::kHours);
|
176
181
|
}
|
177
182
|
return Timeout::FromSeconds(DivideRoundingUp(millis, 1000));
|
178
183
|
}
|
@@ -26,13 +26,17 @@
|
|
26
26
|
#include <new>
|
27
27
|
|
28
28
|
#include "absl/status/status.h"
|
29
|
+
#include "absl/strings/str_cat.h"
|
29
30
|
|
30
31
|
#include <grpc/event_engine/event_engine.h>
|
32
|
+
#include <grpc/grpc.h>
|
31
33
|
|
32
34
|
#include "src/core/lib/event_engine/default_event_engine.h"
|
33
35
|
#include "src/core/lib/gpr/alloc.h"
|
36
|
+
#include "src/core/lib/gprpp/time.h"
|
34
37
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
35
38
|
#include "src/core/lib/slice/slice.h"
|
39
|
+
#include "src/core/lib/transport/error_utils.h"
|
36
40
|
#include "src/core/lib/transport/transport_impl.h"
|
37
41
|
|
38
42
|
grpc_core::DebugOnlyTraceFlag grpc_trace_stream_refcount(false,
|
@@ -271,11 +275,35 @@ namespace grpc_core {
|
|
271
275
|
ServerMetadataHandle ServerMetadataFromStatus(const absl::Status& status,
|
272
276
|
Arena* arena) {
|
273
277
|
auto hdl = arena->MakePooled<ServerMetadata>(arena);
|
274
|
-
|
278
|
+
grpc_status_code code;
|
279
|
+
std::string message;
|
280
|
+
grpc_error_get_status(status, Timestamp::InfFuture(), &code, &message,
|
281
|
+
nullptr, nullptr);
|
282
|
+
hdl->Set(GrpcStatusMetadata(), code);
|
275
283
|
if (!status.ok()) {
|
276
|
-
hdl->Set(GrpcMessageMetadata(), Slice::FromCopiedString(
|
284
|
+
hdl->Set(GrpcMessageMetadata(), Slice::FromCopiedString(message));
|
277
285
|
}
|
278
286
|
return hdl;
|
279
287
|
}
|
280
288
|
|
289
|
+
std::string Message::DebugString() const {
|
290
|
+
std::string out = absl::StrCat(payload_.Length(), "b");
|
291
|
+
auto flags = flags_;
|
292
|
+
auto explain = [&flags, &out](uint32_t flag, absl::string_view name) {
|
293
|
+
if (flags & flag) {
|
294
|
+
flags &= ~flag;
|
295
|
+
absl::StrAppend(&out, ":", name);
|
296
|
+
}
|
297
|
+
};
|
298
|
+
explain(GRPC_WRITE_BUFFER_HINT, "write_buffer");
|
299
|
+
explain(GRPC_WRITE_NO_COMPRESS, "no_compress");
|
300
|
+
explain(GRPC_WRITE_THROUGH, "write_through");
|
301
|
+
explain(GRPC_WRITE_INTERNAL_COMPRESS, "compress");
|
302
|
+
explain(GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED, "was_compressed");
|
303
|
+
if (flags != 0) {
|
304
|
+
absl::StrAppend(&out, ":huh=0x", absl::Hex(flags));
|
305
|
+
}
|
306
|
+
return out;
|
307
|
+
}
|
308
|
+
|
281
309
|
} // namespace grpc_core
|