grpc 1.41.0.pre2 → 1.42.0
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 +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +81 -68
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -237,22 +237,21 @@ grpc_transport_op* grpc_make_transport_op(grpc_closure* on_complete) {
|
|
237
237
|
|
238
238
|
struct made_transport_stream_op {
|
239
239
|
grpc_closure outer_on_complete;
|
240
|
-
grpc_closure* inner_on_complete;
|
240
|
+
grpc_closure* inner_on_complete = nullptr;
|
241
241
|
grpc_transport_stream_op_batch op;
|
242
|
-
grpc_transport_stream_op_batch_payload payload;
|
242
|
+
grpc_transport_stream_op_batch_payload payload{nullptr};
|
243
243
|
};
|
244
244
|
static void destroy_made_transport_stream_op(void* arg,
|
245
245
|
grpc_error_handle error) {
|
246
246
|
made_transport_stream_op* op = static_cast<made_transport_stream_op*>(arg);
|
247
247
|
grpc_closure* c = op->inner_on_complete;
|
248
|
-
|
248
|
+
delete op;
|
249
249
|
grpc_core::Closure::Run(DEBUG_LOCATION, c, GRPC_ERROR_REF(error));
|
250
250
|
}
|
251
251
|
|
252
252
|
grpc_transport_stream_op_batch* grpc_make_transport_stream_op(
|
253
253
|
grpc_closure* on_complete) {
|
254
|
-
made_transport_stream_op* op =
|
255
|
-
static_cast<made_transport_stream_op*>(gpr_zalloc(sizeof(*op)));
|
254
|
+
made_transport_stream_op* op = new made_transport_stream_op();
|
256
255
|
op->op.payload = &op->payload;
|
257
256
|
GRPC_CLOSURE_INIT(&op->outer_on_complete, destroy_made_transport_stream_op,
|
258
257
|
op, grpc_schedule_on_exec_ctx);
|
@@ -40,27 +40,47 @@
|
|
40
40
|
/* These routines are here to facilitate debugging - they produce string
|
41
41
|
representations of various transport data structures */
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
out
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
43
|
+
namespace {
|
44
|
+
class MetadataListEncoder {
|
45
|
+
public:
|
46
|
+
explicit MetadataListEncoder(std::vector<std::string>* out) : out_(out) {}
|
47
|
+
void Encode(const grpc_mdelem& md) {
|
48
|
+
MaybeAddComma();
|
49
|
+
out_->push_back("key=");
|
50
|
+
char* dump = grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
51
|
+
out_->push_back(dump);
|
52
|
+
gpr_free(dump);
|
53
|
+
out_->push_back(" value=");
|
54
|
+
dump = grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
55
|
+
out_->push_back(dump);
|
56
|
+
gpr_free(dump);
|
57
|
+
}
|
58
|
+
|
59
|
+
void Encode(grpc_core::GrpcTimeoutMetadata, grpc_millis deadline) {
|
60
|
+
MaybeAddComma();
|
61
|
+
out_->push_back(absl::StrFormat("deadline=%" PRId64, deadline));
|
62
|
+
}
|
63
|
+
|
64
|
+
template <typename Which>
|
65
|
+
void Encode(Which, typename Which::ValueType value) {
|
66
|
+
MaybeAddComma();
|
67
|
+
out_->push_back(
|
68
|
+
absl::StrCat(Which::key(), "=", Which::DisplayValue(value)));
|
69
|
+
}
|
70
|
+
|
71
|
+
private:
|
72
|
+
void MaybeAddComma() {
|
73
|
+
if (out_->size() != initial_size_) out_->push_back(", ");
|
74
|
+
}
|
75
|
+
std::vector<std::string>* const out_;
|
76
|
+
const size_t initial_size_ = out_->size();
|
77
|
+
};
|
78
|
+
} // namespace
|
79
|
+
|
80
|
+
static void put_metadata_list(const grpc_metadata_batch& md,
|
55
81
|
std::vector<std::string>* out) {
|
56
|
-
|
57
|
-
|
58
|
-
if (m != md.list.head) out->push_back(", ");
|
59
|
-
put_metadata(m->md, out);
|
60
|
-
}
|
61
|
-
if (md.deadline != GRPC_MILLIS_INF_FUTURE) {
|
62
|
-
out->push_back(absl::StrFormat(" deadline=%" PRId64, md.deadline));
|
63
|
-
}
|
82
|
+
MetadataListEncoder encoder(out);
|
83
|
+
md.Encode(&encoder);
|
64
84
|
}
|
65
85
|
|
66
86
|
std::string grpc_transport_stream_op_batch_string(
|
@@ -21,13 +21,10 @@
|
|
21
21
|
#include <grpc/grpc.h>
|
22
22
|
|
23
23
|
#include "src/core/lib/config/core_configuration.h"
|
24
|
+
#include "src/core/lib/surface/builtins.h"
|
24
25
|
|
25
|
-
void grpc_http_filters_init(void);
|
26
|
-
void grpc_http_filters_shutdown(void);
|
27
26
|
void grpc_chttp2_plugin_init(void);
|
28
27
|
void grpc_chttp2_plugin_shutdown(void);
|
29
|
-
void grpc_deadline_filter_init(void);
|
30
|
-
void grpc_deadline_filter_shutdown(void);
|
31
28
|
void grpc_client_channel_init(void);
|
32
29
|
void grpc_client_channel_shutdown(void);
|
33
30
|
void grpc_inproc_plugin_init(void);
|
@@ -50,23 +47,19 @@ void grpc_resolver_dns_native_init(void);
|
|
50
47
|
void grpc_resolver_dns_native_shutdown(void);
|
51
48
|
void grpc_resolver_sockaddr_init(void);
|
52
49
|
void grpc_resolver_sockaddr_shutdown(void);
|
53
|
-
void grpc_client_idle_filter_init(void);
|
54
|
-
void grpc_client_idle_filter_shutdown(void);
|
55
|
-
void grpc_max_age_filter_init(void);
|
56
|
-
void grpc_max_age_filter_shutdown(void);
|
57
50
|
void grpc_message_size_filter_init(void);
|
58
51
|
void grpc_message_size_filter_shutdown(void);
|
59
|
-
void grpc_service_config_channel_arg_filter_init(void);
|
60
|
-
void grpc_service_config_channel_arg_filter_shutdown(void);
|
61
|
-
void grpc_client_authority_filter_init(void);
|
62
|
-
void grpc_client_authority_filter_shutdown(void);
|
63
|
-
void grpc_workaround_cronet_compression_filter_init(void);
|
64
|
-
void grpc_workaround_cronet_compression_filter_shutdown(void);
|
65
52
|
namespace grpc_core {
|
66
53
|
void FaultInjectionFilterInit(void);
|
67
54
|
void FaultInjectionFilterShutdown(void);
|
68
55
|
void GrpcLbPolicyRingHashInit(void);
|
69
56
|
void GrpcLbPolicyRingHashShutdown(void);
|
57
|
+
#ifndef GRPC_NO_RLS
|
58
|
+
void RlsLbPluginInit();
|
59
|
+
void RlsLbPluginShutdown();
|
60
|
+
#endif // !GRPC_NO_RLS
|
61
|
+
void ServiceConfigParserInit(void);
|
62
|
+
void ServiceConfigParserShutdown(void);
|
70
63
|
} // namespace grpc_core
|
71
64
|
|
72
65
|
#ifndef GRPC_NO_XDS
|
@@ -93,24 +86,27 @@ void grpc_resolver_xds_shutdown(void);
|
|
93
86
|
namespace grpc_core {
|
94
87
|
void GoogleCloud2ProdResolverInit();
|
95
88
|
void GoogleCloud2ProdResolverShutdown();
|
96
|
-
}
|
89
|
+
} // namespace grpc_core
|
90
|
+
#endif
|
91
|
+
|
92
|
+
#ifdef GPR_SUPPORT_BINDER_TRANSPORT
|
93
|
+
void grpc_resolver_binder_init(void);
|
94
|
+
void grpc_resolver_binder_shutdown(void);
|
97
95
|
#endif
|
98
96
|
|
99
97
|
void grpc_register_built_in_plugins(void) {
|
100
|
-
grpc_register_plugin(
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
grpc_register_plugin(
|
105
|
-
|
106
|
-
grpc_register_plugin(grpc_client_channel_init,
|
107
|
-
grpc_client_channel_shutdown);
|
108
|
-
grpc_register_plugin(grpc_inproc_plugin_init,
|
109
|
-
grpc_inproc_plugin_shutdown);
|
110
|
-
grpc_register_plugin(grpc_resolver_fake_init,
|
111
|
-
grpc_resolver_fake_shutdown);
|
98
|
+
grpc_register_plugin(grpc_chttp2_plugin_init, grpc_chttp2_plugin_shutdown);
|
99
|
+
grpc_register_plugin(grpc_core::ServiceConfigParserInit,
|
100
|
+
grpc_core::ServiceConfigParserShutdown);
|
101
|
+
grpc_register_plugin(grpc_client_channel_init, grpc_client_channel_shutdown);
|
102
|
+
grpc_register_plugin(grpc_inproc_plugin_init, grpc_inproc_plugin_shutdown);
|
103
|
+
grpc_register_plugin(grpc_resolver_fake_init, grpc_resolver_fake_shutdown);
|
112
104
|
grpc_register_plugin(grpc_lb_policy_grpclb_init,
|
113
105
|
grpc_lb_policy_grpclb_shutdown);
|
106
|
+
#ifndef GRPC_NO_RLS
|
107
|
+
grpc_register_plugin(grpc_core::RlsLbPluginInit,
|
108
|
+
grpc_core::RlsLbPluginShutdown);
|
109
|
+
#endif // !GRPC_NO_RLS
|
114
110
|
grpc_register_plugin(grpc_lb_policy_priority_init,
|
115
111
|
grpc_lb_policy_priority_shutdown);
|
116
112
|
grpc_register_plugin(grpc_lb_policy_weighted_target_init,
|
@@ -127,20 +123,10 @@ void grpc_register_built_in_plugins(void) {
|
|
127
123
|
grpc_resolver_dns_native_shutdown);
|
128
124
|
grpc_register_plugin(grpc_resolver_sockaddr_init,
|
129
125
|
grpc_resolver_sockaddr_shutdown);
|
130
|
-
grpc_register_plugin(grpc_client_idle_filter_init,
|
131
|
-
grpc_client_idle_filter_shutdown);
|
132
|
-
grpc_register_plugin(grpc_max_age_filter_init,
|
133
|
-
grpc_max_age_filter_shutdown);
|
134
126
|
grpc_register_plugin(grpc_message_size_filter_init,
|
135
127
|
grpc_message_size_filter_shutdown);
|
136
128
|
grpc_register_plugin(grpc_core::FaultInjectionFilterInit,
|
137
129
|
grpc_core::FaultInjectionFilterShutdown);
|
138
|
-
grpc_register_plugin(grpc_service_config_channel_arg_filter_init,
|
139
|
-
grpc_service_config_channel_arg_filter_shutdown);
|
140
|
-
grpc_register_plugin(grpc_client_authority_filter_init,
|
141
|
-
grpc_client_authority_filter_shutdown);
|
142
|
-
grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
|
143
|
-
grpc_workaround_cronet_compression_filter_shutdown);
|
144
130
|
#ifndef GRPC_NO_XDS
|
145
131
|
grpc_register_plugin(grpc_core::XdsClientGlobalInit,
|
146
132
|
grpc_core::XdsClientGlobalShutdown);
|
@@ -148,29 +134,64 @@ void grpc_register_built_in_plugins(void) {
|
|
148
134
|
grpc_certificate_provider_registry_shutdown);
|
149
135
|
grpc_register_plugin(grpc_core::FileWatcherCertificateProviderInit,
|
150
136
|
grpc_core::FileWatcherCertificateProviderShutdown);
|
151
|
-
grpc_register_plugin(grpc_lb_policy_cds_init,
|
152
|
-
grpc_lb_policy_cds_shutdown);
|
137
|
+
grpc_register_plugin(grpc_lb_policy_cds_init, grpc_lb_policy_cds_shutdown);
|
153
138
|
grpc_register_plugin(grpc_lb_policy_xds_cluster_impl_init,
|
154
139
|
grpc_lb_policy_xds_cluster_impl_shutdown);
|
155
140
|
grpc_register_plugin(grpc_lb_policy_xds_cluster_resolver_init,
|
156
141
|
grpc_lb_policy_xds_cluster_resolver_shutdown);
|
157
142
|
grpc_register_plugin(grpc_lb_policy_xds_cluster_manager_init,
|
158
143
|
grpc_lb_policy_xds_cluster_manager_shutdown);
|
159
|
-
grpc_register_plugin(grpc_resolver_xds_init,
|
160
|
-
grpc_resolver_xds_shutdown);
|
144
|
+
grpc_register_plugin(grpc_resolver_xds_init, grpc_resolver_xds_shutdown);
|
161
145
|
grpc_register_plugin(grpc_core::GoogleCloud2ProdResolverInit,
|
162
146
|
grpc_core::GoogleCloud2ProdResolverShutdown);
|
163
147
|
#endif
|
148
|
+
|
149
|
+
#ifdef GPR_SUPPORT_BINDER_TRANSPORT
|
150
|
+
grpc_register_plugin(grpc_resolver_binder_init,
|
151
|
+
grpc_resolver_binder_shutdown);
|
152
|
+
#endif
|
164
153
|
}
|
165
154
|
|
166
155
|
namespace grpc_core {
|
167
156
|
|
168
|
-
extern void BuildClientChannelConfiguration(
|
169
|
-
|
157
|
+
extern void BuildClientChannelConfiguration(
|
158
|
+
CoreConfiguration::Builder* builder);
|
159
|
+
extern void SecurityRegisterHandshakerFactories(
|
160
|
+
CoreConfiguration::Builder* builder);
|
161
|
+
extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
|
162
|
+
extern void RegisterClientIdleFilter(CoreConfiguration::Builder* builder);
|
163
|
+
extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
|
164
|
+
extern void RegisterGrpcLbLoadReportingFilter(
|
165
|
+
CoreConfiguration::Builder* builder);
|
166
|
+
extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
|
167
|
+
extern void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder);
|
168
|
+
extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
|
169
|
+
extern void RegisterSecurityFilters(CoreConfiguration::Builder* builder);
|
170
|
+
extern void RegisterServiceConfigChannelArgFilter(
|
171
|
+
CoreConfiguration::Builder* builder);
|
172
|
+
#ifndef GRPC_NO_XDS
|
173
|
+
extern void RegisterXdsChannelStackModifier(
|
174
|
+
CoreConfiguration::Builder* builder);
|
175
|
+
#endif
|
170
176
|
|
171
177
|
void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
|
172
178
|
BuildClientChannelConfiguration(builder);
|
173
179
|
SecurityRegisterHandshakerFactories(builder);
|
180
|
+
RegisterClientAuthorityFilter(builder);
|
181
|
+
RegisterClientIdleFilter(builder);
|
182
|
+
RegisterGrpcLbLoadReportingFilter(builder);
|
183
|
+
RegisterHttpFilters(builder);
|
184
|
+
RegisterMaxAgeFilter(builder);
|
185
|
+
RegisterDeadlineFilter(builder);
|
186
|
+
RegisterMessageSizeFilter(builder);
|
187
|
+
RegisterServiceConfigChannelArgFilter(builder);
|
188
|
+
#ifndef GRPC_NO_XDS
|
189
|
+
RegisterXdsChannelStackModifier(builder);
|
190
|
+
#endif
|
191
|
+
// Run last so it gets a consistent location.
|
192
|
+
// TODO(ctiller): Is this actually necessary?
|
193
|
+
RegisterSecurityFilters(builder);
|
194
|
+
RegisterBuiltins(builder);
|
174
195
|
}
|
175
196
|
|
176
197
|
} // namespace grpc_core
|
@@ -559,7 +559,9 @@ static grpc_status_code gsec_aes_gcm_aead_crypter_decrypt_iovec(
|
|
559
559
|
if (!EVP_DecryptFinal_ex(aes_gcm_crypter->ctx, nullptr,
|
560
560
|
&bytes_written_temp)) {
|
561
561
|
aes_gcm_format_errors("Checking tag failed.", error_details);
|
562
|
-
|
562
|
+
if (plaintext_vec.iov_base != nullptr) {
|
563
|
+
memset(plaintext_vec.iov_base, 0x00, plaintext_vec.iov_len);
|
564
|
+
}
|
563
565
|
return GRPC_STATUS_FAILED_PRECONDITION;
|
564
566
|
}
|
565
567
|
if (bytes_written_temp != 0) {
|
@@ -23,6 +23,8 @@
|
|
23
23
|
#include <stdio.h>
|
24
24
|
#include <stdlib.h>
|
25
25
|
|
26
|
+
#include <algorithm>
|
27
|
+
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/log.h>
|
28
30
|
|
@@ -156,10 +158,10 @@ static tsi_result alts_protect(tsi_frame_protector* self,
|
|
156
158
|
*/
|
157
159
|
if (impl->in_place_protect_bytes_buffered + impl->overhead_length <
|
158
160
|
max_encrypted_payload_bytes(impl)) {
|
159
|
-
size_t bytes_to_buffer =
|
160
|
-
|
161
|
-
|
162
|
-
|
161
|
+
size_t bytes_to_buffer = std::min(
|
162
|
+
*unprotected_bytes_size, max_encrypted_payload_bytes(impl) -
|
163
|
+
impl->in_place_protect_bytes_buffered -
|
164
|
+
impl->overhead_length);
|
163
165
|
*unprotected_bytes_size = bytes_to_buffer;
|
164
166
|
if (bytes_to_buffer > 0) {
|
165
167
|
memcpy(
|
@@ -266,9 +268,9 @@ static tsi_result alts_unprotect(tsi_frame_protector* self,
|
|
266
268
|
if (!alts_is_frame_reader_done(impl->reader)) {
|
267
269
|
ensure_buffer_size(impl);
|
268
270
|
*protected_frames_bytes_size =
|
269
|
-
|
270
|
-
|
271
|
-
|
271
|
+
std::min(impl->max_unprotected_frame_size -
|
272
|
+
alts_get_output_bytes_read(impl->reader),
|
273
|
+
*protected_frames_bytes_size);
|
272
274
|
size_t read_frames_bytes_size = *protected_frames_bytes_size;
|
273
275
|
if (!alts_read_frame_bytes(impl->reader, protected_frames_bytes,
|
274
276
|
&read_frames_bytes_size)) {
|
@@ -290,7 +292,7 @@ static tsi_result alts_unprotect(tsi_frame_protector* self,
|
|
290
292
|
return result;
|
291
293
|
}
|
292
294
|
}
|
293
|
-
size_t bytes_to_write =
|
295
|
+
size_t bytes_to_write = std::min(
|
294
296
|
*unprotected_bytes_size, alts_get_output_bytes_read(impl->reader) -
|
295
297
|
impl->in_place_unprotect_bytes_processed -
|
296
298
|
impl->overhead_length);
|
@@ -368,8 +370,7 @@ tsi_result alts_create_frame_protector(const uint8_t* key, size_t key_size,
|
|
368
370
|
return TSI_INTERNAL_ERROR;
|
369
371
|
}
|
370
372
|
char* error_details = nullptr;
|
371
|
-
alts_frame_protector* impl =
|
372
|
-
static_cast<alts_frame_protector*>(gpr_zalloc(sizeof(*impl)));
|
373
|
+
alts_frame_protector* impl = grpc_core::Zalloc<alts_frame_protector>();
|
373
374
|
grpc_status_code status = create_alts_crypters(
|
374
375
|
key, key_size, is_client, is_rekey, impl, &error_details);
|
375
376
|
if (status != GRPC_STATUS_OK) {
|
@@ -385,9 +386,9 @@ tsi_result alts_create_frame_protector(const uint8_t* key, size_t key_size,
|
|
385
386
|
size_t max_protected_frame_size_to_set = kDefaultFrameLength;
|
386
387
|
if (max_protected_frame_size != nullptr) {
|
387
388
|
*max_protected_frame_size =
|
388
|
-
|
389
|
+
std::min(*max_protected_frame_size, kMaxFrameLength);
|
389
390
|
*max_protected_frame_size =
|
390
|
-
|
391
|
+
std::max(*max_protected_frame_size, kMinFrameLength);
|
391
392
|
max_protected_frame_size_to_set = *max_protected_frame_size;
|
392
393
|
}
|
393
394
|
impl->max_protected_frame_size = max_protected_frame_size_to_set;
|
@@ -24,10 +24,12 @@
|
|
24
24
|
#include <stdint.h>
|
25
25
|
#include <string.h>
|
26
26
|
|
27
|
+
#include <algorithm>
|
28
|
+
|
27
29
|
#include <grpc/support/alloc.h>
|
28
30
|
#include <grpc/support/log.h>
|
29
31
|
|
30
|
-
#include "src/core/lib/
|
32
|
+
#include "src/core/lib/gprpp/memory.h"
|
31
33
|
|
32
34
|
/* Use little endian to interpret a string of bytes as uint32_t. */
|
33
35
|
static uint32_t load_32_le(const unsigned char* buffer) {
|
@@ -47,9 +49,7 @@ static void store_32_le(uint32_t value, unsigned char* buffer) {
|
|
47
49
|
|
48
50
|
/* Frame writer implementation. */
|
49
51
|
alts_frame_writer* alts_create_frame_writer() {
|
50
|
-
alts_frame_writer
|
51
|
-
static_cast<alts_frame_writer*>(gpr_zalloc(sizeof(*writer)));
|
52
|
-
return writer;
|
52
|
+
return grpc_core::Zalloc<alts_frame_writer>();
|
53
53
|
}
|
54
54
|
|
55
55
|
bool alts_reset_frame_writer(alts_frame_writer* writer,
|
@@ -82,8 +82,8 @@ bool alts_write_frame_bytes(alts_frame_writer* writer, unsigned char* output,
|
|
82
82
|
/* Write some header bytes, if needed. */
|
83
83
|
if (writer->header_bytes_written != sizeof(writer->header_buffer)) {
|
84
84
|
size_t bytes_to_write =
|
85
|
-
|
86
|
-
|
85
|
+
std::min(*bytes_size,
|
86
|
+
sizeof(writer->header_buffer) - writer->header_bytes_written);
|
87
87
|
memcpy(output, writer->header_buffer + writer->header_bytes_written,
|
88
88
|
bytes_to_write);
|
89
89
|
bytes_written += bytes_to_write;
|
@@ -97,7 +97,7 @@ bool alts_write_frame_bytes(alts_frame_writer* writer, unsigned char* output,
|
|
97
97
|
}
|
98
98
|
/* Write some non-header bytes. */
|
99
99
|
size_t bytes_to_write =
|
100
|
-
|
100
|
+
std::min(writer->input_size - writer->input_bytes_written, *bytes_size);
|
101
101
|
memcpy(output, writer->input_buffer, bytes_to_write);
|
102
102
|
writer->input_buffer += bytes_to_write;
|
103
103
|
bytes_written += bytes_to_write;
|
@@ -120,8 +120,7 @@ void alts_destroy_frame_writer(alts_frame_writer* writer) { gpr_free(writer); }
|
|
120
120
|
|
121
121
|
/* Frame reader implementation. */
|
122
122
|
alts_frame_reader* alts_create_frame_reader() {
|
123
|
-
alts_frame_reader* reader =
|
124
|
-
static_cast<alts_frame_reader*>(gpr_zalloc(sizeof(*reader)));
|
123
|
+
alts_frame_reader* reader = grpc_core::Zalloc<alts_frame_reader>();
|
125
124
|
return reader;
|
126
125
|
}
|
127
126
|
|
@@ -167,7 +166,7 @@ bool alts_read_frame_bytes(alts_frame_reader* reader,
|
|
167
166
|
size_t bytes_processed = 0;
|
168
167
|
/* Process the header, if needed. */
|
169
168
|
if (reader->header_bytes_read != sizeof(reader->header_buffer)) {
|
170
|
-
size_t bytes_to_write =
|
169
|
+
size_t bytes_to_write = std::min(
|
171
170
|
*bytes_size, sizeof(reader->header_buffer) - reader->header_bytes_read);
|
172
171
|
memcpy(reader->header_buffer + reader->header_bytes_read, bytes,
|
173
172
|
bytes_to_write);
|
@@ -199,7 +198,7 @@ bool alts_read_frame_bytes(alts_frame_reader* reader,
|
|
199
198
|
reader->bytes_remaining = frame_length - kFrameMessageTypeFieldSize;
|
200
199
|
}
|
201
200
|
/* Process the non-header bytes. */
|
202
|
-
size_t bytes_to_write =
|
201
|
+
size_t bytes_to_write = std::min(*bytes_size, reader->bytes_remaining);
|
203
202
|
memcpy(reader->output_buffer, bytes, bytes_to_write);
|
204
203
|
reader->output_buffer += bytes_to_write;
|
205
204
|
bytes_processed += bytes_to_write;
|
@@ -178,8 +178,7 @@ static void handle_response_done(alts_grpc_handshaker_client* client,
|
|
178
178
|
const unsigned char* bytes_to_send,
|
179
179
|
size_t bytes_to_send_size,
|
180
180
|
tsi_handshaker_result* result) {
|
181
|
-
recv_message_result* p =
|
182
|
-
static_cast<recv_message_result*>(gpr_zalloc(sizeof(*p)));
|
181
|
+
recv_message_result* p = grpc_core::Zalloc<recv_message_result>();
|
183
182
|
p->status = status;
|
184
183
|
p->bytes_to_send = bytes_to_send;
|
185
184
|
p->bytes_to_send_size = bytes_to_send_size;
|
@@ -32,6 +32,7 @@
|
|
32
32
|
#include <grpc/support/sync.h>
|
33
33
|
#include <grpc/support/thd_id.h>
|
34
34
|
|
35
|
+
#include "src/core/lib/gprpp/memory.h"
|
35
36
|
#include "src/core/lib/gprpp/sync.h"
|
36
37
|
#include "src/core/lib/gprpp/thd.h"
|
37
38
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -151,6 +152,13 @@ static tsi_result handshaker_result_extract_peer(
|
|
151
152
|
return ok;
|
152
153
|
}
|
153
154
|
|
155
|
+
static tsi_result handshaker_result_get_frame_protector_type(
|
156
|
+
const tsi_handshaker_result* /*self*/,
|
157
|
+
tsi_frame_protector_type* frame_protector_type) {
|
158
|
+
*frame_protector_type = TSI_FRAME_PROTECTOR_NORMAL_OR_ZERO_COPY;
|
159
|
+
return TSI_OK;
|
160
|
+
}
|
161
|
+
|
154
162
|
static tsi_result handshaker_result_create_zero_copy_grpc_protector(
|
155
163
|
const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
|
156
164
|
tsi_zero_copy_grpc_protector** protector) {
|
@@ -247,9 +255,11 @@ static void handshaker_result_destroy(tsi_handshaker_result* self) {
|
|
247
255
|
|
248
256
|
static const tsi_handshaker_result_vtable result_vtable = {
|
249
257
|
handshaker_result_extract_peer,
|
258
|
+
handshaker_result_get_frame_protector_type,
|
250
259
|
handshaker_result_create_zero_copy_grpc_protector,
|
251
260
|
handshaker_result_create_frame_protector,
|
252
|
-
handshaker_result_get_unused_bytes,
|
261
|
+
handshaker_result_get_unused_bytes,
|
262
|
+
handshaker_result_destroy};
|
253
263
|
|
254
264
|
tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
|
255
265
|
bool is_client,
|
@@ -306,7 +316,7 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
|
|
306
316
|
// We don't check if local service account is empty here
|
307
317
|
// because local identity could be empty in certain situations.
|
308
318
|
alts_tsi_handshaker_result* sresult =
|
309
|
-
|
319
|
+
grpc_core::Zalloc<alts_tsi_handshaker_result>();
|
310
320
|
sresult->key_data =
|
311
321
|
static_cast<char*>(gpr_zalloc(kAltsAes128GcmRekeyKeyLength));
|
312
322
|
memcpy(sresult->key_data, key_data.data, kAltsAes128GcmRekeyKeyLength);
|
@@ -39,7 +39,7 @@ static void ensure_iovec_buf_size(alts_grpc_record_protocol* rp,
|
|
39
39
|
return;
|
40
40
|
}
|
41
41
|
/* At least double the iovec buffer size. */
|
42
|
-
rp->iovec_buf_length =
|
42
|
+
rp->iovec_buf_length = std::max(sb->count, 2 * rp->iovec_buf_length);
|
43
43
|
rp->iovec_buf = static_cast<iovec_t*>(
|
44
44
|
gpr_realloc(rp->iovec_buf, rp->iovec_buf_length * sizeof(iovec_t)));
|
45
45
|
}
|
@@ -278,9 +278,9 @@ tsi_result alts_zero_copy_grpc_protector_create(
|
|
278
278
|
size_t max_protected_frame_size_to_set = kDefaultFrameLength;
|
279
279
|
if (max_protected_frame_size != nullptr) {
|
280
280
|
*max_protected_frame_size =
|
281
|
-
|
281
|
+
std::min(*max_protected_frame_size, kMaxFrameLength);
|
282
282
|
*max_protected_frame_size =
|
283
|
-
|
283
|
+
std::max(*max_protected_frame_size, kMinFrameLength);
|
284
284
|
max_protected_frame_size_to_set = *max_protected_frame_size;
|
285
285
|
}
|
286
286
|
impl->max_protected_frame_size = max_protected_frame_size_to_set;
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
|
29
29
|
#include "src/core/lib/gpr/useful.h"
|
30
|
+
#include "src/core/lib/gprpp/memory.h"
|
30
31
|
#include "src/core/lib/slice/slice_internal.h"
|
31
32
|
#include "src/core/tsi/transport_security_grpc.h"
|
32
33
|
|
@@ -416,8 +417,8 @@ static tsi_result fake_zero_copy_grpc_protector_protect(
|
|
416
417
|
/* Protects each frame. */
|
417
418
|
while (unprotected_slices->length > 0) {
|
418
419
|
size_t frame_length =
|
419
|
-
|
420
|
-
|
420
|
+
std::min(impl->max_frame_size,
|
421
|
+
unprotected_slices->length + TSI_FAKE_FRAME_HEADER_SIZE);
|
421
422
|
grpc_slice slice = GRPC_SLICE_MALLOC(TSI_FAKE_FRAME_HEADER_SIZE);
|
422
423
|
store32_little_endian(static_cast<uint32_t>(frame_length),
|
423
424
|
GRPC_SLICE_START_PTR(slice));
|
@@ -498,6 +499,7 @@ struct fake_handshaker_result {
|
|
498
499
|
unsigned char* unused_bytes;
|
499
500
|
size_t unused_bytes_size;
|
500
501
|
};
|
502
|
+
|
501
503
|
static tsi_result fake_handshaker_result_extract_peer(
|
502
504
|
const tsi_handshaker_result* /*self*/, tsi_peer* peer) {
|
503
505
|
/* Construct a tsi_peer with 1 property: certificate type, security_level. */
|
@@ -514,6 +516,13 @@ static tsi_result fake_handshaker_result_extract_peer(
|
|
514
516
|
return result;
|
515
517
|
}
|
516
518
|
|
519
|
+
static tsi_result fake_handshaker_result_get_frame_protector_type(
|
520
|
+
const tsi_handshaker_result* /*self*/,
|
521
|
+
tsi_frame_protector_type* frame_protector_type) {
|
522
|
+
*frame_protector_type = TSI_FRAME_PROTECTOR_NORMAL_OR_ZERO_COPY;
|
523
|
+
return TSI_OK;
|
524
|
+
}
|
525
|
+
|
517
526
|
static tsi_result fake_handshaker_result_create_zero_copy_grpc_protector(
|
518
527
|
const tsi_handshaker_result* /*self*/,
|
519
528
|
size_t* max_output_protected_frame_size,
|
@@ -549,6 +558,7 @@ static void fake_handshaker_result_destroy(tsi_handshaker_result* self) {
|
|
549
558
|
|
550
559
|
static const tsi_handshaker_result_vtable handshaker_result_vtable = {
|
551
560
|
fake_handshaker_result_extract_peer,
|
561
|
+
fake_handshaker_result_get_frame_protector_type,
|
552
562
|
fake_handshaker_result_create_zero_copy_grpc_protector,
|
553
563
|
fake_handshaker_result_create_frame_protector,
|
554
564
|
fake_handshaker_result_get_unused_bytes,
|
@@ -562,8 +572,7 @@ static tsi_result fake_handshaker_result_create(
|
|
562
572
|
handshaker_result == nullptr) {
|
563
573
|
return TSI_INVALID_ARGUMENT;
|
564
574
|
}
|
565
|
-
fake_handshaker_result* result =
|
566
|
-
static_cast<fake_handshaker_result*>(gpr_zalloc(sizeof(*result)));
|
575
|
+
fake_handshaker_result* result = grpc_core::Zalloc<fake_handshaker_result>();
|
567
576
|
result->base.vtable = &handshaker_result_vtable;
|
568
577
|
if (unused_bytes_size > 0) {
|
569
578
|
result->unused_bytes =
|
@@ -755,8 +764,7 @@ static const tsi_handshaker_vtable handshaker_vtable = {
|
|
755
764
|
};
|
756
765
|
|
757
766
|
tsi_handshaker* tsi_create_fake_handshaker(int is_client) {
|
758
|
-
tsi_fake_handshaker* impl =
|
759
|
-
static_cast<tsi_fake_handshaker*>(gpr_zalloc(sizeof(*impl)));
|
767
|
+
tsi_fake_handshaker* impl = grpc_core::Zalloc<tsi_fake_handshaker>();
|
760
768
|
impl->base.vtable = &handshaker_vtable;
|
761
769
|
impl->is_client = is_client;
|
762
770
|
impl->result = TSI_HANDSHAKE_IN_PROGRESS;
|
@@ -777,7 +785,7 @@ tsi_handshaker* tsi_create_fake_handshaker(int is_client) {
|
|
777
785
|
tsi_frame_protector* tsi_create_fake_frame_protector(
|
778
786
|
size_t* max_protected_frame_size) {
|
779
787
|
tsi_fake_frame_protector* impl =
|
780
|
-
|
788
|
+
grpc_core::Zalloc<tsi_fake_frame_protector>();
|
781
789
|
impl->max_frame_size = (max_protected_frame_size == nullptr)
|
782
790
|
? TSI_FAKE_DEFAULT_FRAME_SIZE
|
783
791
|
: *max_protected_frame_size;
|