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
@@ -50,6 +50,7 @@
|
|
50
50
|
#include "src/core/lib/gprpp/ref_counted.h"
|
51
51
|
#include "src/core/lib/iomgr/timer.h"
|
52
52
|
#include "src/core/lib/profiling/timers.h"
|
53
|
+
#include "src/core/lib/slice/slice_split.h"
|
53
54
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
54
55
|
#include "src/core/lib/slice/slice_utils.h"
|
55
56
|
#include "src/core/lib/surface/api_trace.h"
|
@@ -107,7 +108,7 @@ struct batch_control {
|
|
107
108
|
grpc_closure start_batch;
|
108
109
|
grpc_closure finish_batch;
|
109
110
|
std::atomic<intptr_t> steps_to_complete{0};
|
110
|
-
|
111
|
+
AtomicError batch_error;
|
111
112
|
void set_num_steps_to_complete(uintptr_t steps) {
|
112
113
|
steps_to_complete.store(steps, std::memory_order_release);
|
113
114
|
}
|
@@ -143,13 +144,7 @@ struct grpc_call {
|
|
143
144
|
cq(args.cq),
|
144
145
|
channel(args.channel),
|
145
146
|
is_client(args.server_transport_data == nullptr),
|
146
|
-
stream_op_payload(context) {
|
147
|
-
for (int i = 0; i < 2; i++) {
|
148
|
-
for (int j = 0; j < 2; j++) {
|
149
|
-
metadata_batch[i][j].deadline = GRPC_MILLIS_INF_FUTURE;
|
150
|
-
}
|
151
|
-
}
|
152
|
-
}
|
147
|
+
stream_op_payload(context) {}
|
153
148
|
|
154
149
|
~grpc_call() {
|
155
150
|
for (int i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
|
@@ -192,7 +187,10 @@ struct grpc_call {
|
|
192
187
|
grpc_transport_stream_op_batch_payload stream_op_payload;
|
193
188
|
|
194
189
|
/* first idx: is_receiving, second idx: is_trailing */
|
195
|
-
grpc_metadata_batch
|
190
|
+
grpc_metadata_batch send_initial_metadata{arena};
|
191
|
+
grpc_metadata_batch send_trailing_metadata{arena};
|
192
|
+
grpc_metadata_batch recv_initial_metadata{arena};
|
193
|
+
grpc_metadata_batch recv_trailing_metadata{arena};
|
196
194
|
|
197
195
|
/* Buffered read metadata waiting to be returned to the application.
|
198
196
|
Element 0 is initial metadata, element 1 is trailing metadata. */
|
@@ -257,7 +255,7 @@ struct grpc_call {
|
|
257
255
|
grpc_core::Server* core_server;
|
258
256
|
} server;
|
259
257
|
} final_op;
|
260
|
-
|
258
|
+
AtomicError status_error;
|
261
259
|
|
262
260
|
/* recv_state can contain one of the following values:
|
263
261
|
RECV_NONE : : no initial metadata and messages received
|
@@ -407,7 +405,7 @@ grpc_error_handle grpc_call_create(const grpc_call_create_args* args,
|
|
407
405
|
GPR_ASSERT(!args->parent->is_client);
|
408
406
|
|
409
407
|
if (args->propagation_mask & GRPC_PROPAGATE_DEADLINE) {
|
410
|
-
send_deadline =
|
408
|
+
send_deadline = std::min(send_deadline, args->parent->send_deadline);
|
411
409
|
}
|
412
410
|
/* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
|
413
411
|
* GRPC_PROPAGATE_STATS_CONTEXT */
|
@@ -545,31 +543,26 @@ static void release_call(void* call, grpc_error_handle /*error*/) {
|
|
545
543
|
|
546
544
|
static void destroy_call(void* call, grpc_error_handle /*error*/) {
|
547
545
|
GPR_TIMER_SCOPE("destroy_call", 0);
|
548
|
-
size_t i;
|
549
|
-
int ii;
|
550
546
|
grpc_call* c = static_cast<grpc_call*>(call);
|
551
|
-
|
552
|
-
|
553
|
-
&c->metadata_batch[1 /* is_receiving */][i /* is_initial */]);
|
554
|
-
}
|
547
|
+
c->recv_initial_metadata.Clear();
|
548
|
+
c->recv_trailing_metadata.Clear();
|
555
549
|
c->receiving_stream.reset();
|
556
550
|
parent_call* pc = get_parent_call(c);
|
557
551
|
if (pc != nullptr) {
|
558
552
|
pc->~parent_call();
|
559
553
|
}
|
560
|
-
for (
|
561
|
-
GRPC_MDELEM_UNREF(c->send_extra_metadata[
|
554
|
+
for (int i = 0; i < c->send_extra_metadata_count; i++) {
|
555
|
+
GRPC_MDELEM_UNREF(c->send_extra_metadata[i].md);
|
562
556
|
}
|
563
557
|
if (c->cq) {
|
564
558
|
GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
|
565
559
|
}
|
566
560
|
|
567
|
-
grpc_error_handle status_error =
|
568
|
-
reinterpret_cast<grpc_error_handle>(gpr_atm_acq_load(&c->status_error));
|
561
|
+
grpc_error_handle status_error = c->status_error.get();
|
569
562
|
grpc_error_get_status(status_error, c->send_deadline,
|
570
563
|
&c->final_info.final_status, nullptr, nullptr,
|
571
564
|
&(c->final_info.error_string));
|
572
|
-
|
565
|
+
c->status_error.set(GRPC_ERROR_NONE);
|
573
566
|
c->final_info.stats.latency =
|
574
567
|
gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time);
|
575
568
|
grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
|
@@ -734,8 +727,7 @@ static grpc_error_handle error_from_status(grpc_status_code status,
|
|
734
727
|
// guarantee that can be short-lived.
|
735
728
|
return grpc_error_set_int(
|
736
729
|
grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
|
737
|
-
GRPC_ERROR_STR_GRPC_MESSAGE,
|
738
|
-
grpc_slice_from_copied_string(description)),
|
730
|
+
GRPC_ERROR_STR_GRPC_MESSAGE, description),
|
739
731
|
GRPC_ERROR_INT_GRPC_STATUS, status);
|
740
732
|
}
|
741
733
|
|
@@ -750,13 +742,14 @@ static void set_final_status(grpc_call* call, grpc_error_handle error) {
|
|
750
742
|
gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
|
751
743
|
}
|
752
744
|
if (call->is_client) {
|
745
|
+
std::string status_details;
|
753
746
|
grpc_error_get_status(error, call->send_deadline,
|
754
|
-
call->final_op.client.status,
|
755
|
-
call->final_op.client.
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
747
|
+
call->final_op.client.status, &status_details,
|
748
|
+
nullptr, call->final_op.client.error_string);
|
749
|
+
*call->final_op.client.status_details =
|
750
|
+
grpc_slice_from_cpp_string(std::move(status_details));
|
751
|
+
call->status_error.set(error);
|
752
|
+
GRPC_ERROR_UNREF(error);
|
760
753
|
grpc_core::channelz::ChannelNode* channelz_channel =
|
761
754
|
grpc_channel_get_channelz_node(call->channel);
|
762
755
|
if (channelz_channel != nullptr) {
|
@@ -772,9 +765,7 @@ static void set_final_status(grpc_call* call, grpc_error_handle error) {
|
|
772
765
|
grpc_core::channelz::ServerNode* channelz_node =
|
773
766
|
call->final_op.server.core_server->channelz_node();
|
774
767
|
if (channelz_node != nullptr) {
|
775
|
-
if (*call->final_op.server.cancelled ||
|
776
|
-
reinterpret_cast<grpc_error_handle>(
|
777
|
-
gpr_atm_acq_load(&call->status_error)) != GRPC_ERROR_NONE) {
|
768
|
+
if (*call->final_op.server.cancelled || !call->status_error.ok()) {
|
778
769
|
channelz_node->RecordCallFailed();
|
779
770
|
} else {
|
780
771
|
channelz_node->RecordCallSucceeded();
|
@@ -848,7 +839,7 @@ static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
|
|
848
839
|
grpc_slice_split_without_space(accept_encoding_slice, ",",
|
849
840
|
&accept_encoding_parts);
|
850
841
|
|
851
|
-
|
842
|
+
grpc_core::SetBit(encodings_accepted_by_peer, GRPC_COMPRESS_NONE);
|
852
843
|
for (i = 0; i < accept_encoding_parts.count; i++) {
|
853
844
|
int r;
|
854
845
|
grpc_slice accept_encoding_entry_slice = accept_encoding_parts.slices[i];
|
@@ -862,7 +853,7 @@ static void set_encodings_accepted_by_peer(grpc_call* /*call*/,
|
|
862
853
|
reinterpret_cast<grpc_stream_compression_algorithm*>(&algorithm));
|
863
854
|
}
|
864
855
|
if (r) {
|
865
|
-
|
856
|
+
grpc_core::SetBit(encodings_accepted_by_peer, algorithm);
|
866
857
|
} else {
|
867
858
|
char* accept_encoding_entry_str =
|
868
859
|
grpc_slice_to_c_string(accept_encoding_entry_slice);
|
@@ -913,8 +904,8 @@ static int prepare_application_metadata(grpc_call* call, int count,
|
|
913
904
|
int additional_metadata_count) {
|
914
905
|
int total_count = count + additional_metadata_count;
|
915
906
|
int i;
|
916
|
-
grpc_metadata_batch* batch =
|
917
|
-
|
907
|
+
grpc_metadata_batch* batch = is_trailing ? &call->send_trailing_metadata
|
908
|
+
: &call->send_initial_metadata;
|
918
909
|
for (i = 0; i < total_count; i++) {
|
919
910
|
grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
|
920
911
|
grpc_linked_mdelem* l = linked_from_md(md);
|
@@ -947,15 +938,14 @@ static int prepare_application_metadata(grpc_call* call, int count,
|
|
947
938
|
} else {
|
948
939
|
for (i = 0; i < call->send_extra_metadata_count; i++) {
|
949
940
|
GRPC_LOG_IF_ERROR("prepare_application_metadata",
|
950
|
-
|
951
|
-
batch, &call->send_extra_metadata[i]));
|
941
|
+
batch->LinkTail(&call->send_extra_metadata[i]));
|
952
942
|
}
|
953
943
|
}
|
954
944
|
}
|
955
945
|
for (i = 0; i < total_count; i++) {
|
956
946
|
grpc_metadata* md = get_md_elem(metadata, additional_metadata, i, count);
|
957
947
|
grpc_linked_mdelem* l = linked_from_md(md);
|
958
|
-
grpc_error_handle error =
|
948
|
+
grpc_error_handle error = batch->LinkTail(l);
|
959
949
|
if (error != GRPC_ERROR_NONE) {
|
960
950
|
GRPC_MDELEM_UNREF(l->md);
|
961
951
|
}
|
@@ -1000,53 +990,57 @@ static grpc_stream_compression_algorithm decode_stream_compression(
|
|
1000
990
|
|
1001
991
|
static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
|
1002
992
|
int is_trailing) {
|
1003
|
-
if (b->
|
993
|
+
if (b->non_deadline_count() == 0) return;
|
1004
994
|
if (!call->is_client && is_trailing) return;
|
1005
995
|
if (is_trailing && call->buffered_metadata[1] == nullptr) return;
|
1006
996
|
GPR_TIMER_SCOPE("publish_app_metadata", 0);
|
1007
997
|
grpc_metadata_array* dest;
|
1008
998
|
grpc_metadata* mdusr;
|
1009
999
|
dest = call->buffered_metadata[is_trailing];
|
1010
|
-
if (dest->count + b->
|
1011
|
-
dest->capacity =
|
1012
|
-
|
1000
|
+
if (dest->count + b->non_deadline_count() > dest->capacity) {
|
1001
|
+
dest->capacity = std::max(dest->capacity + b->non_deadline_count(),
|
1002
|
+
dest->capacity * 3 / 2);
|
1013
1003
|
dest->metadata = static_cast<grpc_metadata*>(
|
1014
1004
|
gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity));
|
1015
1005
|
}
|
1016
|
-
|
1006
|
+
b->ForEach([&](grpc_mdelem md) {
|
1017
1007
|
mdusr = &dest->metadata[dest->count++];
|
1018
1008
|
/* we pass back borrowed slices that are valid whilst the call is valid */
|
1019
|
-
mdusr->key = GRPC_MDKEY(
|
1020
|
-
mdusr->value = GRPC_MDVALUE(
|
1021
|
-
}
|
1009
|
+
mdusr->key = GRPC_MDKEY(md);
|
1010
|
+
mdusr->value = GRPC_MDVALUE(md);
|
1011
|
+
});
|
1022
1012
|
}
|
1023
1013
|
|
1024
1014
|
static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
|
1025
|
-
if (b->
|
1015
|
+
if (b->legacy_index()->named.content_encoding != nullptr) {
|
1026
1016
|
GPR_TIMER_SCOPE("incoming_stream_compression_algorithm", 0);
|
1027
1017
|
set_incoming_stream_compression_algorithm(
|
1028
|
-
call, decode_stream_compression(
|
1029
|
-
|
1018
|
+
call, decode_stream_compression(
|
1019
|
+
b->legacy_index()->named.content_encoding->md));
|
1020
|
+
b->Remove(GRPC_BATCH_CONTENT_ENCODING);
|
1030
1021
|
}
|
1031
|
-
if (b->
|
1022
|
+
if (b->legacy_index()->named.grpc_encoding != nullptr) {
|
1032
1023
|
GPR_TIMER_SCOPE("incoming_message_compression_algorithm", 0);
|
1033
1024
|
set_incoming_message_compression_algorithm(
|
1034
|
-
call,
|
1035
|
-
|
1025
|
+
call,
|
1026
|
+
decode_message_compression(b->legacy_index()->named.grpc_encoding->md));
|
1027
|
+
b->Remove(GRPC_BATCH_GRPC_ENCODING);
|
1036
1028
|
}
|
1037
1029
|
uint32_t message_encodings_accepted_by_peer = 1u;
|
1038
1030
|
uint32_t stream_encodings_accepted_by_peer = 1u;
|
1039
|
-
if (b->
|
1031
|
+
if (b->legacy_index()->named.grpc_accept_encoding != nullptr) {
|
1040
1032
|
GPR_TIMER_SCOPE("encodings_accepted_by_peer", 0);
|
1041
|
-
set_encodings_accepted_by_peer(
|
1042
|
-
|
1043
|
-
|
1033
|
+
set_encodings_accepted_by_peer(
|
1034
|
+
call, b->legacy_index()->named.grpc_accept_encoding->md,
|
1035
|
+
&message_encodings_accepted_by_peer, false);
|
1036
|
+
b->Remove(GRPC_BATCH_GRPC_ACCEPT_ENCODING);
|
1044
1037
|
}
|
1045
|
-
if (b->
|
1038
|
+
if (b->legacy_index()->named.accept_encoding != nullptr) {
|
1046
1039
|
GPR_TIMER_SCOPE("stream_encodings_accepted_by_peer", 0);
|
1047
|
-
set_encodings_accepted_by_peer(call,
|
1040
|
+
set_encodings_accepted_by_peer(call,
|
1041
|
+
b->legacy_index()->named.accept_encoding->md,
|
1048
1042
|
&stream_encodings_accepted_by_peer, true);
|
1049
|
-
|
1043
|
+
b->Remove(GRPC_BATCH_ACCEPT_ENCODING);
|
1050
1044
|
}
|
1051
1045
|
call->encodings_accepted_by_peer =
|
1052
1046
|
grpc_compression_bitset_from_message_stream_compression_bitset(
|
@@ -1060,9 +1054,9 @@ static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
|
|
1060
1054
|
grpc_call* call = static_cast<grpc_call*>(args);
|
1061
1055
|
if (batch_error != GRPC_ERROR_NONE) {
|
1062
1056
|
set_final_status(call, batch_error);
|
1063
|
-
} else if (b->
|
1064
|
-
grpc_status_code status_code =
|
1065
|
-
|
1057
|
+
} else if (b->legacy_index()->named.grpc_status != nullptr) {
|
1058
|
+
grpc_status_code status_code = grpc_get_status_code_from_metadata(
|
1059
|
+
b->legacy_index()->named.grpc_status->md);
|
1066
1060
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
1067
1061
|
if (status_code != GRPC_STATUS_OK) {
|
1068
1062
|
char* peer = grpc_call_get_peer(call);
|
@@ -1072,17 +1066,17 @@ static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
|
|
1072
1066
|
static_cast<intptr_t>(status_code));
|
1073
1067
|
gpr_free(peer);
|
1074
1068
|
}
|
1075
|
-
if (b->
|
1069
|
+
if (b->legacy_index()->named.grpc_message != nullptr) {
|
1076
1070
|
error = grpc_error_set_str(
|
1077
1071
|
error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1078
|
-
|
1079
|
-
|
1072
|
+
grpc_core::StringViewFromSlice(
|
1073
|
+
GRPC_MDVALUE(b->legacy_index()->named.grpc_message->md)));
|
1074
|
+
b->Remove(GRPC_BATCH_GRPC_MESSAGE);
|
1080
1075
|
} else if (error != GRPC_ERROR_NONE) {
|
1081
|
-
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
|
1082
|
-
grpc_empty_slice());
|
1076
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
|
1083
1077
|
}
|
1084
1078
|
set_final_status(call, GRPC_ERROR_REF(error));
|
1085
|
-
|
1079
|
+
b->Remove(GRPC_BATCH_GRPC_STATUS);
|
1086
1080
|
GRPC_ERROR_UNREF(error);
|
1087
1081
|
} else if (!call->is_client) {
|
1088
1082
|
set_final_status(call, GRPC_ERROR_NONE);
|
@@ -1156,6 +1150,7 @@ static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
|
|
1156
1150
|
}
|
1157
1151
|
bctl->~batch_control();
|
1158
1152
|
bctl->op = {};
|
1153
|
+
new (&bctl->batch_error) AtomicError();
|
1159
1154
|
} else {
|
1160
1155
|
bctl = call->arena->New<batch_control>();
|
1161
1156
|
*pslot = bctl;
|
@@ -1174,21 +1169,16 @@ static void finish_batch_completion(void* user_data,
|
|
1174
1169
|
}
|
1175
1170
|
|
1176
1171
|
static void reset_batch_errors(batch_control* bctl) {
|
1177
|
-
|
1178
|
-
gpr_atm_acq_load(&bctl->batch_error)));
|
1179
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1180
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_NONE));
|
1172
|
+
bctl->batch_error.set(GRPC_ERROR_NONE);
|
1181
1173
|
}
|
1182
1174
|
|
1183
1175
|
static void post_batch_completion(batch_control* bctl) {
|
1184
1176
|
grpc_call* next_child_call;
|
1185
1177
|
grpc_call* call = bctl->call;
|
1186
|
-
grpc_error_handle error = GRPC_ERROR_REF(
|
1187
|
-
gpr_atm_acq_load(&bctl->batch_error)));
|
1178
|
+
grpc_error_handle error = GRPC_ERROR_REF(bctl->batch_error.get());
|
1188
1179
|
|
1189
1180
|
if (bctl->op.send_initial_metadata) {
|
1190
|
-
|
1191
|
-
&call->metadata_batch[0 /* is_receiving */][0 /* is_trailing */]);
|
1181
|
+
call->send_initial_metadata.Clear();
|
1192
1182
|
}
|
1193
1183
|
if (bctl->op.send_message) {
|
1194
1184
|
if (bctl->op.payload->send_message.stream_write_closed &&
|
@@ -1200,8 +1190,7 @@ static void post_batch_completion(batch_control* bctl) {
|
|
1200
1190
|
call->sending_message = false;
|
1201
1191
|
}
|
1202
1192
|
if (bctl->op.send_trailing_metadata) {
|
1203
|
-
|
1204
|
-
&call->metadata_batch[0 /* is_receiving */][1 /* is_trailing */]);
|
1193
|
+
call->send_trailing_metadata.Clear();
|
1205
1194
|
}
|
1206
1195
|
if (bctl->op.recv_trailing_metadata) {
|
1207
1196
|
/* propagate cancellation to any interested children */
|
@@ -1353,10 +1342,8 @@ static void receiving_stream_ready(void* bctlp, grpc_error_handle error) {
|
|
1353
1342
|
grpc_call* call = bctl->call;
|
1354
1343
|
if (error != GRPC_ERROR_NONE) {
|
1355
1344
|
call->receiving_stream.reset();
|
1356
|
-
if (
|
1357
|
-
|
1358
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1359
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
|
1345
|
+
if (bctl->batch_error.ok()) {
|
1346
|
+
bctl->batch_error.set(error);
|
1360
1347
|
}
|
1361
1348
|
cancel_with_error(call, GRPC_ERROR_REF(error));
|
1362
1349
|
}
|
@@ -1458,8 +1445,8 @@ static void validate_filtered_metadata(batch_control* bctl) {
|
|
1458
1445
|
}
|
1459
1446
|
/* GRPC_COMPRESS_NONE is always set. */
|
1460
1447
|
GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer != 0);
|
1461
|
-
if (GPR_UNLIKELY(!
|
1462
|
-
|
1448
|
+
if (GPR_UNLIKELY(!grpc_core::GetBit(call->encodings_accepted_by_peer,
|
1449
|
+
compression_algorithm))) {
|
1463
1450
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
|
1464
1451
|
handle_compression_algorithm_not_accepted(call, compression_algorithm);
|
1465
1452
|
}
|
@@ -1475,22 +1462,21 @@ static void receiving_initial_metadata_ready(void* bctlp,
|
|
1475
1462
|
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready");
|
1476
1463
|
|
1477
1464
|
if (error == GRPC_ERROR_NONE) {
|
1478
|
-
grpc_metadata_batch* md =
|
1479
|
-
&call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */];
|
1465
|
+
grpc_metadata_batch* md = &call->recv_initial_metadata;
|
1480
1466
|
recv_initial_filter(call, md);
|
1481
1467
|
|
1482
1468
|
/* TODO(ctiller): this could be moved into recv_initial_filter now */
|
1483
1469
|
GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
|
1484
1470
|
validate_filtered_metadata(bctl);
|
1485
1471
|
|
1486
|
-
|
1487
|
-
|
1472
|
+
absl::optional<grpc_millis> deadline =
|
1473
|
+
md->get(grpc_core::GrpcTimeoutMetadata());
|
1474
|
+
if (deadline.has_value() && !call->is_client) {
|
1475
|
+
call->send_deadline = *deadline;
|
1488
1476
|
}
|
1489
1477
|
} else {
|
1490
|
-
if (
|
1491
|
-
|
1492
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1493
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
|
1478
|
+
if (bctl->batch_error.ok()) {
|
1479
|
+
bctl->batch_error.set(error);
|
1494
1480
|
}
|
1495
1481
|
cancel_with_error(call, GRPC_ERROR_REF(error));
|
1496
1482
|
}
|
@@ -1532,8 +1518,7 @@ static void receiving_trailing_metadata_ready(void* bctlp,
|
|
1532
1518
|
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1533
1519
|
grpc_call* call = bctl->call;
|
1534
1520
|
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready");
|
1535
|
-
grpc_metadata_batch* md =
|
1536
|
-
&call->metadata_batch[1 /* is_receiving */][1 /* is_trailing */];
|
1521
|
+
grpc_metadata_batch* md = &call->recv_trailing_metadata;
|
1537
1522
|
recv_trailing_filter(call, md, GRPC_ERROR_REF(error));
|
1538
1523
|
finish_batch_step(bctl);
|
1539
1524
|
}
|
@@ -1542,10 +1527,8 @@ static void finish_batch(void* bctlp, grpc_error_handle error) {
|
|
1542
1527
|
batch_control* bctl = static_cast<batch_control*>(bctlp);
|
1543
1528
|
grpc_call* call = bctl->call;
|
1544
1529
|
GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
|
1545
|
-
if (
|
1546
|
-
|
1547
|
-
gpr_atm_rel_store(&bctl->batch_error,
|
1548
|
-
reinterpret_cast<gpr_atm>(GRPC_ERROR_REF(error)));
|
1530
|
+
if (bctl->batch_error.ok()) {
|
1531
|
+
bctl->batch_error.set(error);
|
1549
1532
|
}
|
1550
1533
|
if (error != GRPC_ERROR_NONE) {
|
1551
1534
|
cancel_with_error(call, GRPC_ERROR_REF(error));
|
@@ -1669,11 +1652,12 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1669
1652
|
goto done_with_error;
|
1670
1653
|
}
|
1671
1654
|
/* TODO(ctiller): just make these the same variable? */
|
1672
|
-
if (call->is_client) {
|
1673
|
-
call->
|
1655
|
+
if (call->is_client && call->send_deadline != GRPC_MILLIS_INF_FUTURE) {
|
1656
|
+
call->send_initial_metadata.Set(grpc_core::GrpcTimeoutMetadata(),
|
1657
|
+
call->send_deadline);
|
1674
1658
|
}
|
1675
1659
|
stream_op_payload->send_initial_metadata.send_initial_metadata =
|
1676
|
-
&call->
|
1660
|
+
&call->send_initial_metadata;
|
1677
1661
|
stream_op_payload->send_initial_metadata.send_initial_metadata_flags =
|
1678
1662
|
op->flags;
|
1679
1663
|
if (call->is_client) {
|
@@ -1730,7 +1714,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1730
1714
|
stream_op->send_trailing_metadata = true;
|
1731
1715
|
call->sent_final_op = true;
|
1732
1716
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1733
|
-
&call->
|
1717
|
+
&call->send_trailing_metadata;
|
1734
1718
|
has_send_ops = true;
|
1735
1719
|
break;
|
1736
1720
|
}
|
@@ -1771,21 +1755,21 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1771
1755
|
if (op->data.send_status_from_server.status_details != nullptr) {
|
1772
1756
|
call->send_extra_metadata[1].md = grpc_mdelem_from_slices(
|
1773
1757
|
GRPC_MDSTR_GRPC_MESSAGE,
|
1774
|
-
|
1758
|
+
grpc_slice_copy(
|
1775
1759
|
*op->data.send_status_from_server.status_details));
|
1776
1760
|
call->send_extra_metadata_count++;
|
1777
1761
|
if (status_error != GRPC_ERROR_NONE) {
|
1778
1762
|
char* msg = grpc_slice_to_c_string(
|
1779
1763
|
GRPC_MDVALUE(call->send_extra_metadata[1].md));
|
1780
|
-
status_error =
|
1781
|
-
|
1782
|
-
grpc_slice_from_copied_string(msg));
|
1764
|
+
status_error = grpc_error_set_str(status_error,
|
1765
|
+
GRPC_ERROR_STR_GRPC_MESSAGE, msg);
|
1783
1766
|
gpr_free(msg);
|
1784
1767
|
}
|
1785
1768
|
}
|
1786
1769
|
|
1787
|
-
|
1788
|
-
|
1770
|
+
call->status_error.set(status_error);
|
1771
|
+
GRPC_ERROR_UNREF(status_error);
|
1772
|
+
|
1789
1773
|
if (!prepare_application_metadata(
|
1790
1774
|
call,
|
1791
1775
|
static_cast<int>(
|
@@ -1800,7 +1784,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1800
1784
|
goto done_with_error;
|
1801
1785
|
}
|
1802
1786
|
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
|
1803
|
-
&call->
|
1787
|
+
&call->send_trailing_metadata;
|
1804
1788
|
stream_op_payload->send_trailing_metadata.sent =
|
1805
1789
|
&call->sent_server_trailing_metadata;
|
1806
1790
|
has_send_ops = true;
|
@@ -1824,7 +1808,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1824
1808
|
grpc_schedule_on_exec_ctx);
|
1825
1809
|
stream_op->recv_initial_metadata = true;
|
1826
1810
|
stream_op_payload->recv_initial_metadata.recv_initial_metadata =
|
1827
|
-
&call->
|
1811
|
+
&call->recv_initial_metadata;
|
1828
1812
|
stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
|
1829
1813
|
&call->receiving_initial_metadata_ready;
|
1830
1814
|
if (call->is_client) {
|
@@ -1885,7 +1869,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1885
1869
|
op->data.recv_status_on_client.error_string;
|
1886
1870
|
stream_op->recv_trailing_metadata = true;
|
1887
1871
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
|
1888
|
-
&call->
|
1872
|
+
&call->recv_trailing_metadata;
|
1889
1873
|
stream_op_payload->recv_trailing_metadata.collect_stats =
|
1890
1874
|
&call->final_info.stats.transport_stream_stats;
|
1891
1875
|
GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
|
@@ -1915,7 +1899,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
|
|
1915
1899
|
op->data.recv_close_on_server.cancelled;
|
1916
1900
|
stream_op->recv_trailing_metadata = true;
|
1917
1901
|
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
|
1918
|
-
&call->
|
1902
|
+
&call->recv_trailing_metadata;
|
1919
1903
|
stream_op_payload->recv_trailing_metadata.collect_stats =
|
1920
1904
|
&call->final_info.stats.transport_stream_stats;
|
1921
1905
|
GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
|
@@ -1951,15 +1935,16 @@ done_with_error:
|
|
1951
1935
|
/* reverse any mutations that occurred */
|
1952
1936
|
if (stream_op->send_initial_metadata) {
|
1953
1937
|
call->sent_initial_metadata = false;
|
1954
|
-
|
1938
|
+
call->send_initial_metadata.Clear();
|
1955
1939
|
}
|
1956
1940
|
if (stream_op->send_message) {
|
1957
1941
|
call->sending_message = false;
|
1958
1942
|
call->sending_stream->Orphan();
|
1943
|
+
stream_op_payload->send_message.send_message.reset();
|
1959
1944
|
}
|
1960
1945
|
if (stream_op->send_trailing_metadata) {
|
1961
1946
|
call->sent_final_op = false;
|
1962
|
-
|
1947
|
+
call->send_trailing_metadata.Clear();
|
1963
1948
|
}
|
1964
1949
|
if (stream_op->recv_initial_metadata) {
|
1965
1950
|
call->received_initial_metadata = false;
|
@@ -2024,13 +2009,11 @@ grpc_compression_algorithm grpc_call_compression_for_level(
|
|
2024
2009
|
|
2025
2010
|
bool grpc_call_is_trailers_only(const grpc_call* call) {
|
2026
2011
|
bool result = call->is_trailers_only;
|
2027
|
-
GPR_DEBUG_ASSERT(
|
2028
|
-
!result || call->metadata_batch[1 /* is_receiving */][0 /* is_trailing */]
|
2029
|
-
.list.count == 0);
|
2012
|
+
GPR_DEBUG_ASSERT(!result || call->recv_initial_metadata.empty());
|
2030
2013
|
return result;
|
2031
2014
|
}
|
2032
2015
|
|
2033
|
-
|
2016
|
+
int grpc_call_failed_before_recv_message(const grpc_call* c) {
|
2034
2017
|
return c->call_failed_before_recv_message;
|
2035
2018
|
}
|
2036
2019
|
|
data/src/core/lib/surface/call.h
CHANGED
@@ -125,12 +125,6 @@ grpc_compression_algorithm grpc_call_compression_for_level(
|
|
125
125
|
Move to surface API if requested by other languages. */
|
126
126
|
bool grpc_call_is_trailers_only(const grpc_call* call);
|
127
127
|
|
128
|
-
/* Returns whether or not the call's receive message operation failed because of
|
129
|
-
* an error (as opposed to a graceful end-of-stream) */
|
130
|
-
/* TODO(markdroth): This is currently available only to the C++ API.
|
131
|
-
Move to surface API if requested by other languages. */
|
132
|
-
bool grpc_call_failed_before_recv_message(const grpc_call* c);
|
133
|
-
|
134
128
|
extern grpc_core::TraceFlag grpc_call_error_trace;
|
135
129
|
extern grpc_core::TraceFlag grpc_compression_trace;
|
136
130
|
|
@@ -34,6 +34,7 @@
|
|
34
34
|
#include "src/core/lib/channel/channel_trace.h"
|
35
35
|
#include "src/core/lib/channel/channelz.h"
|
36
36
|
#include "src/core/lib/channel/channelz_registry.h"
|
37
|
+
#include "src/core/lib/config/core_configuration.h"
|
37
38
|
#include "src/core/lib/debug/stats.h"
|
38
39
|
#include "src/core/lib/gpr/string.h"
|
39
40
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
@@ -44,7 +45,6 @@
|
|
44
45
|
#include "src/core/lib/slice/slice_internal.h"
|
45
46
|
#include "src/core/lib/surface/api_trace.h"
|
46
47
|
#include "src/core/lib/surface/call.h"
|
47
|
-
#include "src/core/lib/surface/channel_init.h"
|
48
48
|
#include "src/core/lib/transport/static_metadata.h"
|
49
49
|
|
50
50
|
/** Cache grpc-status: X mdelems for X = 0..NUM_CACHED_STATUS_ELEMS.
|
@@ -187,7 +187,9 @@ void channelz_node_destroy(void* p) {
|
|
187
187
|
static_cast<grpc_core::channelz::ChannelNode*>(p);
|
188
188
|
node->Unref();
|
189
189
|
}
|
190
|
-
int channelz_node_cmp(void* p1, void* p2) {
|
190
|
+
int channelz_node_cmp(void* p1, void* p2) {
|
191
|
+
return grpc_core::QsortCompare(p1, p2);
|
192
|
+
}
|
191
193
|
const grpc_arg_pointer_vtable channelz_node_arg_vtable = {
|
192
194
|
channelz_node_copy, channelz_node_destroy, channelz_node_cmp};
|
193
195
|
|
@@ -267,7 +269,8 @@ grpc_channel* grpc_channel_create(const char* target,
|
|
267
269
|
grpc_channel_args_destroy(args);
|
268
270
|
grpc_channel_stack_builder_set_target(builder, target);
|
269
271
|
grpc_channel_stack_builder_set_transport(builder, optional_transport);
|
270
|
-
if (!
|
272
|
+
if (!grpc_core::CoreConfiguration::Get().channel_init().CreateStack(
|
273
|
+
builder, channel_stack_type)) {
|
271
274
|
grpc_channel_stack_builder_destroy(builder);
|
272
275
|
if (resource_user != nullptr) {
|
273
276
|
if (preallocated_bytes > 0) {
|
@@ -321,7 +324,7 @@ void grpc_channel_update_call_size_estimate(grpc_channel* channel,
|
|
321
324
|
/* size shrank: decrease estimate */
|
322
325
|
gpr_atm_no_barrier_cas(
|
323
326
|
&channel->call_size_estimate, static_cast<gpr_atm>(cur),
|
324
|
-
static_cast<gpr_atm>(
|
327
|
+
static_cast<gpr_atm>(std::min(cur - 1, (255 * cur + size) / 256)));
|
325
328
|
/* if we lose: never mind, something else will likely update soon enough */
|
326
329
|
}
|
327
330
|
}
|
@@ -420,35 +423,19 @@ grpc_call* grpc_channel_create_pollset_set_call(
|
|
420
423
|
namespace grpc_core {
|
421
424
|
|
422
425
|
RegisteredCall::RegisteredCall(const char* method_arg, const char* host_arg)
|
423
|
-
:
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
authority(
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
// TODO(vjpai): Delete copy-constructor when allowed by all supported compilers.
|
426
|
+
: path(method_arg != nullptr && method_arg[0] != 0
|
427
|
+
? grpc_mdelem_from_slices(
|
428
|
+
GRPC_MDSTR_PATH, grpc_slice_from_copied_string(method_arg))
|
429
|
+
: GRPC_MDNULL),
|
430
|
+
authority(
|
431
|
+
host_arg != nullptr && host_arg[0] != 0
|
432
|
+
? grpc_mdelem_from_slices(GRPC_MDSTR_AUTHORITY,
|
433
|
+
grpc_slice_from_copied_string(host_arg))
|
434
|
+
: GRPC_MDNULL) {}
|
435
|
+
|
434
436
|
RegisteredCall::RegisteredCall(const RegisteredCall& other)
|
435
|
-
:
|
436
|
-
|
437
|
-
RegisteredCall::RegisteredCall(RegisteredCall&& other) noexcept
|
438
|
-
: method(std::move(other.method)),
|
439
|
-
host(std::move(other.host)),
|
440
|
-
path(grpc_mdelem_from_slices(
|
441
|
-
GRPC_MDSTR_PATH, grpc_core::ExternallyManagedSlice(method.c_str()))),
|
442
|
-
authority(!host.empty()
|
443
|
-
? grpc_mdelem_from_slices(
|
444
|
-
GRPC_MDSTR_AUTHORITY,
|
445
|
-
grpc_core::ExternallyManagedSlice(host.c_str()))
|
446
|
-
: GRPC_MDNULL) {
|
447
|
-
GRPC_MDELEM_UNREF(other.path);
|
448
|
-
GRPC_MDELEM_UNREF(other.authority);
|
449
|
-
other.path = GRPC_MDNULL;
|
450
|
-
other.authority = GRPC_MDNULL;
|
451
|
-
}
|
437
|
+
: path(GRPC_MDELEM_REF(other.path)),
|
438
|
+
authority(GRPC_MDELEM_REF(other.authority)) {}
|
452
439
|
|
453
440
|
RegisteredCall::~RegisteredCall() {
|
454
441
|
GRPC_MDELEM_UNREF(path);
|