grpc 1.41.1 → 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 +55 -43
- 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/src/crypto/asn1/a_bool.c +20 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- 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 +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- 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/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
- 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 +75 -63
- 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
@@ -104,15 +104,17 @@ struct channel_data {
|
|
104
104
|
} // namespace
|
105
105
|
|
106
106
|
static grpc_error_handle hs_filter_outgoing_metadata(grpc_metadata_batch* b) {
|
107
|
-
if (b->
|
107
|
+
if (b->legacy_index()->named.grpc_message != nullptr) {
|
108
108
|
grpc_slice pct_encoded_msg = grpc_core::PercentEncodeSlice(
|
109
|
-
GRPC_MDVALUE(b->
|
109
|
+
GRPC_MDVALUE(b->legacy_index()->named.grpc_message->md),
|
110
110
|
grpc_core::PercentEncodingType::Compatible);
|
111
|
-
if (grpc_slice_is_equivalent(
|
112
|
-
|
111
|
+
if (grpc_slice_is_equivalent(
|
112
|
+
pct_encoded_msg,
|
113
|
+
GRPC_MDVALUE(b->legacy_index()->named.grpc_message->md))) {
|
113
114
|
grpc_slice_unref_internal(pct_encoded_msg);
|
114
115
|
} else {
|
115
|
-
grpc_metadata_batch_set_value(b->
|
116
|
+
grpc_metadata_batch_set_value(b->legacy_index()->named.grpc_message,
|
117
|
+
pct_encoded_msg);
|
116
118
|
}
|
117
119
|
}
|
118
120
|
return GRPC_ERROR_NONE;
|
@@ -159,18 +161,19 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
159
161
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
160
162
|
static const char* error_name = "Failed processing incoming headers";
|
161
163
|
|
162
|
-
if (b->
|
163
|
-
if (md_strict_equal(b->
|
164
|
+
if (b->legacy_index()->named.method != nullptr) {
|
165
|
+
if (md_strict_equal(b->legacy_index()->named.method->md,
|
166
|
+
GRPC_MDELEM_METHOD_POST)) {
|
164
167
|
*calld->recv_initial_metadata_flags &=
|
165
168
|
~(GRPC_INITIAL_METADATA_CACHEABLE_REQUEST |
|
166
169
|
GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST);
|
167
|
-
} else if (md_strict_equal(b->
|
170
|
+
} else if (md_strict_equal(b->legacy_index()->named.method->md,
|
168
171
|
GRPC_MDELEM_METHOD_PUT)) {
|
169
172
|
*calld->recv_initial_metadata_flags &=
|
170
173
|
~GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
|
171
174
|
*calld->recv_initial_metadata_flags |=
|
172
175
|
GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
|
173
|
-
} else if (md_strict_equal(b->
|
176
|
+
} else if (md_strict_equal(b->legacy_index()->named.method->md,
|
174
177
|
GRPC_MDELEM_METHOD_GET)) {
|
175
178
|
*calld->recv_initial_metadata_flags |=
|
176
179
|
GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
|
@@ -180,64 +183,63 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
180
183
|
hs_add_error(error_name, &error,
|
181
184
|
grpc_attach_md_to_error(
|
182
185
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
|
183
|
-
b->
|
186
|
+
b->legacy_index()->named.method->md));
|
184
187
|
}
|
185
|
-
|
188
|
+
b->Remove(GRPC_BATCH_METHOD);
|
186
189
|
} else {
|
187
|
-
hs_add_error(
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":method")));
|
190
|
+
hs_add_error(error_name, &error,
|
191
|
+
grpc_error_set_str(
|
192
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
|
193
|
+
GRPC_ERROR_STR_KEY, ":method"));
|
192
194
|
}
|
193
195
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
grpc_attach_md_to_error(
|
199
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
|
200
|
-
b->idx.named.te->md));
|
201
|
-
}
|
202
|
-
grpc_metadata_batch_remove(b, GRPC_BATCH_TE);
|
203
|
-
} else {
|
196
|
+
auto te = b->Take(grpc_core::TeMetadata());
|
197
|
+
if (te == grpc_core::TeMetadata::kTrailers) {
|
198
|
+
// Do nothing, ok.
|
199
|
+
} else if (!te.has_value()) {
|
204
200
|
hs_add_error(error_name, &error,
|
205
201
|
grpc_error_set_str(
|
206
202
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
|
207
|
-
GRPC_ERROR_STR_KEY,
|
203
|
+
GRPC_ERROR_STR_KEY, "te"));
|
204
|
+
} else {
|
205
|
+
hs_add_error(error_name, &error,
|
206
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad te header"));
|
208
207
|
}
|
209
208
|
|
210
|
-
if (b->
|
211
|
-
if (!md_strict_equal(b->
|
212
|
-
|
213
|
-
!
|
209
|
+
if (b->legacy_index()->named.scheme != nullptr) {
|
210
|
+
if (!md_strict_equal(b->legacy_index()->named.scheme->md,
|
211
|
+
GRPC_MDELEM_SCHEME_HTTP) &&
|
212
|
+
!md_strict_equal(b->legacy_index()->named.scheme->md,
|
213
|
+
GRPC_MDELEM_SCHEME_HTTPS) &&
|
214
|
+
!grpc_mdelem_static_value_eq(b->legacy_index()->named.scheme->md,
|
214
215
|
GRPC_MDELEM_SCHEME_GRPC)) {
|
215
216
|
hs_add_error(error_name, &error,
|
216
217
|
grpc_attach_md_to_error(
|
217
218
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
|
218
|
-
b->
|
219
|
+
b->legacy_index()->named.scheme->md));
|
219
220
|
}
|
220
|
-
|
221
|
+
b->Remove(GRPC_BATCH_SCHEME);
|
221
222
|
} else {
|
222
|
-
hs_add_error(
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":scheme")));
|
223
|
+
hs_add_error(error_name, &error,
|
224
|
+
grpc_error_set_str(
|
225
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
|
226
|
+
GRPC_ERROR_STR_KEY, ":scheme"));
|
227
227
|
}
|
228
228
|
|
229
|
-
if (b->
|
229
|
+
if (b->legacy_index()->named.content_type != nullptr) {
|
230
230
|
if (!grpc_mdelem_static_value_eq(
|
231
|
-
b->
|
231
|
+
b->legacy_index()->named.content_type->md,
|
232
232
|
GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC)) {
|
233
|
-
if (grpc_slice_buf_start_eq(
|
234
|
-
|
235
|
-
|
233
|
+
if (grpc_slice_buf_start_eq(
|
234
|
+
GRPC_MDVALUE(b->legacy_index()->named.content_type->md),
|
235
|
+
EXPECTED_CONTENT_TYPE, EXPECTED_CONTENT_TYPE_LENGTH) &&
|
236
236
|
(GRPC_SLICE_START_PTR(GRPC_MDVALUE(
|
237
|
-
b->
|
237
|
+
b->legacy_index()
|
238
|
+
->named.content_type->md))[EXPECTED_CONTENT_TYPE_LENGTH] ==
|
238
239
|
'+' ||
|
239
240
|
GRPC_SLICE_START_PTR(GRPC_MDVALUE(
|
240
|
-
b->
|
241
|
+
b->legacy_index()
|
242
|
+
->named.content_type->md))[EXPECTED_CONTENT_TYPE_LENGTH] ==
|
241
243
|
';')) {
|
242
244
|
/* Although the C implementation doesn't (currently) generate them,
|
243
245
|
any custom +-suffix is explicitly valid. */
|
@@ -247,27 +249,27 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
247
249
|
} else {
|
248
250
|
/* TODO(klempner): We're currently allowing this, but we shouldn't
|
249
251
|
see it without a proxy so log for now. */
|
250
|
-
char* val = grpc_dump_slice(
|
251
|
-
|
252
|
+
char* val = grpc_dump_slice(
|
253
|
+
GRPC_MDVALUE(b->legacy_index()->named.content_type->md),
|
254
|
+
GPR_DUMP_ASCII);
|
252
255
|
gpr_log(GPR_INFO, "Unexpected content-type '%s'", val);
|
253
256
|
gpr_free(val);
|
254
257
|
}
|
255
258
|
}
|
256
|
-
|
259
|
+
b->Remove(GRPC_BATCH_CONTENT_TYPE);
|
257
260
|
}
|
258
261
|
|
259
|
-
if (b->
|
260
|
-
hs_add_error(
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":path")));
|
262
|
+
if (b->legacy_index()->named.path == nullptr) {
|
263
|
+
hs_add_error(error_name, &error,
|
264
|
+
grpc_error_set_str(
|
265
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
|
266
|
+
GRPC_ERROR_STR_KEY, ":path"));
|
265
267
|
} else if (*calld->recv_initial_metadata_flags &
|
266
268
|
GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) {
|
267
269
|
/* We have a cacheable request made with GET verb. The path contains the
|
268
270
|
* query parameter which is base64 encoded request payload. */
|
269
271
|
const char k_query_separator = '?';
|
270
|
-
grpc_slice path_slice = GRPC_MDVALUE(b->
|
272
|
+
grpc_slice path_slice = GRPC_MDVALUE(b->legacy_index()->named.path->md);
|
271
273
|
uint8_t* path_ptr = GRPC_SLICE_START_PTR(path_slice);
|
272
274
|
size_t path_length = GRPC_SLICE_LENGTH(path_slice);
|
273
275
|
/* offset of the character '?' */
|
@@ -283,8 +285,8 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
283
285
|
grpc_mdelem mdelem_path_without_query = grpc_mdelem_from_slices(
|
284
286
|
GRPC_MDSTR_PATH, grpc_slice_sub(path_slice, 0, offset));
|
285
287
|
|
286
|
-
|
287
|
-
|
288
|
+
(void)b->Substitute(b->legacy_index()->named.path,
|
289
|
+
mdelem_path_without_query);
|
288
290
|
|
289
291
|
/* decode payload from query and add to the slice buffer to be returned */
|
290
292
|
const int k_url_safe = 1;
|
@@ -304,10 +306,11 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
304
306
|
}
|
305
307
|
}
|
306
308
|
|
307
|
-
if (b->
|
308
|
-
|
309
|
+
if (b->legacy_index()->named.host != nullptr &&
|
310
|
+
b->legacy_index()->named.authority == nullptr) {
|
311
|
+
grpc_linked_mdelem* el = b->legacy_index()->named.host;
|
309
312
|
grpc_mdelem md = GRPC_MDELEM_REF(el->md);
|
310
|
-
|
313
|
+
b->Remove(el);
|
311
314
|
hs_add_error(
|
312
315
|
error_name, &error,
|
313
316
|
grpc_metadata_batch_add_head(
|
@@ -318,17 +321,17 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
318
321
|
GRPC_MDELEM_UNREF(md);
|
319
322
|
}
|
320
323
|
|
321
|
-
if (b->
|
322
|
-
hs_add_error(
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":authority")));
|
324
|
+
if (b->legacy_index()->named.authority == nullptr) {
|
325
|
+
hs_add_error(error_name, &error,
|
326
|
+
grpc_error_set_str(
|
327
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
|
328
|
+
GRPC_ERROR_STR_KEY, ":authority"));
|
327
329
|
}
|
328
330
|
|
329
331
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
330
|
-
if (!chand->surface_user_agent &&
|
331
|
-
|
332
|
+
if (!chand->surface_user_agent &&
|
333
|
+
b->legacy_index()->named.user_agent != nullptr) {
|
334
|
+
b->Remove(GRPC_BATCH_USER_AGENT);
|
332
335
|
}
|
333
336
|
|
334
337
|
return error;
|
@@ -359,7 +362,7 @@ static void hs_recv_initial_metadata_ready(void* user_data,
|
|
359
362
|
"resuming recv_message_ready from recv_initial_metadata_ready");
|
360
363
|
}
|
361
364
|
} else {
|
362
|
-
GRPC_ERROR_REF(err);
|
365
|
+
(void)GRPC_ERROR_REF(err);
|
363
366
|
}
|
364
367
|
if (calld->seen_recv_trailing_metadata_ready) {
|
365
368
|
GRPC_CALL_COMBINER_START(calld->call_combiner,
|
@@ -25,8 +25,8 @@
|
|
25
25
|
|
26
26
|
#include "src/core/lib/channel/channel_args.h"
|
27
27
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
28
|
+
#include "src/core/lib/config/core_configuration.h"
|
28
29
|
#include "src/core/lib/iomgr/timer.h"
|
29
|
-
#include "src/core/lib/surface/channel_init.h"
|
30
30
|
#include "src/core/lib/transport/http2_errors.h"
|
31
31
|
|
32
32
|
/* If these settings change, make sure that we are not sending a GOAWAY for
|
@@ -534,29 +534,27 @@ const grpc_channel_filter grpc_max_age_filter = {
|
|
534
534
|
grpc_channel_next_get_info,
|
535
535
|
"max_age"};
|
536
536
|
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
maybe_add_max_age_filter, nullptr);
|
537
|
+
namespace grpc_core {
|
538
|
+
void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder) {
|
539
|
+
builder->channel_init()->RegisterStage(
|
540
|
+
GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
541
|
+
[](grpc_channel_stack_builder* builder) {
|
542
|
+
const grpc_channel_args* channel_args =
|
543
|
+
grpc_channel_stack_builder_get_channel_arguments(builder);
|
544
|
+
bool enable = grpc_channel_arg_get_integer(
|
545
|
+
grpc_channel_args_find(
|
546
|
+
channel_args, GRPC_ARG_MAX_CONNECTION_AGE_MS),
|
547
|
+
MAX_CONNECTION_AGE_INTEGER_OPTIONS) != INT_MAX ||
|
548
|
+
grpc_channel_arg_get_integer(
|
549
|
+
grpc_channel_args_find(
|
550
|
+
channel_args, GRPC_ARG_MAX_CONNECTION_IDLE_MS),
|
551
|
+
MAX_CONNECTION_IDLE_INTEGER_OPTIONS) != INT_MAX;
|
552
|
+
if (enable) {
|
553
|
+
return grpc_channel_stack_builder_prepend_filter(
|
554
|
+
builder, &grpc_max_age_filter, nullptr, nullptr);
|
555
|
+
} else {
|
556
|
+
return true;
|
557
|
+
}
|
558
|
+
});
|
560
559
|
}
|
561
|
-
|
562
|
-
void grpc_max_age_filter_shutdown(void) {}
|
560
|
+
} // namespace grpc_core
|
@@ -27,15 +27,14 @@
|
|
27
27
|
#include <grpc/support/alloc.h>
|
28
28
|
#include <grpc/support/log.h>
|
29
29
|
|
30
|
-
#include "src/core/ext/
|
31
|
-
#include "src/core/ext/filters/client_channel/service_config_call_data.h"
|
30
|
+
#include "src/core/ext/service_config/service_config_call_data.h"
|
32
31
|
#include "src/core/lib/channel/channel_args.h"
|
33
32
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
33
|
+
#include "src/core/lib/config/core_configuration.h"
|
34
34
|
#include "src/core/lib/gpr/string.h"
|
35
35
|
#include "src/core/lib/gprpp/ref_counted.h"
|
36
36
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
37
37
|
#include "src/core/lib/surface/call.h"
|
38
|
-
#include "src/core/lib/surface/channel_init.h"
|
39
38
|
|
40
39
|
static void recv_message_ready(void* user_data, grpc_error_handle error);
|
41
40
|
static void recv_trailing_metadata_ready(void* user_data,
|
@@ -211,7 +210,7 @@ static void recv_message_ready(void* user_data, grpc_error_handle error) {
|
|
211
210
|
GRPC_ERROR_UNREF(calld->error);
|
212
211
|
calld->error = GRPC_ERROR_REF(error);
|
213
212
|
} else {
|
214
|
-
GRPC_ERROR_REF(error);
|
213
|
+
(void)GRPC_ERROR_REF(error);
|
215
214
|
}
|
216
215
|
// Invoke the next callback.
|
217
216
|
grpc_closure* closure = calld->next_recv_message_ready;
|
@@ -344,7 +343,7 @@ const grpc_channel_filter grpc_message_size_filter = {
|
|
344
343
|
|
345
344
|
// Used for GRPC_CLIENT_SUBCHANNEL
|
346
345
|
static bool maybe_add_message_size_filter_subchannel(
|
347
|
-
grpc_channel_stack_builder* builder
|
346
|
+
grpc_channel_stack_builder* builder) {
|
348
347
|
const grpc_channel_args* channel_args =
|
349
348
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
350
349
|
if (grpc_channel_args_want_minimal_stack(channel_args)) {
|
@@ -356,8 +355,7 @@ static bool maybe_add_message_size_filter_subchannel(
|
|
356
355
|
|
357
356
|
// Used for GRPC_CLIENT_DIRECT_CHANNEL and GRPC_SERVER_CHANNEL. Adds the filter
|
358
357
|
// only if message size limits or service config is specified.
|
359
|
-
static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder
|
360
|
-
void* /*arg*/) {
|
358
|
+
static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder) {
|
361
359
|
const grpc_channel_args* channel_args =
|
362
360
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
363
361
|
if (grpc_channel_args_want_minimal_stack(channel_args)) {
|
@@ -384,16 +382,21 @@ static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder,
|
|
384
382
|
}
|
385
383
|
|
386
384
|
void grpc_message_size_filter_init(void) {
|
387
|
-
grpc_channel_init_register_stage(
|
388
|
-
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
389
|
-
maybe_add_message_size_filter_subchannel, nullptr);
|
390
|
-
grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL,
|
391
|
-
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
392
|
-
maybe_add_message_size_filter, nullptr);
|
393
|
-
grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
|
394
|
-
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
395
|
-
maybe_add_message_size_filter, nullptr);
|
396
385
|
grpc_core::MessageSizeParser::Register();
|
397
386
|
}
|
398
387
|
|
399
388
|
void grpc_message_size_filter_shutdown(void) {}
|
389
|
+
|
390
|
+
namespace grpc_core {
|
391
|
+
void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder) {
|
392
|
+
builder->channel_init()->RegisterStage(
|
393
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
394
|
+
maybe_add_message_size_filter_subchannel);
|
395
|
+
builder->channel_init()->RegisterStage(GRPC_CLIENT_DIRECT_CHANNEL,
|
396
|
+
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
397
|
+
maybe_add_message_size_filter);
|
398
|
+
builder->channel_init()->RegisterStage(GRPC_SERVER_CHANNEL,
|
399
|
+
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
400
|
+
maybe_add_message_size_filter);
|
401
|
+
}
|
402
|
+
} // namespace grpc_core
|
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
-
#include "src/core/ext/
|
22
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
23
23
|
#include "src/core/lib/channel/channel_stack.h"
|
24
24
|
|
25
25
|
extern const grpc_channel_filter grpc_message_size_filter;
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
|
-
#include "src/core/ext/
|
19
|
+
#include "src/core/ext/service_config/service_config.h"
|
20
20
|
|
21
21
|
#include <string>
|
22
22
|
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
#include <grpc/support/log.h>
|
26
26
|
|
27
|
-
#include "src/core/ext/
|
27
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
28
28
|
#include "src/core/lib/json/json.h"
|
29
29
|
#include "src/core/lib/slice/slice_internal.h"
|
30
30
|
|
@@ -14,8 +14,8 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
-
#ifndef
|
18
|
-
#define
|
17
|
+
#ifndef GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_H
|
18
|
+
#define GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_H
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
#include <grpc/impl/codegen/grpc_types.h>
|
27
27
|
#include <grpc/support/string_util.h>
|
28
28
|
|
29
|
-
#include "src/core/ext/
|
29
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
30
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
31
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
32
32
|
#include "src/core/lib/iomgr/error.h"
|
@@ -124,4 +124,4 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
124
124
|
|
125
125
|
} // namespace grpc_core
|
126
126
|
|
127
|
-
#endif /*
|
127
|
+
#endif /* GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_H */
|
@@ -0,0 +1,72 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2016 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H
|
18
|
+
#define GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <map>
|
23
|
+
|
24
|
+
#include "absl/strings/string_view.h"
|
25
|
+
|
26
|
+
#include "src/core/ext/service_config/service_config.h"
|
27
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
28
|
+
#include "src/core/lib/channel/context.h"
|
29
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
|
+
|
31
|
+
namespace grpc_core {
|
32
|
+
|
33
|
+
/// Stores the service config data associated with an individual call.
|
34
|
+
/// A pointer to this object is stored in the call_context
|
35
|
+
/// GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA element, so that filters can
|
36
|
+
/// easily access method and global parameters for the call.
|
37
|
+
class ServiceConfigCallData {
|
38
|
+
public:
|
39
|
+
using CallAttributes = std::map<const char*, absl::string_view>;
|
40
|
+
|
41
|
+
ServiceConfigCallData() : method_configs_(nullptr) {}
|
42
|
+
|
43
|
+
ServiceConfigCallData(
|
44
|
+
RefCountedPtr<ServiceConfig> service_config,
|
45
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs,
|
46
|
+
CallAttributes call_attributes)
|
47
|
+
: service_config_(std::move(service_config)),
|
48
|
+
method_configs_(method_configs),
|
49
|
+
call_attributes_(std::move(call_attributes)) {}
|
50
|
+
|
51
|
+
ServiceConfig* service_config() { return service_config_.get(); }
|
52
|
+
|
53
|
+
ServiceConfigParser::ParsedConfig* GetMethodParsedConfig(size_t index) const {
|
54
|
+
return method_configs_ != nullptr ? (*method_configs_)[index].get()
|
55
|
+
: nullptr;
|
56
|
+
}
|
57
|
+
|
58
|
+
ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(size_t index) const {
|
59
|
+
return service_config_->GetGlobalParsedConfig(index);
|
60
|
+
}
|
61
|
+
|
62
|
+
const CallAttributes& call_attributes() const { return call_attributes_; }
|
63
|
+
|
64
|
+
private:
|
65
|
+
RefCountedPtr<ServiceConfig> service_config_;
|
66
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs_;
|
67
|
+
CallAttributes call_attributes_;
|
68
|
+
};
|
69
|
+
|
70
|
+
} // namespace grpc_core
|
71
|
+
|
72
|
+
#endif /* GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H */
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
|
-
#include "src/core/ext/
|
19
|
+
#include "src/core/ext/service_config/service_config_parser.h"
|
20
20
|
|
21
21
|
#include <grpc/support/log.h>
|
22
22
|
|
@@ -29,12 +29,12 @@ typedef absl::InlinedVector<std::unique_ptr<ServiceConfigParser::Parser>,
|
|
29
29
|
ServiceConfigParserList* g_registered_parsers;
|
30
30
|
} // namespace
|
31
31
|
|
32
|
-
void
|
32
|
+
void ServiceConfigParserInit() {
|
33
33
|
GPR_ASSERT(g_registered_parsers == nullptr);
|
34
34
|
g_registered_parsers = new ServiceConfigParserList();
|
35
35
|
}
|
36
36
|
|
37
|
-
void
|
37
|
+
void ServiceConfigParserShutdown() {
|
38
38
|
delete g_registered_parsers;
|
39
39
|
g_registered_parsers = nullptr;
|
40
40
|
}
|
@@ -14,8 +14,8 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
-
#ifndef
|
18
|
-
#define
|
17
|
+
#ifndef GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_PARSER_H
|
18
|
+
#define GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_PARSER_H
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
@@ -30,6 +30,11 @@
|
|
30
30
|
|
31
31
|
namespace grpc_core {
|
32
32
|
|
33
|
+
// Initialization functions for ServiceConfigParser. ServiceConfigParser should
|
34
|
+
// be initialized before any parser implementation is registered.
|
35
|
+
void ServiceConfigParserInit();
|
36
|
+
void ServiceConfigParserShutdown();
|
37
|
+
|
33
38
|
// Service config parser registry.
|
34
39
|
// See service_config.h for more information.
|
35
40
|
class ServiceConfigParser {
|
@@ -70,9 +75,6 @@ class ServiceConfigParser {
|
|
70
75
|
kNumPreallocatedParsers>
|
71
76
|
ParsedConfigVector;
|
72
77
|
|
73
|
-
static void Init();
|
74
|
-
static void Shutdown();
|
75
|
-
|
76
78
|
/// Globally register a service config parser. On successful registration, it
|
77
79
|
/// returns the index at which the parser was registered. On failure, -1 is
|
78
80
|
/// returned. Each new service config update will go through all the
|
@@ -92,4 +94,4 @@ class ServiceConfigParser {
|
|
92
94
|
|
93
95
|
} // namespace grpc_core
|
94
96
|
|
95
|
-
#endif /*
|
97
|
+
#endif /* GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_PARSER_H */
|
@@ -28,7 +28,6 @@
|
|
28
28
|
#include <grpc/support/string_util.h>
|
29
29
|
|
30
30
|
#include "src/core/ext/filters/client_channel/connector.h"
|
31
|
-
#include "src/core/ext/filters/client_channel/subchannel.h"
|
32
31
|
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
|
33
32
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
34
33
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -54,8 +53,6 @@ Chttp2Connector::~Chttp2Connector() {
|
|
54
53
|
|
55
54
|
void Chttp2Connector::Connect(const Args& args, Result* result,
|
56
55
|
grpc_closure* notify) {
|
57
|
-
grpc_resolved_address addr;
|
58
|
-
Subchannel::GetAddressFromSubchannelAddressArg(args.channel_args, &addr);
|
59
56
|
grpc_endpoint** ep;
|
60
57
|
{
|
61
58
|
MutexLock lock(&mu_);
|
@@ -83,9 +80,9 @@ void Chttp2Connector::Connect(const Args& args, Result* result,
|
|
83
80
|
grpc_tcp_client_connect(
|
84
81
|
&connected_, ep,
|
85
82
|
grpc_slice_allocator_create(resource_quota_,
|
86
|
-
grpc_sockaddr_to_string(
|
83
|
+
grpc_sockaddr_to_string(args.address, false),
|
87
84
|
args.channel_args),
|
88
|
-
args.interested_parties, args.channel_args,
|
85
|
+
args.interested_parties, args.channel_args, args.address, args.deadline);
|
89
86
|
}
|
90
87
|
|
91
88
|
void Chttp2Connector::Shutdown(grpc_error_handle error) {
|