grpc 1.41.0.pre2 → 1.42.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +81 -68
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
@@ -26,7 +24,6 @@
|
|
26
24
|
|
27
25
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
28
26
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
29
|
-
#include "src/core/ext/transport/chttp2/client/authority.h"
|
30
27
|
#include "src/core/ext/transport/chttp2/client/chttp2_connector.h"
|
31
28
|
#include "src/core/lib/channel/channel_args.h"
|
32
29
|
#include "src/core/lib/surface/api_trace.h"
|
@@ -37,13 +34,9 @@ namespace grpc_core {
|
|
37
34
|
class Chttp2InsecureClientChannelFactory : public ClientChannelFactory {
|
38
35
|
public:
|
39
36
|
RefCountedPtr<Subchannel> CreateSubchannel(
|
37
|
+
const grpc_resolved_address& address,
|
40
38
|
const grpc_channel_args* args) override {
|
41
|
-
|
42
|
-
grpc_default_authority_add_if_not_present(args);
|
43
|
-
RefCountedPtr<Subchannel> s =
|
44
|
-
Subchannel::Create(MakeOrphanable<Chttp2Connector>(), new_args);
|
45
|
-
grpc_channel_args_destroy(new_args);
|
46
|
-
return s;
|
39
|
+
return Subchannel::Create(MakeOrphanable<Chttp2Connector>(), address, args);
|
47
40
|
}
|
48
41
|
};
|
49
42
|
|
@@ -95,6 +88,7 @@ grpc_channel* grpc_insecure_channel_create(const char* target,
|
|
95
88
|
const grpc_channel_args* args,
|
96
89
|
void* reserved) {
|
97
90
|
grpc_core::ExecCtx exec_ctx;
|
91
|
+
args = grpc_channel_args_remove_grpc_internal(args);
|
98
92
|
GRPC_API_TRACE(
|
99
93
|
"grpc_insecure_channel_create(target=%s, args=%p, reserved=%p)", 3,
|
100
94
|
(target, args, reserved));
|
@@ -110,6 +104,7 @@ grpc_channel* grpc_insecure_channel_create(const char* target,
|
|
110
104
|
grpc_channel* channel = grpc_core::CreateChannel(target, new_args, &error);
|
111
105
|
// Clean up.
|
112
106
|
grpc_channel_args_destroy(new_args);
|
107
|
+
grpc_channel_args_destroy(args);
|
113
108
|
if (channel == nullptr) {
|
114
109
|
intptr_t integer;
|
115
110
|
grpc_status_code status = GRPC_STATUS_INTERNAL;
|
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#include <grpc/support/port_platform.h>
|
20
18
|
|
@@ -35,7 +33,6 @@
|
|
35
33
|
#include "src/core/lib/slice/slice_internal.h"
|
36
34
|
#include "src/core/lib/surface/api_trace.h"
|
37
35
|
#include "src/core/lib/surface/channel.h"
|
38
|
-
#include "src/core/lib/transport/authority_override.h"
|
39
36
|
#include "src/core/lib/uri/uri_parser.h"
|
40
37
|
|
41
38
|
namespace grpc_core {
|
@@ -43,6 +40,7 @@ namespace grpc_core {
|
|
43
40
|
class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
44
41
|
public:
|
45
42
|
RefCountedPtr<Subchannel> CreateSubchannel(
|
43
|
+
const grpc_resolved_address& address,
|
46
44
|
const grpc_channel_args* args) override {
|
47
45
|
grpc_channel_args* new_args = GetSecureNamingChannelArgs(args);
|
48
46
|
if (new_args == nullptr) {
|
@@ -50,8 +48,8 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
50
48
|
"Failed to create channel args during subchannel creation.");
|
51
49
|
return nullptr;
|
52
50
|
}
|
53
|
-
RefCountedPtr<Subchannel> s =
|
54
|
-
|
51
|
+
RefCountedPtr<Subchannel> s = Subchannel::Create(
|
52
|
+
MakeOrphanable<Chttp2Connector>(), address, new_args);
|
55
53
|
grpc_channel_args_destroy(new_args);
|
56
54
|
return s;
|
57
55
|
}
|
@@ -75,52 +73,29 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
|
|
75
73
|
return nullptr;
|
76
74
|
}
|
77
75
|
// Find the authority to use in the security connector.
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
std::string authority(FindAuthorityOverrideInArgs(args));
|
82
|
-
if (authority.empty()) {
|
83
|
-
const char* server_uri_str =
|
84
|
-
grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
|
85
|
-
GPR_ASSERT(server_uri_str != nullptr);
|
86
|
-
authority = ResolverRegistry::GetDefaultAuthority(server_uri_str);
|
87
|
-
}
|
88
|
-
grpc_arg args_to_add[2];
|
89
|
-
size_t num_args_to_add = 0;
|
90
|
-
if (grpc_channel_args_find(args, GRPC_ARG_DEFAULT_AUTHORITY) == nullptr) {
|
91
|
-
// If the channel args don't already contain GRPC_ARG_DEFAULT_AUTHORITY,
|
92
|
-
// add the arg, setting it to the value just obtained.
|
93
|
-
args_to_add[num_args_to_add++] = grpc_channel_arg_string_create(
|
94
|
-
const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
|
95
|
-
const_cast<char*>(authority.c_str()));
|
96
|
-
}
|
97
|
-
grpc_channel_args* args_with_authority =
|
98
|
-
grpc_channel_args_copy_and_add(args, args_to_add, num_args_to_add);
|
76
|
+
const char* authority =
|
77
|
+
grpc_channel_args_find_string(args, GRPC_ARG_DEFAULT_AUTHORITY);
|
78
|
+
GPR_ASSERT(authority != nullptr);
|
99
79
|
// Create the security connector using the credentials and target name.
|
100
80
|
grpc_channel_args* new_args_from_connector = nullptr;
|
101
81
|
RefCountedPtr<grpc_channel_security_connector>
|
102
82
|
subchannel_security_connector =
|
103
83
|
channel_credentials->create_security_connector(
|
104
|
-
/*call_creds=*/nullptr, authority
|
84
|
+
/*call_creds=*/nullptr, authority, args,
|
105
85
|
&new_args_from_connector);
|
106
86
|
if (subchannel_security_connector == nullptr) {
|
107
87
|
gpr_log(GPR_ERROR,
|
108
88
|
"Failed to create secure subchannel for secure name '%s'",
|
109
|
-
authority
|
110
|
-
grpc_channel_args_destroy(args_with_authority);
|
89
|
+
authority);
|
111
90
|
return nullptr;
|
112
91
|
}
|
113
92
|
grpc_arg new_security_connector_arg =
|
114
93
|
grpc_security_connector_to_arg(subchannel_security_connector.get());
|
115
94
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
|
116
|
-
new_args_from_connector != nullptr ? new_args_from_connector
|
117
|
-
: args_with_authority,
|
95
|
+
new_args_from_connector != nullptr ? new_args_from_connector : args,
|
118
96
|
&new_security_connector_arg, 1);
|
119
97
|
subchannel_security_connector.reset(DEBUG_LOCATION, "lb_channel_create");
|
120
|
-
|
121
|
-
grpc_channel_args_destroy(new_args_from_connector);
|
122
|
-
}
|
123
|
-
grpc_channel_args_destroy(args_with_authority);
|
98
|
+
grpc_channel_args_destroy(new_args_from_connector);
|
124
99
|
return new_args;
|
125
100
|
}
|
126
101
|
};
|
@@ -179,6 +154,7 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds,
|
|
179
154
|
"reserved=%p)",
|
180
155
|
4, ((void*)creds, target, (void*)args, (void*)reserved));
|
181
156
|
GPR_ASSERT(reserved == nullptr);
|
157
|
+
args = grpc_channel_args_remove_grpc_internal(args);
|
182
158
|
grpc_channel* channel = nullptr;
|
183
159
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
184
160
|
if (creds != nullptr) {
|
@@ -198,6 +174,7 @@ grpc_channel* grpc_secure_channel_create(grpc_channel_credentials* creds,
|
|
198
174
|
// Clean up.
|
199
175
|
grpc_channel_args_destroy(new_args);
|
200
176
|
}
|
177
|
+
grpc_channel_args_destroy(args);
|
201
178
|
if (channel == nullptr) {
|
202
179
|
intptr_t integer;
|
203
180
|
grpc_status_code status = GRPC_STATUS_INTERNAL;
|
@@ -221,10 +221,10 @@ class Chttp2ServerListener : public Server::ListenerInterface {
|
|
221
221
|
grpc_resolved_address resolved_address_;
|
222
222
|
Chttp2ServerArgsModifier const args_modifier_;
|
223
223
|
ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr;
|
224
|
-
|
225
|
-
|
224
|
+
grpc_channel_args* args_;
|
225
|
+
Mutex connection_manager_mu_;
|
226
226
|
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
227
|
-
connection_manager_ ABSL_GUARDED_BY(
|
227
|
+
connection_manager_ ABSL_GUARDED_BY(connection_manager_mu_);
|
228
228
|
Mutex mu_;
|
229
229
|
// Signals whether grpc_tcp_server_start() has been called.
|
230
230
|
bool started_ ABSL_GUARDED_BY(mu_) = false;
|
@@ -252,7 +252,7 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager(
|
|
252
252
|
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
253
253
|
connection_manager_to_destroy;
|
254
254
|
{
|
255
|
-
MutexLock lock(&listener_->
|
255
|
+
MutexLock lock(&listener_->connection_manager_mu_);
|
256
256
|
connection_manager_to_destroy = listener_->connection_manager_;
|
257
257
|
listener_->connection_manager_ = std::move(connection_manager);
|
258
258
|
}
|
@@ -596,6 +596,7 @@ grpc_error_handle Chttp2ServerListener::Create(
|
|
596
596
|
// The bulk of this method is inside of a lambda to make cleanup
|
597
597
|
// easier without using goto.
|
598
598
|
grpc_error_handle error = [&]() {
|
599
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
599
600
|
// Create Chttp2ServerListener.
|
600
601
|
listener = new Chttp2ServerListener(
|
601
602
|
server, args, args_modifier,
|
@@ -692,16 +693,10 @@ Chttp2ServerListener::~Chttp2ServerListener() {
|
|
692
693
|
void Chttp2ServerListener::Start(
|
693
694
|
Server* /*server*/, const std::vector<grpc_pollset*>* /* pollsets */) {
|
694
695
|
if (server_->config_fetcher() != nullptr) {
|
695
|
-
grpc_channel_args* args = nullptr;
|
696
696
|
auto watcher = absl::make_unique<ConfigFetcherWatcher>(Ref());
|
697
697
|
config_fetcher_watcher_ = watcher.get();
|
698
|
-
{
|
699
|
-
MutexLock lock(&channel_args_mu_);
|
700
|
-
args = grpc_channel_args_copy(args_);
|
701
|
-
}
|
702
698
|
server_->config_fetcher()->StartWatch(
|
703
|
-
grpc_sockaddr_to_string(&resolved_address_, false),
|
704
|
-
std::move(watcher));
|
699
|
+
grpc_sockaddr_to_string(&resolved_address_, false), std::move(watcher));
|
705
700
|
} else {
|
706
701
|
{
|
707
702
|
MutexLock lock(&mu_);
|
@@ -725,12 +720,12 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
|
725
720
|
grpc_pollset* accepting_pollset,
|
726
721
|
grpc_tcp_server_acceptor* acceptor) {
|
727
722
|
Chttp2ServerListener* self = static_cast<Chttp2ServerListener*>(arg);
|
728
|
-
grpc_channel_args* args =
|
723
|
+
grpc_channel_args* args = self->args_;
|
724
|
+
grpc_channel_args* args_to_destroy = nullptr;
|
729
725
|
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
|
730
726
|
connection_manager;
|
731
727
|
{
|
732
|
-
MutexLock lock(&self->
|
733
|
-
args = grpc_channel_args_copy(self->args_);
|
728
|
+
MutexLock lock(&self->connection_manager_mu_);
|
734
729
|
connection_manager = self->connection_manager_;
|
735
730
|
}
|
736
731
|
auto endpoint_cleanup = [&](grpc_error_handle error) {
|
@@ -743,11 +738,12 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
|
743
738
|
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
744
739
|
"No ConnectionManager configured. Closing connection.");
|
745
740
|
endpoint_cleanup(error);
|
746
|
-
grpc_channel_args_destroy(args);
|
747
741
|
return;
|
748
742
|
}
|
749
743
|
// TODO(yashykt): Maybe combine the following two arg modifiers into a
|
750
744
|
// single one.
|
745
|
+
// Make a copy of the args so as to avoid destroying the original.
|
746
|
+
args = grpc_channel_args_copy(args);
|
751
747
|
absl::StatusOr<grpc_channel_args*> args_result =
|
752
748
|
connection_manager->UpdateChannelArgsForConnection(args, tcp);
|
753
749
|
if (!args_result.ok()) {
|
@@ -766,6 +762,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
|
766
762
|
grpc_channel_args_destroy(args);
|
767
763
|
return;
|
768
764
|
}
|
765
|
+
args_to_destroy = args;
|
769
766
|
}
|
770
767
|
grpc_resource_user* channel_resource_user = grpc_resource_user_create(
|
771
768
|
self->resource_quota_,
|
@@ -803,7 +800,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
|
|
803
800
|
} else {
|
804
801
|
connection_ref->Start(std::move(listener_ref), tcp, args);
|
805
802
|
}
|
806
|
-
grpc_channel_args_destroy(
|
803
|
+
grpc_channel_args_destroy(args_to_destroy);
|
807
804
|
}
|
808
805
|
|
809
806
|
void Chttp2ServerListener::TcpServerShutdownComplete(void* arg,
|
@@ -861,6 +858,7 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
|
|
861
858
|
std::vector<grpc_error_handle> error_list;
|
862
859
|
// Using lambda to avoid use of goto.
|
863
860
|
grpc_error_handle error = [&]() {
|
861
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
864
862
|
if (absl::StartsWith(addr, kUnixUriPrefix)) {
|
865
863
|
error = grpc_resolve_unix_domain_address(
|
866
864
|
addr + sizeof(kUnixUriPrefix) - 1, &resolved);
|
@@ -646,8 +646,8 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
|
|
646
646
|
: t(t),
|
647
647
|
refcount(refcount),
|
648
648
|
reffer(this),
|
649
|
-
|
650
|
-
|
649
|
+
initial_metadata_buffer(arena),
|
650
|
+
trailing_metadata_buffer(arena) {
|
651
651
|
if (server_data) {
|
652
652
|
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
|
653
653
|
*t->accepting_stream = this;
|
@@ -1064,7 +1064,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1064
1064
|
grpc_chttp2_setting_id id, uint32_t value) {
|
1065
1065
|
const grpc_chttp2_setting_parameters* sp =
|
1066
1066
|
&grpc_chttp2_settings_parameters[id];
|
1067
|
-
uint32_t use_value =
|
1067
|
+
uint32_t use_value = grpc_core::Clamp(value, sp->min_value, sp->max_value);
|
1068
1068
|
if (use_value != value) {
|
1069
1069
|
gpr_log(GPR_INFO, "Requested parameter %s clamped from %d to %d", sp->name,
|
1070
1070
|
value, use_value);
|
@@ -1078,7 +1078,7 @@ static void queue_setting_update(grpc_chttp2_transport* t,
|
|
1078
1078
|
void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
1079
1079
|
uint32_t goaway_error,
|
1080
1080
|
uint32_t last_stream_id,
|
1081
|
-
|
1081
|
+
absl::string_view goaway_text) {
|
1082
1082
|
// Discard the error from a previous goaway frame (if any)
|
1083
1083
|
if (t->goaway_error != GRPC_ERROR_NONE) {
|
1084
1084
|
GRPC_ERROR_UNREF(t->goaway_error);
|
@@ -1107,7 +1107,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1107
1107
|
// for new connections on that channel.
|
1108
1108
|
if (GPR_UNLIKELY(t->is_client &&
|
1109
1109
|
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
|
1110
|
-
|
1110
|
+
goaway_text == "too_many_pings")) {
|
1111
1111
|
gpr_log(GPR_ERROR,
|
1112
1112
|
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1113
1113
|
"data equal to \"too_many_pings\"");
|
@@ -1230,9 +1230,9 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1230
1230
|
if (closure->error_data.error == GRPC_ERROR_NONE) {
|
1231
1231
|
closure->error_data.error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1232
1232
|
"Error in HTTP transport completing operation");
|
1233
|
-
closure->error_data.error =
|
1234
|
-
closure->error_data.error,
|
1235
|
-
|
1233
|
+
closure->error_data.error =
|
1234
|
+
grpc_error_set_str(closure->error_data.error,
|
1235
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, t->peer_string);
|
1236
1236
|
}
|
1237
1237
|
closure->error_data.error =
|
1238
1238
|
grpc_error_add_child(closure->error_data.error, error);
|
@@ -1252,9 +1252,10 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1252
1252
|
}
|
1253
1253
|
|
1254
1254
|
static bool contains_non_ok_status(grpc_metadata_batch* batch) {
|
1255
|
-
if (batch->
|
1256
|
-
return !grpc_mdelem_static_value_eq(
|
1257
|
-
|
1255
|
+
if (batch->legacy_index()->named.grpc_status != nullptr) {
|
1256
|
+
return !grpc_mdelem_static_value_eq(
|
1257
|
+
batch->legacy_index()->named.grpc_status->md,
|
1258
|
+
GRPC_MDELEM_GRPC_STATUS_0);
|
1258
1259
|
}
|
1259
1260
|
return false;
|
1260
1261
|
}
|
@@ -1349,15 +1350,14 @@ static void complete_fetch_locked(void* gs, grpc_error_handle error) {
|
|
1349
1350
|
|
1350
1351
|
static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
1351
1352
|
bool is_client, bool is_initial) {
|
1352
|
-
|
1353
|
-
|
1354
|
-
char*
|
1355
|
-
char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md->md));
|
1353
|
+
md_batch->ForEach([=](grpc_mdelem md) {
|
1354
|
+
char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
|
1355
|
+
char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md));
|
1356
1356
|
gpr_log(GPR_INFO, "HTTP:%d:%s:%s: %s: %s", id, is_initial ? "HDR" : "TRL",
|
1357
1357
|
is_client ? "CLI" : "SVR", key, value);
|
1358
1358
|
gpr_free(key);
|
1359
1359
|
gpr_free(value);
|
1360
|
-
}
|
1360
|
+
});
|
1361
1361
|
}
|
1362
1362
|
|
1363
1363
|
static void perform_stream_op_locked(void* stream_op,
|
@@ -1411,12 +1411,13 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1411
1411
|
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
|
1412
1412
|
|
1413
1413
|
// Identify stream compression
|
1414
|
-
if (op_payload->send_initial_metadata.send_initial_metadata->
|
1415
|
-
.content_encoding == nullptr ||
|
1414
|
+
if (op_payload->send_initial_metadata.send_initial_metadata->legacy_index()
|
1415
|
+
->named.content_encoding == nullptr ||
|
1416
1416
|
grpc_stream_compression_method_parse(
|
1417
1417
|
GRPC_MDVALUE(
|
1418
|
-
op_payload->send_initial_metadata.send_initial_metadata
|
1419
|
-
|
1418
|
+
op_payload->send_initial_metadata.send_initial_metadata
|
1419
|
+
->legacy_index()
|
1420
|
+
->named.content_encoding->md),
|
1420
1421
|
true, &s->stream_compression_method) == 0) {
|
1421
1422
|
s->stream_compression_method = GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS;
|
1422
1423
|
}
|
@@ -1430,7 +1431,10 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1430
1431
|
s->send_initial_metadata =
|
1431
1432
|
op_payload->send_initial_metadata.send_initial_metadata;
|
1432
1433
|
if (t->is_client) {
|
1433
|
-
s->deadline =
|
1434
|
+
s->deadline = std::min(
|
1435
|
+
s->deadline,
|
1436
|
+
s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
|
1437
|
+
.value_or(GRPC_MILLIS_INF_FUTURE));
|
1434
1438
|
}
|
1435
1439
|
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1436
1440
|
s->seen_error = true;
|
@@ -1536,8 +1540,7 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1536
1540
|
s->sent_trailing_metadata_op = nullptr;
|
1537
1541
|
grpc_chttp2_complete_closure_step(
|
1538
1542
|
t, s, &s->send_trailing_metadata_finished,
|
1539
|
-
|
1540
|
-
op->payload->send_trailing_metadata.send_trailing_metadata)
|
1543
|
+
op->payload->send_trailing_metadata.send_trailing_metadata->empty()
|
1541
1544
|
? GRPC_ERROR_NONE
|
1542
1545
|
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1543
1546
|
"Attempt to send trailing metadata after "
|
@@ -1623,14 +1626,14 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1623
1626
|
|
1624
1627
|
if (!t->is_client) {
|
1625
1628
|
if (op->send_initial_metadata) {
|
1626
|
-
|
1627
|
-
|
1628
|
-
|
1629
|
+
GPR_ASSERT(!op->payload->send_initial_metadata.send_initial_metadata
|
1630
|
+
->get(grpc_core::GrpcTimeoutMetadata())
|
1631
|
+
.has_value());
|
1629
1632
|
}
|
1630
1633
|
if (op->send_trailing_metadata) {
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1634
|
+
GPR_ASSERT(!op->payload->send_trailing_metadata.send_trailing_metadata
|
1635
|
+
->get(grpc_core::GrpcTimeoutMetadata())
|
1636
|
+
.has_value());
|
1634
1637
|
}
|
1635
1638
|
}
|
1636
1639
|
|
@@ -1749,12 +1752,12 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
|
|
1749
1752
|
grpc_error_std_string(error).c_str());
|
1750
1753
|
t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
|
1751
1754
|
grpc_http2_error_code http_error;
|
1752
|
-
|
1753
|
-
grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &
|
1755
|
+
std::string message;
|
1756
|
+
grpc_error_get_status(error, GRPC_MILLIS_INF_FUTURE, nullptr, &message,
|
1754
1757
|
&http_error, nullptr);
|
1755
|
-
grpc_chttp2_goaway_append(
|
1756
|
-
|
1757
|
-
|
1758
|
+
grpc_chttp2_goaway_append(
|
1759
|
+
t->last_new_stream_id, static_cast<uint32_t>(http_error),
|
1760
|
+
grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
|
1758
1761
|
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
|
1759
1762
|
GRPC_ERROR_UNREF(error);
|
1760
1763
|
}
|
@@ -1856,8 +1859,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
|
|
1856
1859
|
&s->unprocessed_incoming_frames_buffer);
|
1857
1860
|
}
|
1858
1861
|
}
|
1859
|
-
|
1860
|
-
s->recv_initial_metadata);
|
1862
|
+
*s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
|
1861
1863
|
null_then_sched_closure(&s->recv_initial_metadata_ready);
|
1862
1864
|
}
|
1863
1865
|
}
|
@@ -1973,7 +1975,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
1973
1975
|
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS) {
|
1974
1976
|
grpc_slice_buffer_move_first(
|
1975
1977
|
&s->frame_storage,
|
1976
|
-
|
1978
|
+
std::min(s->frame_storage.length,
|
1979
|
+
size_t(GRPC_HEADER_SIZE_IN_BYTES)),
|
1977
1980
|
&s->unprocessed_incoming_frames_buffer);
|
1978
1981
|
if (s->unprocessed_incoming_frames_buffer.length > 0) {
|
1979
1982
|
s->unprocessed_incoming_frames_decompressed = true;
|
@@ -2010,8 +2013,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
|
2010
2013
|
s->recv_trailing_metadata_finished != nullptr) {
|
2011
2014
|
grpc_transport_move_stats(&s->stats, s->collecting_stats);
|
2012
2015
|
s->collecting_stats = nullptr;
|
2013
|
-
|
2014
|
-
s->recv_trailing_metadata);
|
2016
|
+
*s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
|
2015
2017
|
null_then_sched_closure(&s->recv_trailing_metadata_finished);
|
2016
2018
|
}
|
2017
2019
|
}
|
@@ -2087,8 +2089,9 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2087
2089
|
void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
2088
2090
|
grpc_error_handle error) {
|
2089
2091
|
grpc_status_code status;
|
2090
|
-
|
2091
|
-
grpc_error_get_status(error, s->deadline, &status, &
|
2092
|
+
std::string message;
|
2093
|
+
grpc_error_get_status(error, s->deadline, &status, &message, nullptr,
|
2094
|
+
nullptr);
|
2092
2095
|
if (status != GRPC_STATUS_OK) {
|
2093
2096
|
s->seen_error = true;
|
2094
2097
|
}
|
@@ -2103,17 +2106,14 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2103
2106
|
char status_string[GPR_LTOA_MIN_BUFSIZE];
|
2104
2107
|
gpr_ltoa(status, status_string);
|
2105
2108
|
GRPC_LOG_IF_ERROR("add_status",
|
2106
|
-
|
2107
|
-
|
2108
|
-
|
2109
|
-
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2113
|
-
|
2114
|
-
grpc_chttp2_incoming_metadata_buffer_replace_or_add(
|
2115
|
-
&s->metadata_buffer[1],
|
2116
|
-
grpc_mdelem_create(GRPC_MDSTR_GRPC_MESSAGE, slice, nullptr)));
|
2109
|
+
s->trailing_metadata_buffer.ReplaceOrAppend(
|
2110
|
+
GRPC_MDSTR_GRPC_STATUS,
|
2111
|
+
grpc_core::UnmanagedMemorySlice(status_string)));
|
2112
|
+
if (!message.empty()) {
|
2113
|
+
grpc_slice message_slice = grpc_slice_from_cpp_string(std::move(message));
|
2114
|
+
GRPC_LOG_IF_ERROR("add_status_message",
|
2115
|
+
s->trailing_metadata_buffer.ReplaceOrAppend(
|
2116
|
+
GRPC_MDSTR_GRPC_MESSAGE, message_slice));
|
2117
2117
|
}
|
2118
2118
|
s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
|
2119
2119
|
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
@@ -2253,8 +2253,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2253
2253
|
uint8_t* p;
|
2254
2254
|
uint32_t len = 0;
|
2255
2255
|
grpc_status_code grpc_status;
|
2256
|
-
|
2257
|
-
grpc_error_get_status(error, s->deadline, &grpc_status, &
|
2256
|
+
std::string message;
|
2257
|
+
grpc_error_get_status(error, s->deadline, &grpc_status, &message, nullptr,
|
2258
2258
|
nullptr);
|
2259
2259
|
|
2260
2260
|
GPR_ASSERT(grpc_status >= 0 && (int)grpc_status < 100);
|
@@ -2347,7 +2347,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2347
2347
|
GPR_ASSERT(p == GRPC_SLICE_END_PTR(status_hdr));
|
2348
2348
|
len += static_cast<uint32_t> GRPC_SLICE_LENGTH(status_hdr);
|
2349
2349
|
|
2350
|
-
size_t msg_len =
|
2350
|
+
size_t msg_len = message.length();
|
2351
2351
|
GPR_ASSERT(msg_len <= UINT32_MAX);
|
2352
2352
|
grpc_core::VarintWriter<1> msg_len_writer(msg_len);
|
2353
2353
|
message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
|
@@ -2392,7 +2392,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
|
|
2392
2392
|
}
|
2393
2393
|
grpc_slice_buffer_add(&t->qbuf, status_hdr);
|
2394
2394
|
grpc_slice_buffer_add(&t->qbuf, message_pfx);
|
2395
|
-
grpc_slice_buffer_add(&t->qbuf,
|
2395
|
+
grpc_slice_buffer_add(&t->qbuf,
|
2396
|
+
grpc_slice_from_cpp_string(std::move(message)));
|
2396
2397
|
grpc_chttp2_reset_ping_clock(t);
|
2397
2398
|
grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
|
2398
2399
|
&s->stats.outgoing);
|
@@ -2508,7 +2509,7 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
|
|
2508
2509
|
|
2509
2510
|
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
|
2510
2511
|
|
2511
|
-
GRPC_ERROR_REF(error);
|
2512
|
+
(void)GRPC_ERROR_REF(error);
|
2512
2513
|
|
2513
2514
|
grpc_error_handle err = error;
|
2514
2515
|
if (err != GRPC_ERROR_NONE) {
|
@@ -2517,7 +2518,7 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
|
|
2517
2518
|
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
|
2518
2519
|
t->write_state);
|
2519
2520
|
}
|
2520
|
-
|
2521
|
+
std::swap(err, error);
|
2521
2522
|
GRPC_ERROR_UNREF(err);
|
2522
2523
|
if (t->closed_with_error == GRPC_ERROR_NONE) {
|
2523
2524
|
GPR_TIMER_SCOPE("reading_action.parse", 0);
|