grpc 1.41.0 → 1.42.0.pre1
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 +83 -70
- 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
@@ -40,10 +40,10 @@ bool ParseDurationFromJson(const Json& field, grpc_millis* duration);
|
|
40
40
|
// Return true on success, false otherwise. If an error is encountered during
|
41
41
|
// parsing, a descriptive error is appended to \a error_list.
|
42
42
|
//
|
43
|
-
template <typename NumericType
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
template <typename NumericType>
|
44
|
+
bool ExtractJsonNumber(const Json& json, absl::string_view field_name,
|
45
|
+
NumericType* output,
|
46
|
+
std::vector<grpc_error_handle>* error_list) {
|
47
47
|
static_assert(std::is_integral<NumericType>::value, "Integral required");
|
48
48
|
if (json.type() != Json::Type::NUMBER) {
|
49
49
|
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
@@ -58,27 +58,14 @@ inline bool ExtractJsonNumber(const Json& json, const std::string& field_name,
|
|
58
58
|
return true;
|
59
59
|
}
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
bool* output, ErrorVectorType* error_list) {
|
64
|
-
switch (json.type()) {
|
65
|
-
case Json::Type::JSON_TRUE:
|
66
|
-
*output = true;
|
67
|
-
return true;
|
68
|
-
case Json::Type::JSON_FALSE:
|
69
|
-
*output = false;
|
70
|
-
return true;
|
71
|
-
default:
|
72
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
73
|
-
absl::StrCat("field:", field_name, " error:type should be BOOLEAN")));
|
74
|
-
return false;
|
75
|
-
}
|
76
|
-
}
|
61
|
+
bool ExtractJsonBool(const Json& json, absl::string_view field_name,
|
62
|
+
bool* output, std::vector<grpc_error_handle>* error_list);
|
77
63
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
64
|
+
// OutputType can be std::string or absl::string_view.
|
65
|
+
template <typename OutputType>
|
66
|
+
bool ExtractJsonString(const Json& json, absl::string_view field_name,
|
67
|
+
OutputType* output,
|
68
|
+
std::vector<grpc_error_handle>* error_list) {
|
82
69
|
if (json.type() != Json::Type::STRING) {
|
83
70
|
*output = "";
|
84
71
|
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
@@ -89,72 +76,61 @@ inline bool ExtractJsonString(const Json& json, const std::string& field_name,
|
|
89
76
|
return true;
|
90
77
|
}
|
91
78
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
ErrorVectorType* error_list) {
|
96
|
-
if (json.type() != Json::Type::ARRAY) {
|
97
|
-
*output = nullptr;
|
98
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
99
|
-
absl::StrCat("field:", field_name, " error:type should be ARRAY")));
|
100
|
-
return false;
|
101
|
-
}
|
102
|
-
*output = &json.array_value();
|
103
|
-
return true;
|
104
|
-
}
|
79
|
+
bool ExtractJsonArray(const Json& json, absl::string_view field_name,
|
80
|
+
const Json::Array** output,
|
81
|
+
std::vector<grpc_error_handle>* error_list);
|
105
82
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
ErrorVectorType* error_list) {
|
110
|
-
if (json.type() != Json::Type::OBJECT) {
|
111
|
-
*output = nullptr;
|
112
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
113
|
-
absl::StrCat("field:", field_name, " error:type should be OBJECT")));
|
114
|
-
return false;
|
115
|
-
}
|
116
|
-
*output = &json.object_value();
|
117
|
-
return true;
|
118
|
-
}
|
83
|
+
bool ExtractJsonObject(const Json& json, absl::string_view field_name,
|
84
|
+
const Json::Object** output,
|
85
|
+
std::vector<grpc_error_handle>* error_list);
|
119
86
|
|
120
|
-
|
121
|
-
|
122
|
-
|
87
|
+
// Wrappers for automatically choosing one of the above functions based
|
88
|
+
// on output parameter type.
|
89
|
+
template <typename NumericType>
|
90
|
+
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
|
91
|
+
NumericType* output,
|
92
|
+
std::vector<grpc_error_handle>* error_list) {
|
123
93
|
return ExtractJsonNumber(json, field_name, output, error_list);
|
124
94
|
}
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
bool* output, ErrorVectorType* error_list) {
|
95
|
+
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
|
96
|
+
bool* output,
|
97
|
+
std::vector<grpc_error_handle>* error_list) {
|
129
98
|
return ExtractJsonBool(json, field_name, output, error_list);
|
130
99
|
}
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
std::string* output, ErrorVectorType* error_list) {
|
100
|
+
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
|
101
|
+
std::string* output,
|
102
|
+
std::vector<grpc_error_handle>* error_list) {
|
135
103
|
return ExtractJsonString(json, field_name, output, error_list);
|
136
104
|
}
|
137
|
-
|
138
|
-
|
139
|
-
|
105
|
+
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
|
106
|
+
absl::string_view* output,
|
107
|
+
std::vector<grpc_error_handle>* error_list) {
|
108
|
+
return ExtractJsonString(json, field_name, output, error_list);
|
109
|
+
}
|
110
|
+
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
|
140
111
|
const Json::Array** output,
|
141
|
-
|
112
|
+
std::vector<grpc_error_handle>* error_list) {
|
142
113
|
return ExtractJsonArray(json, field_name, output, error_list);
|
143
114
|
}
|
144
|
-
|
145
|
-
template <typename ErrorVectorType>
|
146
|
-
inline bool ExtractJsonType(const Json& json, const std::string& field_name,
|
115
|
+
inline bool ExtractJsonType(const Json& json, absl::string_view field_name,
|
147
116
|
const Json::Object** output,
|
148
|
-
|
117
|
+
std::vector<grpc_error_handle>* error_list) {
|
149
118
|
return ExtractJsonObject(json, field_name, output, error_list);
|
150
119
|
}
|
151
120
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
121
|
+
// Extracts a field from a JSON object, automatically selecting the type
|
122
|
+
// of parsing based on the output parameter type.
|
123
|
+
// If the field is not present, returns false, and if required is true,
|
124
|
+
// adds an error to error_list.
|
125
|
+
// Upon any other error, adds an error to error_list and returns false.
|
126
|
+
template <typename T>
|
127
|
+
bool ParseJsonObjectField(const Json::Object& object,
|
128
|
+
absl::string_view field_name, T* output,
|
129
|
+
std::vector<grpc_error_handle>* error_list,
|
130
|
+
bool required = true) {
|
131
|
+
// TODO(roth): Once we can use C++14 heterogenous lookups, stop
|
132
|
+
// creating a std::string here.
|
133
|
+
auto it = object.find(std::string(field_name));
|
158
134
|
if (it == object.end()) {
|
159
135
|
if (required) {
|
160
136
|
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
@@ -166,30 +142,12 @@ inline bool ParseJsonObjectField(const Json::Object& object,
|
|
166
142
|
return ExtractJsonType(child_object_json, field_name, output, error_list);
|
167
143
|
}
|
168
144
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
auto it = object.find(field_name);
|
176
|
-
if (it == object.end()) {
|
177
|
-
if (required) {
|
178
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
179
|
-
absl::StrCat("field:", field_name, " error:does not exist.")));
|
180
|
-
}
|
181
|
-
return false;
|
182
|
-
}
|
183
|
-
if (!ParseDurationFromJson(it->second, output)) {
|
184
|
-
*output = GRPC_MILLIS_INF_PAST;
|
185
|
-
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
186
|
-
absl::StrCat("field:", field_name,
|
187
|
-
" error:type should be STRING of the form given by "
|
188
|
-
"google.proto.Duration.")));
|
189
|
-
return false;
|
190
|
-
}
|
191
|
-
return true;
|
192
|
-
}
|
145
|
+
// Alternative to ParseJsonObjectField() for duration-value fields.
|
146
|
+
bool ParseJsonObjectFieldAsDuration(const Json::Object& object,
|
147
|
+
absl::string_view field_name,
|
148
|
+
grpc_millis* output,
|
149
|
+
std::vector<grpc_error_handle>* error_list,
|
150
|
+
bool required = true);
|
193
151
|
|
194
152
|
} // namespace grpc_core
|
195
153
|
|
@@ -27,7 +27,7 @@ struct grpc_authorization_policy_provider
|
|
27
27
|
grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> allow_engine;
|
28
28
|
grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> deny_engine;
|
29
29
|
};
|
30
|
-
virtual AuthorizationEngines engines()
|
30
|
+
virtual AuthorizationEngines engines() = 0;
|
31
31
|
};
|
32
32
|
|
33
33
|
#endif // GRPC_CORE_LIB_SECURITY_AUTHORIZATION_AUTHORIZATION_POLICY_PROVIDER_H
|
@@ -80,8 +80,9 @@ EvaluateArgs::PerChannelArgs::PerChannelArgs(grpc_auth_context* auth_context,
|
|
80
80
|
|
81
81
|
absl::string_view EvaluateArgs::GetPath() const {
|
82
82
|
absl::string_view path;
|
83
|
-
if (metadata_ != nullptr &&
|
84
|
-
|
83
|
+
if (metadata_ != nullptr &&
|
84
|
+
metadata_->legacy_index()->named.path != nullptr) {
|
85
|
+
grpc_linked_mdelem* elem = metadata_->legacy_index()->named.path;
|
85
86
|
const grpc_slice& val = GRPC_MDVALUE(elem->md);
|
86
87
|
path = StringViewFromSlice(val);
|
87
88
|
}
|
@@ -90,8 +91,9 @@ absl::string_view EvaluateArgs::GetPath() const {
|
|
90
91
|
|
91
92
|
absl::string_view EvaluateArgs::GetHost() const {
|
92
93
|
absl::string_view host;
|
93
|
-
if (metadata_ != nullptr &&
|
94
|
-
|
94
|
+
if (metadata_ != nullptr &&
|
95
|
+
metadata_->legacy_index()->named.host != nullptr) {
|
96
|
+
grpc_linked_mdelem* elem = metadata_->legacy_index()->named.host;
|
95
97
|
const grpc_slice& val = GRPC_MDVALUE(elem->md);
|
96
98
|
host = StringViewFromSlice(val);
|
97
99
|
}
|
@@ -100,8 +102,9 @@ absl::string_view EvaluateArgs::GetHost() const {
|
|
100
102
|
|
101
103
|
absl::string_view EvaluateArgs::GetMethod() const {
|
102
104
|
absl::string_view method;
|
103
|
-
if (metadata_ != nullptr &&
|
104
|
-
|
105
|
+
if (metadata_ != nullptr &&
|
106
|
+
metadata_->legacy_index()->named.method != nullptr) {
|
107
|
+
grpc_linked_mdelem* elem = metadata_->legacy_index()->named.method;
|
105
108
|
const grpc_slice& val = GRPC_MDVALUE(elem->md);
|
106
109
|
method = StringViewFromSlice(val);
|
107
110
|
}
|
@@ -114,12 +117,11 @@ std::multimap<absl::string_view, absl::string_view> EvaluateArgs::GetHeaders()
|
|
114
117
|
if (metadata_ == nullptr) {
|
115
118
|
return headers;
|
116
119
|
}
|
117
|
-
|
118
|
-
|
119
|
-
const grpc_slice&
|
120
|
-
const grpc_slice& val = GRPC_MDVALUE(elem->md);
|
120
|
+
metadata_->ForEach([&](grpc_mdelem md) {
|
121
|
+
const grpc_slice& key = GRPC_MDKEY(md);
|
122
|
+
const grpc_slice& val = GRPC_MDVALUE(md);
|
121
123
|
headers.emplace(StringViewFromSlice(key), StringViewFromSlice(val));
|
122
|
-
}
|
124
|
+
});
|
123
125
|
return headers;
|
124
126
|
}
|
125
127
|
|
@@ -128,7 +130,7 @@ absl::optional<absl::string_view> EvaluateArgs::GetHeaderValue(
|
|
128
130
|
if (metadata_ == nullptr) {
|
129
131
|
return absl::nullopt;
|
130
132
|
}
|
131
|
-
return
|
133
|
+
return metadata_->GetValue(key, concatenated_value);
|
132
134
|
}
|
133
135
|
|
134
136
|
grpc_resolved_address EvaluateArgs::GetLocalAddress() const {
|
@@ -92,6 +92,18 @@ void SdkServerAuthzFilter::CallData::Destroy(
|
|
92
92
|
bool SdkServerAuthzFilter::CallData::IsAuthorized(SdkServerAuthzFilter* chand) {
|
93
93
|
EvaluateArgs args(recv_initial_metadata_batch_,
|
94
94
|
&chand->per_channel_evaluate_args_);
|
95
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_sdk_authz_trace)) {
|
96
|
+
gpr_log(
|
97
|
+
GPR_DEBUG,
|
98
|
+
"checking request: url_path=%s, transport_security_type=%s, "
|
99
|
+
"uri_sans=[%s], dns_sans=[%s], local_address=%s:%d, peer_address=%s:%d",
|
100
|
+
std::string(args.GetPath()).c_str(),
|
101
|
+
std::string(args.GetTransportSecurityType()).c_str(),
|
102
|
+
absl::StrJoin(args.GetUriSans(), ",").c_str(),
|
103
|
+
absl::StrJoin(args.GetDnsSans(), ",").c_str(),
|
104
|
+
std::string(args.GetLocalAddressString()).c_str(), args.GetLocalPort(),
|
105
|
+
std::string(args.GetPeerAddressString()).c_str(), args.GetPeerPort());
|
106
|
+
}
|
95
107
|
grpc_authorization_policy_provider::AuthorizationEngines engines =
|
96
108
|
chand->provider_->engines();
|
97
109
|
if (engines.deny_engine != nullptr) {
|
@@ -137,7 +149,7 @@ void SdkServerAuthzFilter::CallData::RecvInitialMetadataReady(
|
|
137
149
|
GRPC_STATUS_PERMISSION_DENIED);
|
138
150
|
}
|
139
151
|
} else {
|
140
|
-
GRPC_ERROR_REF(error);
|
152
|
+
(void)GRPC_ERROR_REF(error);
|
141
153
|
}
|
142
154
|
Closure::Run(DEBUG_LOCATION, calld->original_recv_initial_metadata_ready_,
|
143
155
|
error);
|
@@ -223,7 +223,7 @@ grpc_auth_property_iterator grpc_auth_context_peer_identity(
|
|
223
223
|
void grpc_auth_context::ensure_capacity() {
|
224
224
|
if (properties_.count == properties_.capacity) {
|
225
225
|
properties_.capacity =
|
226
|
-
|
226
|
+
std::max(properties_.capacity + 8, properties_.capacity * 2);
|
227
227
|
properties_.array = static_cast<grpc_auth_property*>(gpr_realloc(
|
228
228
|
properties_.array, properties_.capacity * sizeof(grpc_auth_property)));
|
229
229
|
}
|
@@ -289,7 +289,9 @@ static void* auth_context_pointer_arg_copy(void* p) {
|
|
289
289
|
: ctx->Ref(DEBUG_LOCATION, "auth_context_pointer_arg").release();
|
290
290
|
}
|
291
291
|
|
292
|
-
static int auth_context_pointer_cmp(void* a, void* b) {
|
292
|
+
static int auth_context_pointer_cmp(void* a, void* b) {
|
293
|
+
return grpc_core::QsortCompare(a, b);
|
294
|
+
}
|
293
295
|
|
294
296
|
static const grpc_arg_pointer_vtable auth_context_pointer_vtable = {
|
295
297
|
auth_context_pointer_arg_copy, auth_context_pointer_arg_destroy,
|
@@ -147,7 +147,7 @@ void grpc_composite_call_credentials::push_to_inner(
|
|
147
147
|
auto composite_creds =
|
148
148
|
static_cast<grpc_composite_call_credentials*>(creds.get());
|
149
149
|
for (size_t i = 0; i < composite_creds->inner().size(); ++i) {
|
150
|
-
inner_.push_back(
|
150
|
+
inner_.push_back(composite_creds->inner_[i]);
|
151
151
|
}
|
152
152
|
}
|
153
153
|
|
@@ -59,7 +59,9 @@ static void* credentials_pointer_arg_copy(void* p) {
|
|
59
59
|
return static_cast<grpc_channel_credentials*>(p)->Ref().release();
|
60
60
|
}
|
61
61
|
|
62
|
-
static int credentials_pointer_cmp(void* a, void* b) {
|
62
|
+
static int credentials_pointer_cmp(void* a, void* b) {
|
63
|
+
return grpc_core::QsortCompare(a, b);
|
64
|
+
}
|
63
65
|
|
64
66
|
static const grpc_arg_pointer_vtable credentials_pointer_vtable = {
|
65
67
|
credentials_pointer_arg_copy, credentials_pointer_arg_destroy,
|
@@ -127,7 +129,7 @@ static void* server_credentials_pointer_arg_copy(void* p) {
|
|
127
129
|
}
|
128
130
|
|
129
131
|
static int server_credentials_pointer_cmp(void* a, void* b) {
|
130
|
-
return
|
132
|
+
return grpc_core::QsortCompare(a, b);
|
131
133
|
}
|
132
134
|
|
133
135
|
static const grpc_arg_pointer_vtable cred_ptr_vtable = {
|
@@ -93,7 +93,7 @@ void grpc_override_well_known_credentials_path_getter(
|
|
93
93
|
|
94
94
|
/* --- grpc_channel_credentials. --- */
|
95
95
|
|
96
|
-
#define GRPC_ARG_CHANNEL_CREDENTIALS "grpc.channel_credentials"
|
96
|
+
#define GRPC_ARG_CHANNEL_CREDENTIALS "grpc.internal.channel_credentials"
|
97
97
|
|
98
98
|
// This type is forward declared as a C struct and we cannot define it as a
|
99
99
|
// class. Otherwise, compiler will complain about type mismatch due to
|
@@ -137,6 +137,11 @@ struct grpc_channel_credentials
|
|
137
137
|
const char* type_;
|
138
138
|
};
|
139
139
|
|
140
|
+
// TODO(roth): Once we eliminate insecure builds, find a better way to
|
141
|
+
// plumb credentials so that it doesn't need to flow through channel
|
142
|
+
// args. For example, we'll want to expose it to LB policies by adding
|
143
|
+
// methods on the helper API.
|
144
|
+
|
140
145
|
/* Util to encapsulate the channel credentials in a channel arg. */
|
141
146
|
grpc_arg grpc_channel_credentials_to_arg(grpc_channel_credentials* credentials);
|
142
147
|
|
@@ -17,9 +17,11 @@
|
|
17
17
|
|
18
18
|
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
|
19
19
|
|
20
|
+
#include "absl/strings/match.h"
|
20
21
|
#include "absl/strings/str_format.h"
|
21
22
|
#include "absl/strings/str_join.h"
|
22
23
|
#include "absl/strings/str_split.h"
|
24
|
+
#include "absl/strings/strip.h"
|
23
25
|
#include "absl/time/clock.h"
|
24
26
|
#include "absl/time/time.h"
|
25
27
|
|
@@ -59,6 +61,23 @@ std::string UrlEncode(const absl::string_view& s) {
|
|
59
61
|
return result;
|
60
62
|
}
|
61
63
|
|
64
|
+
// Expression to match:
|
65
|
+
// //iam.googleapis.com/locations/[^/]+/workforcePools/[^/]+/providers/.+
|
66
|
+
bool MatchWorkforcePoolAudience(absl::string_view audience) {
|
67
|
+
// Match "//iam.googleapis.com/locations/"
|
68
|
+
if (!absl::ConsumePrefix(&audience, "//iam.googleapis.com")) return false;
|
69
|
+
if (!absl::ConsumePrefix(&audience, "/locations/")) return false;
|
70
|
+
// Match "[^/]+/workforcePools/"
|
71
|
+
std::pair<absl::string_view, absl::string_view> workforce_pools_split_result =
|
72
|
+
absl::StrSplit(audience, absl::MaxSplits("/workforcePools/", 1));
|
73
|
+
if (absl::StrContains(workforce_pools_split_result.first, '/')) return false;
|
74
|
+
// Match "[^/]+/providers/.+"
|
75
|
+
std::pair<absl::string_view, absl::string_view> providers_split_result =
|
76
|
+
absl::StrSplit(workforce_pools_split_result.second,
|
77
|
+
absl::MaxSplits("/providers/", 1));
|
78
|
+
return !absl::StrContains(providers_split_result.first, '/');
|
79
|
+
}
|
80
|
+
|
62
81
|
} // namespace
|
63
82
|
|
64
83
|
RefCountedPtr<ExternalAccountCredentials> ExternalAccountCredentials::Create(
|
@@ -151,6 +170,17 @@ RefCountedPtr<ExternalAccountCredentials> ExternalAccountCredentials::Create(
|
|
151
170
|
if (it != json.object_value().end()) {
|
152
171
|
options.client_secret = it->second.string_value();
|
153
172
|
}
|
173
|
+
it = json.object_value().find("workforce_pool_user_project");
|
174
|
+
if (it != json.object_value().end()) {
|
175
|
+
if (MatchWorkforcePoolAudience(options.audience)) {
|
176
|
+
options.workforce_pool_user_project = it->second.string_value();
|
177
|
+
} else {
|
178
|
+
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
179
|
+
"workforce_pool_user_project should not be set for non-workforce "
|
180
|
+
"pool credentials");
|
181
|
+
return nullptr;
|
182
|
+
}
|
183
|
+
}
|
154
184
|
RefCountedPtr<ExternalAccountCredentials> creds;
|
155
185
|
if (options.credential_source.object_value().find("environment_id") !=
|
156
186
|
options.credential_source.object_value().end()) {
|
@@ -267,25 +297,31 @@ void ExternalAccountCredentials::ExchangeToken(
|
|
267
297
|
request.handshaker =
|
268
298
|
uri->scheme() == "https" ? &grpc_httpcli_ssl : &grpc_httpcli_plaintext;
|
269
299
|
std::vector<std::string> body_parts;
|
270
|
-
body_parts.push_back(
|
271
|
-
|
300
|
+
body_parts.push_back(
|
301
|
+
absl::StrFormat("audience=%s", UrlEncode(options_.audience).c_str()));
|
272
302
|
body_parts.push_back(absl::StrFormat(
|
273
|
-
"
|
303
|
+
"grant_type=%s",
|
274
304
|
UrlEncode(EXTERNAL_ACCOUNT_CREDENTIALS_GRANT_TYPE).c_str()));
|
275
305
|
body_parts.push_back(absl::StrFormat(
|
276
|
-
"
|
306
|
+
"requested_token_type=%s",
|
277
307
|
UrlEncode(EXTERNAL_ACCOUNT_CREDENTIALS_REQUESTED_TOKEN_TYPE).c_str()));
|
308
|
+
body_parts.push_back(absl::StrFormat(
|
309
|
+
"subject_token_type=%s", UrlEncode(options_.subject_token_type).c_str()));
|
278
310
|
body_parts.push_back(
|
279
|
-
absl::StrFormat("
|
280
|
-
UrlEncode(options_.subject_token_type).c_str()));
|
281
|
-
body_parts.push_back(absl::StrFormat("%s=%s", "subject_token",
|
282
|
-
UrlEncode(subject_token).c_str()));
|
311
|
+
absl::StrFormat("subject_token=%s", UrlEncode(subject_token).c_str()));
|
283
312
|
std::string scope = GOOGLE_CLOUD_PLATFORM_DEFAULT_SCOPE;
|
284
313
|
if (options_.service_account_impersonation_url.empty()) {
|
285
314
|
scope = absl::StrJoin(scopes_, " ");
|
286
315
|
}
|
287
|
-
body_parts.push_back(
|
288
|
-
|
316
|
+
body_parts.push_back(absl::StrFormat("scope=%s", UrlEncode(scope).c_str()));
|
317
|
+
Json::Object addtional_options_json_object;
|
318
|
+
if (options_.client_id.empty() && options_.client_secret.empty()) {
|
319
|
+
addtional_options_json_object["userProject"] =
|
320
|
+
options_.workforce_pool_user_project;
|
321
|
+
}
|
322
|
+
Json addtional_options_json(std::move(addtional_options_json_object));
|
323
|
+
body_parts.push_back(absl::StrFormat(
|
324
|
+
"options=%s", UrlEncode(addtional_options_json.Dump()).c_str()));
|
289
325
|
std::string body = absl::StrJoin(body_parts, "&");
|
290
326
|
grpc_resource_quota* resource_quota =
|
291
327
|
grpc_resource_quota_create("external_account_credentials");
|
@@ -372,7 +408,7 @@ void ExternalAccountCredentials::ImpersenateServiceAccount() {
|
|
372
408
|
request.handshaker =
|
373
409
|
uri->scheme() == "https" ? &grpc_httpcli_ssl : &grpc_httpcli_plaintext;
|
374
410
|
std::string scope = absl::StrJoin(scopes_, " ");
|
375
|
-
std::string body = absl::StrFormat("
|
411
|
+
std::string body = absl::StrFormat("scope=%s", scope);
|
376
412
|
grpc_resource_quota* resource_quota =
|
377
413
|
grpc_resource_quota_create("external_account_credentials");
|
378
414
|
grpc_http_response_destroy(&ctx_->response);
|
@@ -290,7 +290,7 @@ static grpc_error_handle create_default_creds_from_path(
|
|
290
290
|
if (json.type() != Json::Type::OBJECT) {
|
291
291
|
error = grpc_error_set_str(
|
292
292
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to parse JSON"),
|
293
|
-
GRPC_ERROR_STR_RAW_BYTES,
|
293
|
+
GRPC_ERROR_STR_RAW_BYTES, grpc_core::StringViewFromSlice(creds_data));
|
294
294
|
goto end;
|
295
295
|
}
|
296
296
|
|
@@ -134,7 +134,7 @@ static void jose_header_destroy(jose_header* h) {
|
|
134
134
|
static jose_header* jose_header_from_json(Json json) {
|
135
135
|
const char* alg_value;
|
136
136
|
Json::Object::const_iterator it;
|
137
|
-
jose_header* h =
|
137
|
+
jose_header* h = grpc_core::Zalloc<jose_header>();
|
138
138
|
if (json.type() != Json::Type::OBJECT) {
|
139
139
|
gpr_log(GPR_ERROR, "JSON value is not an object");
|
140
140
|
goto error;
|
@@ -238,8 +238,7 @@ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims* claims) {
|
|
238
238
|
}
|
239
239
|
|
240
240
|
grpc_jwt_claims* grpc_jwt_claims_from_json(Json json) {
|
241
|
-
grpc_jwt_claims* claims =
|
242
|
-
static_cast<grpc_jwt_claims*>(gpr_zalloc(sizeof(grpc_jwt_claims)));
|
241
|
+
grpc_jwt_claims* claims = grpc_core::Zalloc<grpc_jwt_claims>();
|
243
242
|
claims->json.Init(std::move(json));
|
244
243
|
claims->iat = gpr_inf_past(GPR_CLOCK_REALTIME);
|
245
244
|
claims->nbf = gpr_inf_past(GPR_CLOCK_REALTIME);
|
@@ -356,8 +355,7 @@ static verifier_cb_ctx* verifier_cb_ctx_create(
|
|
356
355
|
grpc_jwt_verification_done_cb cb) {
|
357
356
|
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
358
357
|
grpc_core::ExecCtx exec_ctx;
|
359
|
-
verifier_cb_ctx* ctx =
|
360
|
-
static_cast<verifier_cb_ctx*>(gpr_zalloc(sizeof(verifier_cb_ctx)));
|
358
|
+
verifier_cb_ctx* ctx = new verifier_cb_ctx();
|
361
359
|
ctx->verifier = verifier;
|
362
360
|
ctx->pollent = grpc_polling_entity_create_from_pollset(pollset);
|
363
361
|
ctx->header = header;
|
@@ -367,7 +365,6 @@ static verifier_cb_ctx* verifier_cb_ctx_create(
|
|
367
365
|
ctx->signed_data = grpc_slice_from_copied_buffer(signed_jwt, signed_jwt_len);
|
368
366
|
ctx->user_data = user_data;
|
369
367
|
ctx->user_cb = cb;
|
370
|
-
|
371
368
|
return ctx;
|
372
369
|
}
|
373
370
|
|
@@ -381,7 +378,7 @@ void verifier_cb_ctx_destroy(verifier_cb_ctx* ctx) {
|
|
381
378
|
grpc_http_response_destroy(&ctx->responses[i]);
|
382
379
|
}
|
383
380
|
/* TODO: see what to do with claims... */
|
384
|
-
|
381
|
+
delete ctx;
|
385
382
|
}
|
386
383
|
|
387
384
|
/* --- grpc_jwt_verifier object. --- */
|
@@ -890,8 +887,7 @@ error:
|
|
890
887
|
grpc_jwt_verifier* grpc_jwt_verifier_create(
|
891
888
|
const grpc_jwt_verifier_email_domain_key_url_mapping* mappings,
|
892
889
|
size_t num_mappings) {
|
893
|
-
grpc_jwt_verifier* v =
|
894
|
-
static_cast<grpc_jwt_verifier*>(gpr_zalloc(sizeof(grpc_jwt_verifier)));
|
890
|
+
grpc_jwt_verifier* v = grpc_core::Zalloc<grpc_jwt_verifier>();
|
895
891
|
grpc_httpcli_context_init(&v->http_ctx);
|
896
892
|
|
897
893
|
/* We know at least of one mapping. */
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#include <grpc/support/log.h>
|
30
30
|
#include <grpc/support/sync.h>
|
31
31
|
|
32
|
+
#include "src/core/lib/gprpp/memory.h"
|
32
33
|
#include "src/core/lib/slice/slice_internal.h"
|
33
34
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
34
35
|
#include "src/core/lib/surface/api_trace.h"
|
@@ -159,8 +160,7 @@ bool grpc_plugin_credentials::get_request_metadata(
|
|
159
160
|
bool retval = true; // Synchronous return.
|
160
161
|
if (plugin_.get_metadata != nullptr) {
|
161
162
|
// Create pending_request object.
|
162
|
-
pending_request* request =
|
163
|
-
static_cast<pending_request*>(gpr_zalloc(sizeof(*request)));
|
163
|
+
pending_request* request = grpc_core::Zalloc<pending_request>();
|
164
164
|
request->creds = this;
|
165
165
|
request->md_array = md_array;
|
166
166
|
request->on_request_metadata = on_request_metadata;
|
@@ -92,12 +92,12 @@ class grpc_fake_channel_security_connector final
|
|
92
92
|
c = strcmp(target_, other->target_);
|
93
93
|
if (c != 0) return c;
|
94
94
|
if (expected_targets_ == nullptr || other->expected_targets_ == nullptr) {
|
95
|
-
c =
|
95
|
+
c = grpc_core::QsortCompare(expected_targets_, other->expected_targets_);
|
96
96
|
} else {
|
97
97
|
c = strcmp(expected_targets_, other->expected_targets_);
|
98
98
|
}
|
99
99
|
if (c != 0) return c;
|
100
|
-
return
|
100
|
+
return grpc_core::QsortCompare(is_lb_channel_, other->is_lb_channel_);
|
101
101
|
}
|
102
102
|
|
103
103
|
void add_handshakers(const grpc_channel_args* args,
|
@@ -60,7 +60,9 @@ grpc_channel_security_connector::~grpc_channel_security_connector() {}
|
|
60
60
|
|
61
61
|
int grpc_security_connector_cmp(const grpc_security_connector* sc,
|
62
62
|
const grpc_security_connector* other) {
|
63
|
-
if (sc == nullptr || other == nullptr)
|
63
|
+
if (sc == nullptr || other == nullptr) {
|
64
|
+
return grpc_core::QsortCompare(sc, other);
|
65
|
+
}
|
64
66
|
return sc->cmp(other);
|
65
67
|
}
|
66
68
|
|
@@ -70,9 +72,10 @@ int grpc_channel_security_connector::channel_security_connector_cmp(
|
|
70
72
|
static_cast<const grpc_channel_security_connector*>(other);
|
71
73
|
GPR_ASSERT(channel_creds() != nullptr);
|
72
74
|
GPR_ASSERT(other_sc->channel_creds() != nullptr);
|
73
|
-
int c =
|
75
|
+
int c = grpc_core::QsortCompare(channel_creds(), other_sc->channel_creds());
|
74
76
|
if (c != 0) return c;
|
75
|
-
return
|
77
|
+
return grpc_core::QsortCompare(request_metadata_creds(),
|
78
|
+
other_sc->request_metadata_creds());
|
76
79
|
}
|
77
80
|
|
78
81
|
int grpc_server_security_connector::server_security_connector_cmp(
|
@@ -81,15 +84,17 @@ int grpc_server_security_connector::server_security_connector_cmp(
|
|
81
84
|
static_cast<const grpc_server_security_connector*>(other);
|
82
85
|
GPR_ASSERT(server_creds() != nullptr);
|
83
86
|
GPR_ASSERT(other_sc->server_creds() != nullptr);
|
84
|
-
return
|
87
|
+
return grpc_core::QsortCompare(server_creds(), other_sc->server_creds());
|
85
88
|
}
|
86
89
|
|
87
90
|
static void connector_arg_destroy(void* p) {
|
91
|
+
if (p == nullptr) return;
|
88
92
|
static_cast<grpc_security_connector*>(p)->Unref(DEBUG_LOCATION,
|
89
93
|
"connector_arg_destroy");
|
90
94
|
}
|
91
95
|
|
92
96
|
static void* connector_arg_copy(void* p) {
|
97
|
+
if (p == nullptr) return nullptr;
|
93
98
|
return static_cast<grpc_security_connector*>(p)
|
94
99
|
->Ref(DEBUG_LOCATION, "connector_arg_copy")
|
95
100
|
.release();
|