grpc 1.41.0 → 1.42.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +77 -64
- 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
@@ -82,21 +82,12 @@ void grpc_channel_update_call_size_estimate(grpc_channel* channel, size_t size);
|
|
82
82
|
namespace grpc_core {
|
83
83
|
|
84
84
|
struct RegisteredCall {
|
85
|
-
// The method and host are kept as part of this struct just to manage their
|
86
|
-
// lifetime since they must outlive the mdelem contents.
|
87
|
-
std::string method;
|
88
|
-
std::string host;
|
89
|
-
|
90
85
|
grpc_mdelem path;
|
91
86
|
grpc_mdelem authority;
|
92
87
|
|
93
88
|
explicit RegisteredCall(const char* method_arg, const char* host_arg);
|
94
|
-
// TODO(vjpai): delete copy constructor once all supported compilers allow
|
95
|
-
// std::map value_type to be MoveConstructible.
|
96
89
|
RegisteredCall(const RegisteredCall& other);
|
97
|
-
RegisteredCall(RegisteredCall&& other) noexcept;
|
98
90
|
RegisteredCall& operator=(const RegisteredCall&) = delete;
|
99
|
-
RegisteredCall& operator=(RegisteredCall&&) = delete;
|
100
91
|
|
101
92
|
~RegisteredCall();
|
102
93
|
};
|
@@ -20,90 +20,37 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/surface/channel_init.h"
|
22
22
|
|
23
|
-
#include <
|
23
|
+
#include <algorithm>
|
24
24
|
|
25
|
-
|
26
|
-
grpc_channel_init_stage fn;
|
27
|
-
void* arg;
|
28
|
-
int priority;
|
29
|
-
size_t insertion_order;
|
30
|
-
} stage_slot;
|
25
|
+
namespace grpc_core {
|
31
26
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
size_t cap_slots;
|
36
|
-
} stage_slots;
|
37
|
-
|
38
|
-
static stage_slots g_slots[GRPC_NUM_CHANNEL_STACK_TYPES];
|
39
|
-
static bool g_finalized;
|
40
|
-
|
41
|
-
void grpc_channel_init_init(void) {
|
42
|
-
for (int i = 0; i < GRPC_NUM_CHANNEL_STACK_TYPES; i++) {
|
43
|
-
g_slots[i].slots = nullptr;
|
44
|
-
g_slots[i].num_slots = 0;
|
45
|
-
g_slots[i].cap_slots = 0;
|
46
|
-
}
|
47
|
-
g_finalized = false;
|
48
|
-
}
|
49
|
-
|
50
|
-
void grpc_channel_init_register_stage(grpc_channel_stack_type type,
|
51
|
-
int priority,
|
52
|
-
grpc_channel_init_stage stage,
|
53
|
-
void* stage_arg) {
|
54
|
-
GPR_ASSERT(!g_finalized);
|
55
|
-
if (g_slots[type].cap_slots == g_slots[type].num_slots) {
|
56
|
-
g_slots[type].cap_slots = GPR_MAX(8, 3 * g_slots[type].cap_slots / 2);
|
57
|
-
g_slots[type].slots = static_cast<stage_slot*>(
|
58
|
-
gpr_realloc(g_slots[type].slots,
|
59
|
-
g_slots[type].cap_slots * sizeof(*g_slots[type].slots)));
|
60
|
-
}
|
61
|
-
stage_slot* s = &g_slots[type].slots[g_slots[type].num_slots++];
|
62
|
-
s->insertion_order = g_slots[type].num_slots;
|
63
|
-
s->priority = priority;
|
64
|
-
s->fn = stage;
|
65
|
-
s->arg = stage_arg;
|
66
|
-
}
|
67
|
-
|
68
|
-
static int compare_slots(const void* a, const void* b) {
|
69
|
-
const stage_slot* sa = static_cast<const stage_slot*>(a);
|
70
|
-
const stage_slot* sb = static_cast<const stage_slot*>(b);
|
71
|
-
|
72
|
-
int c = GPR_ICMP(sa->priority, sb->priority);
|
73
|
-
if (c != 0) return c;
|
74
|
-
return GPR_ICMP(sa->insertion_order, sb->insertion_order);
|
27
|
+
void ChannelInit::Builder::RegisterStage(grpc_channel_stack_type type,
|
28
|
+
int priority, Stage stage) {
|
29
|
+
slots_[type].emplace_back(std::move(stage), priority);
|
75
30
|
}
|
76
31
|
|
77
|
-
|
78
|
-
|
32
|
+
ChannelInit ChannelInit::Builder::Build() {
|
33
|
+
ChannelInit result;
|
79
34
|
for (int i = 0; i < GRPC_NUM_CHANNEL_STACK_TYPES; i++) {
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
g_slots[i].slots =
|
90
|
-
static_cast<stage_slot*>(reinterpret_cast<void*>(0xdeadbeef));
|
35
|
+
auto& slots = slots_[i];
|
36
|
+
std::stable_sort(
|
37
|
+
slots.begin(), slots.end(),
|
38
|
+
[](const Slot& a, const Slot& b) { return a.priority < b.priority; });
|
39
|
+
auto& result_slots = result.slots_[i];
|
40
|
+
result_slots.reserve(slots.size());
|
41
|
+
for (auto& slot : slots) {
|
42
|
+
result_slots.emplace_back(std::move(slot.stage));
|
43
|
+
}
|
91
44
|
}
|
45
|
+
return result;
|
92
46
|
}
|
93
47
|
|
94
|
-
bool
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
grpc_channel_stack_builder_set_name(builder,
|
99
|
-
grpc_channel_stack_type_string(type));
|
100
|
-
|
101
|
-
for (size_t i = 0; i < g_slots[type].num_slots; i++) {
|
102
|
-
const stage_slot* slot = &g_slots[type].slots[i];
|
103
|
-
if (!slot->fn(builder, slot->arg)) {
|
104
|
-
return false;
|
105
|
-
}
|
48
|
+
bool ChannelInit::CreateStack(grpc_channel_stack_builder* builder,
|
49
|
+
grpc_channel_stack_type type) const {
|
50
|
+
for (const auto& stage : slots_[type]) {
|
51
|
+
if (!stage(builder)) return false;
|
106
52
|
}
|
107
|
-
|
108
53
|
return true;
|
109
54
|
}
|
55
|
+
|
56
|
+
} // namespace grpc_core
|
@@ -21,9 +21,10 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include
|
24
|
+
#include <functional>
|
25
|
+
#include <vector>
|
26
|
+
|
25
27
|
#include "src/core/lib/surface/channel_stack_type.h"
|
26
|
-
#include "src/core/lib/transport/transport.h"
|
27
28
|
|
28
29
|
#define GRPC_CHANNEL_INIT_BUILTIN_PRIORITY 10000
|
29
30
|
|
@@ -32,47 +33,54 @@
|
|
32
33
|
/// It also provides a universal entry path to run those mutators to build
|
33
34
|
/// a channel stack for various subsystems.
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
///
|
48
|
-
///
|
49
|
-
///
|
50
|
-
///
|
51
|
-
///
|
52
|
-
///
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
///
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
///
|
74
|
-
///
|
75
|
-
|
76
|
-
|
36
|
+
typedef struct grpc_channel_stack_builder grpc_channel_stack_builder;
|
37
|
+
|
38
|
+
namespace grpc_core {
|
39
|
+
|
40
|
+
class ChannelInit {
|
41
|
+
public:
|
42
|
+
/// One stage of mutation: call functions against \a builder to influence the
|
43
|
+
/// finally constructed channel stack
|
44
|
+
using Stage = std::function<bool(grpc_channel_stack_builder* builder)>;
|
45
|
+
|
46
|
+
class Builder {
|
47
|
+
public:
|
48
|
+
/// Register one stage of mutators.
|
49
|
+
/// Stages are run in priority order (lowest to highest), and then in
|
50
|
+
/// registration order (in the case of a tie).
|
51
|
+
/// Stages are registered against one of the pre-determined channel stack
|
52
|
+
/// types.
|
53
|
+
/// If the channel stack type is GRPC_CLIENT_SUBCHANNEL, the caller should
|
54
|
+
/// ensure that subchannels with different filter lists will always have
|
55
|
+
/// different channel args. This requires setting a channel arg in case the
|
56
|
+
/// registration function relies on some condition other than channel args
|
57
|
+
/// to decide whether to add a filter or not.
|
58
|
+
void RegisterStage(grpc_channel_stack_type type, int priority, Stage stage);
|
59
|
+
|
60
|
+
/// Finalize registration. No more calls to grpc_channel_init_register_stage
|
61
|
+
/// are allowed.
|
62
|
+
ChannelInit Build();
|
63
|
+
|
64
|
+
private:
|
65
|
+
struct Slot {
|
66
|
+
Slot(Stage stage, int priority)
|
67
|
+
: stage(std::move(stage)), priority(priority) {}
|
68
|
+
Stage stage;
|
69
|
+
int priority;
|
70
|
+
};
|
71
|
+
std::vector<Slot> slots_[GRPC_NUM_CHANNEL_STACK_TYPES];
|
72
|
+
};
|
73
|
+
|
74
|
+
/// Construct a channel stack of some sort: see channel_stack.h for details
|
75
|
+
/// \a type is the type of channel stack to create
|
76
|
+
/// \a builder is the channel stack builder to build into.
|
77
|
+
bool CreateStack(grpc_channel_stack_builder* builder,
|
78
|
+
grpc_channel_stack_type type) const;
|
79
|
+
|
80
|
+
private:
|
81
|
+
std::vector<Stage> slots_[GRPC_NUM_CHANNEL_STACK_TYPES];
|
82
|
+
};
|
83
|
+
|
84
|
+
} // namespace grpc_core
|
77
85
|
|
78
86
|
#endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_INIT_H */
|
@@ -628,8 +628,8 @@ static void cq_check_tag(grpc_completion_queue* cq, void* tag, bool lock_cq) {
|
|
628
628
|
for (int i = 0; i < static_cast<int>(cq->outstanding_tag_count); i++) {
|
629
629
|
if (cq->outstanding_tags[i] == tag) {
|
630
630
|
cq->outstanding_tag_count--;
|
631
|
-
|
632
|
-
|
631
|
+
std::swap(cq->outstanding_tags[i],
|
632
|
+
cq->outstanding_tags[cq->outstanding_tag_count]);
|
633
633
|
found = 1;
|
634
634
|
break;
|
635
635
|
}
|
@@ -665,7 +665,8 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
|
|
665
665
|
#ifndef NDEBUG
|
666
666
|
gpr_mu_lock(cq->mu);
|
667
667
|
if (cq->outstanding_tag_count == cq->outstanding_tag_capacity) {
|
668
|
-
cq->outstanding_tag_capacity =
|
668
|
+
cq->outstanding_tag_capacity =
|
669
|
+
std::max(size_t(4), 2 * cq->outstanding_tag_capacity);
|
669
670
|
cq->outstanding_tags = static_cast<void**>(gpr_realloc(
|
670
671
|
cq->outstanding_tags,
|
671
672
|
sizeof(*cq->outstanding_tags) * cq->outstanding_tag_capacity));
|
@@ -1066,7 +1067,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
|
|
1066
1067
|
if (cqd->queue.num_items() > 0 &&
|
1067
1068
|
cqd->pending_events.load(std::memory_order_acquire) > 0) {
|
1068
1069
|
gpr_mu_lock(cq->mu);
|
1069
|
-
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
|
1070
|
+
(void)cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
|
1070
1071
|
gpr_mu_unlock(cq->mu);
|
1071
1072
|
}
|
1072
1073
|
|
@@ -1143,7 +1144,7 @@ static void del_plucker(grpc_completion_queue* cq, void* tag,
|
|
1143
1144
|
for (int i = 0; i < cqd->num_pluckers; i++) {
|
1144
1145
|
if (cqd->pluckers[i].tag == tag && cqd->pluckers[i].worker == worker) {
|
1145
1146
|
cqd->num_pluckers--;
|
1146
|
-
|
1147
|
+
std::swap(cqd->pluckers[i], cqd->pluckers[cqd->num_pluckers]);
|
1147
1148
|
return;
|
1148
1149
|
}
|
1149
1150
|
}
|
@@ -48,7 +48,6 @@
|
|
48
48
|
#include "src/core/lib/slice/slice_internal.h"
|
49
49
|
#include "src/core/lib/surface/api_trace.h"
|
50
50
|
#include "src/core/lib/surface/call.h"
|
51
|
-
#include "src/core/lib/surface/channel_init.h"
|
52
51
|
#include "src/core/lib/surface/completion_queue.h"
|
53
52
|
#include "src/core/lib/surface/lame_client.h"
|
54
53
|
#include "src/core/lib/surface/server.h"
|
@@ -77,34 +76,6 @@ static void do_basic_init(void) {
|
|
77
76
|
gpr_time_init();
|
78
77
|
}
|
79
78
|
|
80
|
-
static bool append_filter(grpc_channel_stack_builder* builder, void* arg) {
|
81
|
-
return grpc_channel_stack_builder_append_filter(
|
82
|
-
builder, static_cast<const grpc_channel_filter*>(arg), nullptr, nullptr);
|
83
|
-
}
|
84
|
-
|
85
|
-
static bool prepend_filter(grpc_channel_stack_builder* builder, void* arg) {
|
86
|
-
return grpc_channel_stack_builder_prepend_filter(
|
87
|
-
builder, static_cast<const grpc_channel_filter*>(arg), nullptr, nullptr);
|
88
|
-
}
|
89
|
-
|
90
|
-
static void register_builtin_channel_init() {
|
91
|
-
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
92
|
-
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
93
|
-
grpc_add_connected_filter, nullptr);
|
94
|
-
grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL,
|
95
|
-
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
96
|
-
grpc_add_connected_filter, nullptr);
|
97
|
-
grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
|
98
|
-
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
99
|
-
grpc_add_connected_filter, nullptr);
|
100
|
-
grpc_channel_init_register_stage(
|
101
|
-
GRPC_CLIENT_LAME_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
102
|
-
append_filter, const_cast<grpc_channel_filter*>(&grpc_lame_filter));
|
103
|
-
grpc_channel_init_register_stage(
|
104
|
-
GRPC_SERVER_CHANNEL, INT_MAX, prepend_filter,
|
105
|
-
const_cast<grpc_channel_filter*>(&grpc_core::Server::kServerTopFilter));
|
106
|
-
}
|
107
|
-
|
108
79
|
typedef struct grpc_plugin {
|
109
80
|
void (*init)();
|
110
81
|
void (*destroy)();
|
@@ -134,10 +105,8 @@ void grpc_init(void) {
|
|
134
105
|
grpc_core::Fork::GlobalInit();
|
135
106
|
grpc_fork_handlers_auto_register();
|
136
107
|
grpc_stats_init();
|
137
|
-
grpc_init_static_metadata_ctx();
|
138
108
|
grpc_slice_intern_init();
|
139
109
|
grpc_mdctx_global_init();
|
140
|
-
grpc_channel_init_init();
|
141
110
|
grpc_core::channelz::ChannelzRegistry::Init();
|
142
111
|
grpc_security_pre_init();
|
143
112
|
grpc_core::ApplicationCallbackExecCtx::GlobalInit();
|
@@ -149,13 +118,7 @@ void grpc_init(void) {
|
|
149
118
|
g_all_of_the_plugins[i].init();
|
150
119
|
}
|
151
120
|
}
|
152
|
-
/* register channel finalization AFTER all plugins, to ensure that it's run
|
153
|
-
* at the appropriate time */
|
154
|
-
grpc_register_security_filters();
|
155
|
-
register_builtin_channel_init();
|
156
121
|
grpc_tracer_init();
|
157
|
-
/* no more changes to channel init pipelines */
|
158
|
-
grpc_channel_init_finalize();
|
159
122
|
grpc_iomgr_start();
|
160
123
|
}
|
161
124
|
|
@@ -189,8 +152,6 @@ void grpc_shutdown_internal_locked(void)
|
|
189
152
|
grpc_core::ApplicationCallbackExecCtx::GlobalShutdown();
|
190
153
|
g_shutting_down = false;
|
191
154
|
g_shutting_down_cv->SignalAll();
|
192
|
-
// Absolute last action will be to delete static metadata context.
|
193
|
-
grpc_destroy_static_metadata_ctx();
|
194
155
|
}
|
195
156
|
|
196
157
|
void grpc_shutdown_internal(void* /*ignored*/) {
|
@@ -21,6 +21,8 @@
|
|
21
21
|
#include <limits.h>
|
22
22
|
#include <string.h>
|
23
23
|
|
24
|
+
#include "src/core/lib/channel/channel_stack_builder.h"
|
25
|
+
#include "src/core/lib/config/core_configuration.h"
|
24
26
|
#include "src/core/lib/debug/trace.h"
|
25
27
|
#include "src/core/lib/security/authorization/sdk_server_authz_filter.h"
|
26
28
|
#include "src/core/lib/security/context/security_context.h"
|
@@ -30,14 +32,13 @@
|
|
30
32
|
#include "src/core/lib/security/transport/auth_filters.h"
|
31
33
|
#include "src/core/lib/security/transport/secure_endpoint.h"
|
32
34
|
#include "src/core/lib/security/transport/security_handshaker.h"
|
33
|
-
#include "src/core/lib/surface/channel_init.h"
|
34
35
|
#include "src/core/lib/surface/init.h"
|
35
36
|
#include "src/core/tsi/transport_security_interface.h"
|
36
37
|
|
37
38
|
void grpc_security_pre_init(void) {}
|
38
39
|
|
39
40
|
static bool maybe_prepend_client_auth_filter(
|
40
|
-
grpc_channel_stack_builder* builder
|
41
|
+
grpc_channel_stack_builder* builder) {
|
41
42
|
const grpc_channel_args* args =
|
42
43
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
43
44
|
if (args) {
|
@@ -52,7 +53,7 @@ static bool maybe_prepend_client_auth_filter(
|
|
52
53
|
}
|
53
54
|
|
54
55
|
static bool maybe_prepend_server_auth_filter(
|
55
|
-
grpc_channel_stack_builder* builder
|
56
|
+
grpc_channel_stack_builder* builder) {
|
56
57
|
const grpc_channel_args* args =
|
57
58
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
58
59
|
if (args) {
|
@@ -67,7 +68,7 @@ static bool maybe_prepend_server_auth_filter(
|
|
67
68
|
}
|
68
69
|
|
69
70
|
static bool maybe_prepend_sdk_server_authz_filter(
|
70
|
-
grpc_channel_stack_builder* builder
|
71
|
+
grpc_channel_stack_builder* builder) {
|
71
72
|
const grpc_channel_args* args =
|
72
73
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
73
74
|
const auto* provider =
|
@@ -81,20 +82,22 @@ static bool maybe_prepend_sdk_server_authz_filter(
|
|
81
82
|
return true;
|
82
83
|
}
|
83
84
|
|
84
|
-
|
85
|
+
namespace grpc_core {
|
86
|
+
void RegisterSecurityFilters(CoreConfiguration::Builder* builder) {
|
85
87
|
// Register the auth client with a priority < INT_MAX to allow the authority
|
86
88
|
// filter -on which the auth filter depends- to be higher on the channel
|
87
89
|
// stack.
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
builder->channel_init()->RegisterStage(GRPC_CLIENT_SUBCHANNEL, INT_MAX - 1,
|
91
|
+
maybe_prepend_client_auth_filter);
|
92
|
+
builder->channel_init()->RegisterStage(GRPC_CLIENT_DIRECT_CHANNEL,
|
93
|
+
INT_MAX - 1,
|
94
|
+
maybe_prepend_client_auth_filter);
|
95
|
+
builder->channel_init()->RegisterStage(GRPC_SERVER_CHANNEL, INT_MAX - 1,
|
96
|
+
maybe_prepend_server_auth_filter);
|
94
97
|
// Register the SdkServerAuthzFilter with a priority less than
|
95
98
|
// server_auth_filter to allow server_auth_filter on which the sdk filter
|
96
99
|
// depends on to be higher on the channel stack.
|
97
|
-
|
98
|
-
|
99
|
-
nullptr);
|
100
|
+
builder->channel_init()->RegisterStage(GRPC_SERVER_CHANNEL, INT_MAX - 2,
|
101
|
+
maybe_prepend_sdk_server_authz_filter);
|
100
102
|
}
|
103
|
+
} // namespace grpc_core
|
@@ -45,9 +45,9 @@ namespace {
|
|
45
45
|
struct ChannelData {
|
46
46
|
explicit ChannelData(grpc_channel_element_args* args)
|
47
47
|
: state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) {
|
48
|
-
grpc_error_handle err = grpc_channel_args_find_pointer<
|
48
|
+
grpc_error_handle* err = grpc_channel_args_find_pointer<grpc_error_handle>(
|
49
49
|
args->channel_args, GRPC_ARG_LAME_FILTER_ERROR);
|
50
|
-
if (err != nullptr) error = GRPC_ERROR_REF(err);
|
50
|
+
if (err != nullptr) error = GRPC_ERROR_REF(*err);
|
51
51
|
}
|
52
52
|
|
53
53
|
~ChannelData() { GRPC_ERROR_UNREF(error); }
|
@@ -125,20 +125,28 @@ static void lame_destroy_channel_elem(grpc_channel_element* elem) {
|
|
125
125
|
|
126
126
|
// Channel arg vtable for a grpc_error_handle.
|
127
127
|
void* ErrorCopy(void* p) {
|
128
|
-
grpc_error_handle
|
129
|
-
|
128
|
+
grpc_error_handle* new_error = nullptr;
|
129
|
+
if (p != nullptr) {
|
130
|
+
grpc_error_handle* error = static_cast<grpc_error_handle*>(p);
|
131
|
+
new_error = new grpc_error_handle();
|
132
|
+
*new_error = GRPC_ERROR_REF(*error);
|
133
|
+
}
|
134
|
+
return new_error;
|
130
135
|
}
|
131
136
|
void ErrorDestroy(void* p) {
|
132
|
-
|
133
|
-
|
137
|
+
if (p != nullptr) {
|
138
|
+
grpc_error_handle* error = static_cast<grpc_error_handle*>(p);
|
139
|
+
GRPC_ERROR_UNREF(*error);
|
140
|
+
delete error;
|
141
|
+
}
|
134
142
|
}
|
135
|
-
int ErrorCompare(void* p, void* q) { return
|
143
|
+
int ErrorCompare(void* p, void* q) { return grpc_core::QsortCompare(p, q); }
|
136
144
|
const grpc_arg_pointer_vtable kLameFilterErrorArgVtable = {
|
137
145
|
ErrorCopy, ErrorDestroy, ErrorCompare};
|
138
146
|
|
139
147
|
} // namespace
|
140
148
|
|
141
|
-
grpc_arg MakeLameClientErrorArg(grpc_error_handle error) {
|
149
|
+
grpc_arg MakeLameClientErrorArg(grpc_error_handle* error) {
|
142
150
|
return grpc_channel_arg_pointer_create(
|
143
151
|
const_cast<char*>(GRPC_ARG_LAME_FILTER_ERROR), error,
|
144
152
|
&kLameFilterErrorArgVtable);
|
@@ -174,9 +182,8 @@ grpc_channel* grpc_lame_client_channel_create(const char* target,
|
|
174
182
|
grpc_error_set_int(
|
175
183
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"),
|
176
184
|
GRPC_ERROR_INT_GRPC_STATUS, error_code),
|
177
|
-
GRPC_ERROR_STR_GRPC_MESSAGE,
|
178
|
-
|
179
|
-
grpc_arg error_arg = grpc_core::MakeLameClientErrorArg(error);
|
185
|
+
GRPC_ERROR_STR_GRPC_MESSAGE, error_message);
|
186
|
+
grpc_arg error_arg = grpc_core::MakeLameClientErrorArg(&error);
|
180
187
|
grpc_channel_args args = {1, &error_arg};
|
181
188
|
grpc_channel* channel = grpc_channel_create(
|
182
189
|
target, &args, GRPC_CLIENT_LAME_CHANNEL, nullptr, nullptr, 0, nullptr);
|
@@ -25,7 +25,7 @@
|
|
25
25
|
|
26
26
|
namespace grpc_core {
|
27
27
|
// Does NOT take ownership of error.
|
28
|
-
grpc_arg MakeLameClientErrorArg(grpc_error_handle error);
|
28
|
+
grpc_arg MakeLameClientErrorArg(grpc_error_handle* error);
|
29
29
|
} // namespace grpc_core
|
30
30
|
|
31
31
|
extern const grpc_channel_filter grpc_lame_filter;
|
@@ -794,6 +794,7 @@ void DonePublishedShutdown(void* /*done_arg*/, grpc_cq_completion* storage) {
|
|
794
794
|
// connection is NOT closed until the server is done with all those calls.
|
795
795
|
// -- Once there are no more calls in progress, the channel is closed.
|
796
796
|
void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
797
|
+
absl::Notification* await_requests = nullptr;
|
797
798
|
ChannelBroadcaster broadcaster;
|
798
799
|
{
|
799
800
|
// Wait for startup to be finished. Locks mu_global.
|
@@ -820,7 +821,12 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
820
821
|
KillPendingWorkLocked(
|
821
822
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server Shutdown"));
|
822
823
|
}
|
823
|
-
ShutdownUnrefOnShutdownCall();
|
824
|
+
await_requests = ShutdownUnrefOnShutdownCall();
|
825
|
+
}
|
826
|
+
// We expect no new requests but there can still be requests in-flight.
|
827
|
+
// Wait for them to complete before proceeding.
|
828
|
+
if (await_requests != nullptr) {
|
829
|
+
await_requests->WaitForNotification();
|
824
830
|
}
|
825
831
|
// Shutdown listeners.
|
826
832
|
for (auto& listener : listeners_) {
|
@@ -1248,7 +1254,7 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
|
|
1248
1254
|
grpc_call_set_completion_queue(call_, rc->cq_bound_to_call);
|
1249
1255
|
*rc->call = call_;
|
1250
1256
|
cq_new_ = server_->cqs_[cq_idx];
|
1251
|
-
|
1257
|
+
std::swap(*rc->initial_metadata, initial_metadata_);
|
1252
1258
|
switch (rc->type) {
|
1253
1259
|
case RequestedCall::Type::BATCH_CALL:
|
1254
1260
|
GPR_ASSERT(host_.has_value());
|
@@ -1379,24 +1385,24 @@ void Server::CallData::RecvInitialMetadataReady(void* arg,
|
|
1379
1385
|
grpc_error_handle error) {
|
1380
1386
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1381
1387
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1382
|
-
grpc_millis op_deadline;
|
1383
1388
|
if (error == GRPC_ERROR_NONE) {
|
1384
|
-
GPR_DEBUG_ASSERT(
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
calld->
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1389
|
+
GPR_DEBUG_ASSERT(
|
1390
|
+
calld->recv_initial_metadata_->legacy_index()->named.path != nullptr);
|
1391
|
+
GPR_DEBUG_ASSERT(
|
1392
|
+
calld->recv_initial_metadata_->legacy_index()->named.authority !=
|
1393
|
+
nullptr);
|
1394
|
+
calld->path_.emplace(grpc_slice_ref_internal(GRPC_MDVALUE(
|
1395
|
+
calld->recv_initial_metadata_->legacy_index()->named.path->md)));
|
1396
|
+
calld->host_.emplace(grpc_slice_ref_internal(GRPC_MDVALUE(
|
1397
|
+
calld->recv_initial_metadata_->legacy_index()->named.authority->md)));
|
1398
|
+
calld->recv_initial_metadata_->Remove(GRPC_BATCH_PATH);
|
1399
|
+
calld->recv_initial_metadata_->Remove(GRPC_BATCH_AUTHORITY);
|
1394
1400
|
} else {
|
1395
|
-
GRPC_ERROR_REF(error);
|
1401
|
+
(void)GRPC_ERROR_REF(error);
|
1396
1402
|
}
|
1397
|
-
op_deadline = calld->recv_initial_metadata_->
|
1398
|
-
if (op_deadline
|
1399
|
-
calld->deadline_ = op_deadline;
|
1403
|
+
auto op_deadline = calld->recv_initial_metadata_->get(GrpcTimeoutMetadata());
|
1404
|
+
if (op_deadline.has_value()) {
|
1405
|
+
calld->deadline_ = *op_deadline;
|
1400
1406
|
}
|
1401
1407
|
if (calld->host_.has_value() && calld->path_.has_value()) {
|
1402
1408
|
/* do nothing */
|
@@ -1469,9 +1475,11 @@ void Server::CallData::StartTransportStreamOpBatch(
|
|
1469
1475
|
|
1470
1476
|
grpc_server* grpc_server_create(const grpc_channel_args* args, void* reserved) {
|
1471
1477
|
grpc_core::ExecCtx exec_ctx;
|
1478
|
+
args = grpc_channel_args_remove_grpc_internal(args);
|
1472
1479
|
GRPC_API_TRACE("grpc_server_create(%p, %p)", 2, (args, reserved));
|
1473
1480
|
grpc_server* c_server = new grpc_server;
|
1474
1481
|
c_server->core_server = grpc_core::MakeOrphanable<grpc_core::Server>(args);
|
1482
|
+
grpc_channel_args_destroy(args);
|
1475
1483
|
return c_server;
|
1476
1484
|
}
|
1477
1485
|
|