grpc 1.47.0 → 1.48.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- 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/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -707,7 +707,7 @@ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
|
|
707
707
|
grpc_error_handle error) {
|
708
708
|
*rc->call = nullptr;
|
709
709
|
rc->initial_metadata->count = 0;
|
710
|
-
GPR_ASSERT(error
|
710
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
711
711
|
grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc,
|
712
712
|
&rc->completion);
|
713
713
|
}
|
@@ -829,8 +829,13 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
829
829
|
if (await_requests != nullptr) {
|
830
830
|
await_requests->WaitForNotification();
|
831
831
|
}
|
832
|
-
|
832
|
+
StopListening();
|
833
|
+
broadcaster.BroadcastShutdown(/*send_goaway=*/true, GRPC_ERROR_NONE);
|
834
|
+
}
|
835
|
+
|
836
|
+
void Server::StopListening() {
|
833
837
|
for (auto& listener : listeners_) {
|
838
|
+
if (listener.listener == nullptr) continue;
|
834
839
|
channelz::ListenSocketNode* channelz_listen_socket_node =
|
835
840
|
listener.listener->channelz_listen_socket_node();
|
836
841
|
if (channelz_node_ != nullptr && channelz_listen_socket_node != nullptr) {
|
@@ -842,7 +847,6 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
|
|
842
847
|
listener.listener->SetOnDestroyDone(&listener.destroy_done);
|
843
848
|
listener.listener.reset();
|
844
849
|
}
|
845
|
-
broadcaster.BroadcastShutdown(/*send_goaway=*/true, GRPC_ERROR_NONE);
|
846
850
|
}
|
847
851
|
|
848
852
|
void Server::CancelAllCalls() {
|
@@ -1117,7 +1121,7 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
|
|
1117
1121
|
grpc_call_element* elem =
|
1118
1122
|
grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
|
1119
1123
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
1120
|
-
if (error
|
1124
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1121
1125
|
GRPC_ERROR_UNREF(error);
|
1122
1126
|
calld->FailCallCreation();
|
1123
1127
|
return;
|
@@ -1269,7 +1273,7 @@ void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) {
|
|
1269
1273
|
auto* chand = static_cast<Server::ChannelData*>(call_elem->channel_data);
|
1270
1274
|
RequestMatcherInterface* rm = calld->matcher_;
|
1271
1275
|
Server* server = rm->server();
|
1272
|
-
if (error
|
1276
|
+
if (!GRPC_ERROR_IS_NONE(error) || server->ShutdownCalled()) {
|
1273
1277
|
calld->state_.store(CallState::ZOMBIED, std::memory_order_relaxed);
|
1274
1278
|
calld->KillZombie();
|
1275
1279
|
return;
|
@@ -1333,7 +1337,7 @@ void Server::CallData::RecvInitialMetadataBatchComplete(
|
|
1333
1337
|
void* arg, grpc_error_handle error) {
|
1334
1338
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1335
1339
|
auto* calld = static_cast<Server::CallData*>(elem->call_data);
|
1336
|
-
if (error
|
1340
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1337
1341
|
gpr_log(GPR_DEBUG, "Failed call creation: %s",
|
1338
1342
|
grpc_error_std_string(error).c_str());
|
1339
1343
|
calld->FailCallCreation();
|
@@ -1368,9 +1372,11 @@ void Server::CallData::RecvInitialMetadataReady(void* arg,
|
|
1368
1372
|
grpc_error_handle error) {
|
1369
1373
|
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
|
1370
1374
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
1371
|
-
if (error
|
1375
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
1372
1376
|
calld->path_ = calld->recv_initial_metadata_->Take(HttpPathMetadata());
|
1373
|
-
|
1377
|
+
auto* host =
|
1378
|
+
calld->recv_initial_metadata_->get_pointer(HttpAuthorityMetadata());
|
1379
|
+
if (host != nullptr) calld->host_.emplace(host->Ref());
|
1374
1380
|
} else {
|
1375
1381
|
(void)GRPC_ERROR_REF(error);
|
1376
1382
|
}
|
@@ -43,8 +43,8 @@
|
|
43
43
|
#include <grpc/support/log.h>
|
44
44
|
|
45
45
|
#include "src/core/lib/channel/channel_args.h"
|
46
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
46
47
|
#include "src/core/lib/channel/channel_stack.h"
|
47
|
-
#include "src/core/lib/channel/channel_stack_builder.h"
|
48
48
|
#include "src/core/lib/channel/channelz.h"
|
49
49
|
#include "src/core/lib/debug/trace.h"
|
50
50
|
#include "src/core/lib/gprpp/cpp_impl_of.h"
|
@@ -64,6 +64,7 @@
|
|
64
64
|
#include "src/core/lib/surface/completion_queue.h"
|
65
65
|
#include "src/core/lib/transport/metadata_batch.h"
|
66
66
|
#include "src/core/lib/transport/transport.h"
|
67
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
67
68
|
|
68
69
|
struct grpc_server_config_fetcher;
|
69
70
|
|
@@ -194,6 +195,8 @@ class Server : public InternallyRefCounted<Server>,
|
|
194
195
|
void ShutdownAndNotify(grpc_completion_queue* cq, void* tag)
|
195
196
|
ABSL_LOCKS_EXCLUDED(mu_global_, mu_call_);
|
196
197
|
|
198
|
+
void StopListening();
|
199
|
+
|
197
200
|
void CancelAllCalls() ABSL_LOCKS_EXCLUDED(mu_global_);
|
198
201
|
|
199
202
|
void SendGoaways() ABSL_LOCKS_EXCLUDED(mu_global_, mu_call_);
|
@@ -23,6 +23,6 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
-
const char* grpc_version_string(void) { return "
|
26
|
+
const char* grpc_version_string(void) { return "26.0.0"; }
|
27
27
|
|
28
|
-
const char* grpc_g_stands_for(void) { return "
|
28
|
+
const char* grpc_g_stands_for(void) { return "garum"; }
|
@@ -22,13 +22,19 @@
|
|
22
22
|
|
23
23
|
#include <stdint.h>
|
24
24
|
|
25
|
+
#include <vector>
|
26
|
+
|
25
27
|
#include "absl/strings/string_view.h"
|
26
28
|
|
27
29
|
#include <grpc/support/string_util.h>
|
28
30
|
|
29
|
-
#include "src/core/lib/
|
31
|
+
#include "src/core/lib/gprpp/status_helper.h"
|
30
32
|
#include "src/core/lib/transport/status_conversion.h"
|
31
33
|
|
34
|
+
#ifndef GRPC_ERROR_IS_ABSEIL_STATUS
|
35
|
+
#include "src/core/lib/iomgr/error_internal.h"
|
36
|
+
#endif
|
37
|
+
|
32
38
|
static grpc_error_handle recursively_find_error_with_field(
|
33
39
|
grpc_error_handle error, grpc_error_ints which) {
|
34
40
|
intptr_t unused;
|
@@ -40,7 +46,7 @@ static grpc_error_handle recursively_find_error_with_field(
|
|
40
46
|
std::vector<absl::Status> children = grpc_core::StatusGetChildren(error);
|
41
47
|
for (const absl::Status& child : children) {
|
42
48
|
grpc_error_handle result = recursively_find_error_with_field(child, which);
|
43
|
-
if (result
|
49
|
+
if (!GRPC_ERROR_IS_NONE(result)) return result;
|
44
50
|
}
|
45
51
|
#else
|
46
52
|
if (grpc_error_is_special(error)) return GRPC_ERROR_NONE;
|
@@ -64,7 +70,7 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
64
70
|
grpc_http2_error_code* http_error,
|
65
71
|
const char** error_string) {
|
66
72
|
// Fast path: We expect no error.
|
67
|
-
if (GPR_LIKELY(error
|
73
|
+
if (GPR_LIKELY(GRPC_ERROR_IS_NONE(error))) {
|
68
74
|
if (code != nullptr) *code = GRPC_STATUS_OK;
|
69
75
|
if (message != nullptr) {
|
70
76
|
// Normally, we call grpc_error_get_str(
|
@@ -87,7 +93,7 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
87
93
|
// until we find the first one that has a status code.
|
88
94
|
grpc_error_handle found_error =
|
89
95
|
recursively_find_error_with_field(error, GRPC_ERROR_INT_GRPC_STATUS);
|
90
|
-
if (found_error
|
96
|
+
if (GRPC_ERROR_IS_NONE(found_error)) {
|
91
97
|
/// If no grpc-status exists, retry through the tree to find a http2 error
|
92
98
|
/// code
|
93
99
|
found_error =
|
@@ -96,7 +102,7 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
96
102
|
|
97
103
|
// If we found an error with a status code above, use that; otherwise,
|
98
104
|
// fall back to using the parent error.
|
99
|
-
if (found_error
|
105
|
+
if (GRPC_ERROR_IS_NONE(found_error)) found_error = error;
|
100
106
|
|
101
107
|
grpc_status_code status = GRPC_STATUS_UNKNOWN;
|
102
108
|
intptr_t integer;
|
@@ -125,8 +131,8 @@ void grpc_error_get_status(grpc_error_handle error,
|
|
125
131
|
*http_error =
|
126
132
|
grpc_status_to_http2_error(static_cast<grpc_status_code>(integer));
|
127
133
|
} else {
|
128
|
-
*http_error = found_error
|
129
|
-
|
134
|
+
*http_error = GRPC_ERROR_IS_NONE(found_error) ? GRPC_HTTP2_NO_ERROR
|
135
|
+
: GRPC_HTTP2_INTERNAL_ERROR;
|
130
136
|
}
|
131
137
|
}
|
132
138
|
|
@@ -100,9 +100,9 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
|
|
100
100
|
// If we got an error or we've been shut down or we're exiting early or
|
101
101
|
// we've finished the last handshaker, invoke the on_handshake_done
|
102
102
|
// callback. Otherwise, call the next handshaker.
|
103
|
-
if (error
|
103
|
+
if (!GRPC_ERROR_IS_NONE(error) || is_shutdown_ || args_.exit_early ||
|
104
104
|
index_ == handshakers_.size()) {
|
105
|
-
if (error
|
105
|
+
if (GRPC_ERROR_IS_NONE(error) && is_shutdown_) {
|
106
106
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("handshaker shutdown");
|
107
107
|
// It is possible that the endpoint has already been destroyed by
|
108
108
|
// a shutdown call while this callback was sitting on the ExecCtx
|
@@ -165,7 +165,7 @@ void HandshakeManager::CallNextHandshakerFn(void* arg,
|
|
165
165
|
|
166
166
|
void HandshakeManager::OnTimeoutFn(void* arg, grpc_error_handle error) {
|
167
167
|
auto* mgr = static_cast<HandshakeManager*>(arg);
|
168
|
-
if (error
|
168
|
+
if (GRPC_ERROR_IS_NONE(error)) { // Timer fired, rather than being cancelled
|
169
169
|
mgr->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out"));
|
170
170
|
}
|
171
171
|
mgr->Unref();
|
@@ -125,7 +125,7 @@ void HttpConnectHandshaker::CleanupArgsForFailureLocked() {
|
|
125
125
|
// If the handshake failed or we're shutting down, clean up and invoke the
|
126
126
|
// callback with the error.
|
127
127
|
void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
|
128
|
-
if (error
|
128
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
129
129
|
// If we were shut down after an endpoint operation succeeded but
|
130
130
|
// before the endpoint callback was invoked, we need to generate our
|
131
131
|
// own error.
|
@@ -164,7 +164,7 @@ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg,
|
|
164
164
|
void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error_handle error) {
|
165
165
|
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
|
166
166
|
ReleasableMutexLock lock(&handshaker->mu_);
|
167
|
-
if (error
|
167
|
+
if (!GRPC_ERROR_IS_NONE(error) || handshaker->is_shutdown_) {
|
168
168
|
// If the write failed or we're shutting down, clean up and invoke the
|
169
169
|
// callback with the error.
|
170
170
|
handshaker->HandshakeFailedLocked(GRPC_ERROR_REF(error));
|
@@ -198,7 +198,7 @@ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg,
|
|
198
198
|
void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
|
199
199
|
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
|
200
200
|
ReleasableMutexLock lock(&handshaker->mu_);
|
201
|
-
if (error
|
201
|
+
if (!GRPC_ERROR_IS_NONE(error) || handshaker->is_shutdown_) {
|
202
202
|
// If the read failed or we're shutting down, clean up and invoke the
|
203
203
|
// callback with the error.
|
204
204
|
handshaker->HandshakeFailedLocked(GRPC_ERROR_REF(error));
|
@@ -211,7 +211,7 @@ void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
|
|
211
211
|
error = grpc_http_parser_parse(&handshaker->http_parser_,
|
212
212
|
handshaker->args_->read_buffer->slices[i],
|
213
213
|
&body_start_offset);
|
214
|
-
if (error
|
214
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
215
215
|
handshaker->HandshakeFailedLocked(error);
|
216
216
|
goto done;
|
217
217
|
}
|
@@ -169,8 +169,8 @@ void TCPConnectHandshaker::Connected(void* arg, grpc_error_handle error) {
|
|
169
169
|
static_cast<TCPConnectHandshaker*>(arg));
|
170
170
|
{
|
171
171
|
MutexLock lock(&self->mu_);
|
172
|
-
if (error
|
173
|
-
if (error
|
172
|
+
if (!GRPC_ERROR_IS_NONE(error) || self->shutdown_) {
|
173
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
174
174
|
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("tcp handshaker shutdown");
|
175
175
|
} else {
|
176
176
|
error = GRPC_ERROR_REF(error);
|
@@ -161,9 +161,6 @@ void grpc_transport_stream_op_batch_finish_with_failure(
|
|
161
161
|
void grpc_transport_stream_op_batch_queue_finish_with_failure(
|
162
162
|
grpc_transport_stream_op_batch* batch, grpc_error_handle error,
|
163
163
|
grpc_core::CallCombinerClosureList* closures) {
|
164
|
-
if (batch->send_message) {
|
165
|
-
batch->payload->send_message.send_message.reset();
|
166
|
-
}
|
167
164
|
if (batch->cancel_stream) {
|
168
165
|
GRPC_ERROR_UNREF(batch->payload->cancel_stream.cancel_error);
|
169
166
|
}
|
@@ -55,9 +55,10 @@
|
|
55
55
|
#include "src/core/lib/promise/latch.h"
|
56
56
|
#include "src/core/lib/resource_quota/arena.h"
|
57
57
|
#include "src/core/lib/slice/slice.h"
|
58
|
-
#include "src/core/lib/
|
58
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
59
59
|
#include "src/core/lib/transport/connectivity_state.h"
|
60
60
|
#include "src/core/lib/transport/metadata_batch.h"
|
61
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
61
62
|
|
62
63
|
struct grpc_transport_stream_op_batch_payload;
|
63
64
|
|
@@ -69,6 +70,17 @@ struct grpc_transport_stream_op_batch_payload;
|
|
69
70
|
|
70
71
|
#define GRPC_ARG_TRANSPORT "grpc.internal.transport"
|
71
72
|
|
73
|
+
/** Internal bit flag for grpc_begin_message's \a flags signaling the use of
|
74
|
+
* compression for the message. (Does not apply for stream compression.) */
|
75
|
+
#define GRPC_WRITE_INTERNAL_COMPRESS (0x80000000u)
|
76
|
+
/** Internal bit flag for determining whether the message was compressed and had
|
77
|
+
* to be decompressed by the message_decompress filter. (Does not apply for
|
78
|
+
* stream compression.) */
|
79
|
+
#define GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED (0x40000000u)
|
80
|
+
/** Mask of all valid internal flags. */
|
81
|
+
#define GRPC_WRITE_INTERNAL_USED_MASK \
|
82
|
+
(GRPC_WRITE_INTERNAL_COMPRESS | GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED)
|
83
|
+
|
72
84
|
namespace grpc_core {
|
73
85
|
// TODO(ctiller): eliminate once MetadataHandle is constructable directly.
|
74
86
|
namespace promise_filter_detail {
|
@@ -156,8 +168,6 @@ using NextPromiseFactory =
|
|
156
168
|
|
157
169
|
/* forward declarations */
|
158
170
|
|
159
|
-
typedef struct grpc_transport grpc_transport;
|
160
|
-
|
161
171
|
/* grpc_stream doesn't actually exist. It's used as a typesafe
|
162
172
|
opaque pointer for whatever data the transport wants to track
|
163
173
|
for a stream. */
|
@@ -332,12 +342,6 @@ struct grpc_transport_stream_op_batch_payload {
|
|
332
342
|
explicit grpc_transport_stream_op_batch_payload(
|
333
343
|
grpc_call_context_element* context)
|
334
344
|
: context(context) {}
|
335
|
-
~grpc_transport_stream_op_batch_payload() {
|
336
|
-
// We don't really own `send_message`, so release ownership and let the
|
337
|
-
// owner clean the data.
|
338
|
-
(void)send_message.send_message.release();
|
339
|
-
}
|
340
|
-
|
341
345
|
struct {
|
342
346
|
grpc_metadata_batch* send_initial_metadata = nullptr;
|
343
347
|
/** Iff send_initial_metadata != NULL, flags associated with
|
@@ -366,7 +370,8 @@ struct grpc_transport_stream_op_batch_payload {
|
|
366
370
|
// the op gets down to the transport) takes ownership.
|
367
371
|
// The batch's on_complete will not be called until after the byte
|
368
372
|
// stream is orphaned.
|
369
|
-
grpc_core::
|
373
|
+
grpc_core::SliceBuffer* send_message;
|
374
|
+
uint32_t flags = 0;
|
370
375
|
// Set by the transport if the stream has been closed for writes. If this
|
371
376
|
// is set and send message op is present, we set the operation to be a
|
372
377
|
// failure without sending a cancel OP down the stack. This is so that the
|
@@ -405,10 +410,11 @@ struct grpc_transport_stream_op_batch_payload {
|
|
405
410
|
} recv_initial_metadata;
|
406
411
|
|
407
412
|
struct {
|
408
|
-
// Will be set by the transport to point to the byte stream
|
409
|
-
//
|
410
|
-
//
|
411
|
-
|
413
|
+
// Will be set by the transport to point to the byte stream containing a
|
414
|
+
// received message. Will be nullopt if trailing metadata is received
|
415
|
+
// instead of a message.
|
416
|
+
absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
|
417
|
+
uint32_t* flags = nullptr;
|
412
418
|
// Was this recv_message failed for reasons other than a clean end-of-stream
|
413
419
|
bool* call_failed_before_recv_message = nullptr;
|
414
420
|
/** Should be enqueued when one message is ready to be processed. */
|
@@ -0,0 +1,20 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
|
16
|
+
#define GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
|
17
|
+
|
18
|
+
typedef struct grpc_transport grpc_transport;
|
19
|
+
|
20
|
+
#endif // GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
|
@@ -32,6 +32,7 @@
|
|
32
32
|
#include "src/core/lib/promise/arena_promise.h"
|
33
33
|
#include "src/core/lib/resource_quota/arena.h"
|
34
34
|
#include "src/core/lib/transport/transport.h"
|
35
|
+
#include "src/core/lib/transport/transport_fwd.h"
|
35
36
|
|
36
37
|
typedef struct grpc_transport_vtable {
|
37
38
|
/* Memory required for a single stream element - this is allocated by upper
|
@@ -29,10 +29,11 @@
|
|
29
29
|
|
30
30
|
#include <grpc/support/log.h>
|
31
31
|
|
32
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
32
33
|
#include "src/core/lib/channel/channel_stack.h"
|
33
34
|
#include "src/core/lib/gprpp/orphanable.h"
|
34
35
|
#include "src/core/lib/iomgr/error.h"
|
35
|
-
#include "src/core/lib/
|
36
|
+
#include "src/core/lib/slice/slice_buffer.h"
|
36
37
|
#include "src/core/lib/transport/connectivity_state.h"
|
37
38
|
#include "src/core/lib/transport/metadata_batch.h"
|
38
39
|
#include "src/core/lib/transport/transport.h"
|
@@ -53,10 +54,9 @@ std::string grpc_transport_stream_op_batch_string(
|
|
53
54
|
|
54
55
|
if (op->send_message) {
|
55
56
|
if (op->payload->send_message.send_message != nullptr) {
|
56
|
-
out.push_back(
|
57
|
-
|
58
|
-
|
59
|
-
op->payload->send_message.send_message->length()));
|
57
|
+
out.push_back(absl::StrFormat(
|
58
|
+
" SEND_MESSAGE:flags=0x%08x:len=%d", op->payload->send_message.flags,
|
59
|
+
op->payload->send_message.send_message->Length()));
|
60
60
|
} else {
|
61
61
|
// This can happen when we check a batch after the transport has
|
62
62
|
// processed and cleared the send_message op.
|
@@ -107,14 +107,14 @@ std::string grpc_transport_op_string(grpc_transport_op* op) {
|
|
107
107
|
op->stop_connectivity_watch));
|
108
108
|
}
|
109
109
|
|
110
|
-
if (op->disconnect_with_error
|
110
|
+
if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
|
111
111
|
out.push_back(absl::StrCat(
|
112
112
|
" DISCONNECT:", grpc_error_std_string(op->disconnect_with_error)));
|
113
113
|
}
|
114
114
|
|
115
|
-
if (op->goaway_error
|
116
|
-
out.push_back(
|
117
|
-
|
115
|
+
if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
|
116
|
+
out.push_back(
|
117
|
+
absl::StrCat(" SEND_GOAWAY:", grpc_error_std_string(op->goaway_error)));
|
118
118
|
}
|
119
119
|
|
120
120
|
if (op->set_accept_stream) {
|
@@ -391,7 +391,7 @@ static void on_handshaker_service_resp_recv(void* arg,
|
|
391
391
|
return;
|
392
392
|
}
|
393
393
|
bool success = true;
|
394
|
-
if (error
|
394
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
395
395
|
gpr_log(GPR_INFO,
|
396
396
|
"ALTS handshaker on_handshaker_service_resp_recv error: %s",
|
397
397
|
grpc_error_std_string(error).c_str());
|
@@ -174,7 +174,7 @@ static tsi_result alts_zero_copy_grpc_protector_protect(
|
|
174
174
|
|
175
175
|
static tsi_result alts_zero_copy_grpc_protector_unprotect(
|
176
176
|
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
|
177
|
-
grpc_slice_buffer* unprotected_slices) {
|
177
|
+
grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
|
178
178
|
if (self == nullptr || unprotected_slices == nullptr ||
|
179
179
|
protected_slices == nullptr) {
|
180
180
|
gpr_log(GPR_ERROR,
|
@@ -215,6 +215,14 @@ static tsi_result alts_zero_copy_grpc_protector_unprotect(
|
|
215
215
|
return status;
|
216
216
|
}
|
217
217
|
}
|
218
|
+
if (min_progress_size != nullptr) {
|
219
|
+
if (protector->parsed_frame_size > kZeroCopyFrameLengthFieldSize) {
|
220
|
+
*min_progress_size =
|
221
|
+
protector->parsed_frame_size - protector->protected_sb.length;
|
222
|
+
} else {
|
223
|
+
*min_progress_size = 1;
|
224
|
+
}
|
225
|
+
}
|
218
226
|
return TSI_OK;
|
219
227
|
}
|
220
228
|
|
@@ -143,6 +143,11 @@ static uint32_t read_frame_size(const grpc_slice_buffer* sb) {
|
|
143
143
|
return load32_little_endian(frame_size_buffer);
|
144
144
|
}
|
145
145
|
|
146
|
+
uint32_t tsi_fake_zero_copy_grpc_protector_next_frame_size(
|
147
|
+
const grpc_slice_buffer* protected_slices) {
|
148
|
+
return read_frame_size(protected_slices);
|
149
|
+
}
|
150
|
+
|
146
151
|
static void tsi_fake_frame_reset(tsi_fake_frame* frame, int needs_draining) {
|
147
152
|
frame->offset = 0;
|
148
153
|
frame->needs_draining = needs_draining;
|
@@ -432,7 +437,7 @@ static tsi_result fake_zero_copy_grpc_protector_protect(
|
|
432
437
|
|
433
438
|
static tsi_result fake_zero_copy_grpc_protector_unprotect(
|
434
439
|
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
|
435
|
-
grpc_slice_buffer* unprotected_slices) {
|
440
|
+
grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
|
436
441
|
if (self == nullptr || unprotected_slices == nullptr ||
|
437
442
|
protected_slices == nullptr) {
|
438
443
|
return TSI_INVALID_ARGUMENT;
|
@@ -462,6 +467,13 @@ static tsi_result fake_zero_copy_grpc_protector_unprotect(
|
|
462
467
|
impl->parsed_frame_size = 0;
|
463
468
|
grpc_slice_buffer_reset_and_unref_internal(&impl->header_sb);
|
464
469
|
}
|
470
|
+
if (min_progress_size != nullptr) {
|
471
|
+
if (impl->parsed_frame_size > TSI_FAKE_FRAME_HEADER_SIZE) {
|
472
|
+
*min_progress_size = impl->parsed_frame_size - impl->protected_sb.length;
|
473
|
+
} else {
|
474
|
+
*min_progress_size = 1;
|
475
|
+
}
|
476
|
+
}
|
465
477
|
return TSI_OK;
|
466
478
|
}
|
467
479
|
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "src/core/lib/slice/slice_internal.h"
|
24
25
|
#include "src/core/tsi/transport_security_interface.h"
|
25
26
|
|
26
27
|
/* Value for the TSI_CERTIFICATE_TYPE_PEER_PROPERTY property for FAKE certs. */
|
@@ -44,4 +45,9 @@ tsi_frame_protector* tsi_create_fake_frame_protector(
|
|
44
45
|
tsi_zero_copy_grpc_protector* tsi_create_fake_zero_copy_grpc_protector(
|
45
46
|
size_t* max_protected_frame_size);
|
46
47
|
|
48
|
+
/* Given a buffer containing slices encrypted by a fake_zero_copy_protector
|
49
|
+
* it parses these protected slices to return the total frame size of the first
|
50
|
+
* contained frame */
|
51
|
+
uint32_t tsi_fake_zero_copy_grpc_protector_next_frame_size(
|
52
|
+
const grpc_slice_buffer* protected_slices);
|
47
53
|
#endif /* GRPC_CORE_TSI_FAKE_TRANSPORT_SECURITY_H */
|
@@ -1566,7 +1566,7 @@ static tsi_result ssl_handshaker_write_output_buffer(tsi_handshaker* self,
|
|
1566
1566
|
size_t* bytes_written) {
|
1567
1567
|
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1568
1568
|
tsi_result status = TSI_OK;
|
1569
|
-
|
1569
|
+
size_t offset = *bytes_written;
|
1570
1570
|
do {
|
1571
1571
|
size_t to_send_size = impl->outgoing_bytes_buffer_size - offset;
|
1572
1572
|
status = ssl_handshaker_get_bytes_to_send_to_peer(
|
@@ -51,13 +51,14 @@ tsi_result tsi_zero_copy_grpc_protector_protect(
|
|
51
51
|
|
52
52
|
tsi_result tsi_zero_copy_grpc_protector_unprotect(
|
53
53
|
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
|
54
|
-
grpc_slice_buffer* unprotected_slices) {
|
54
|
+
grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
|
55
55
|
if (self == nullptr || self->vtable == nullptr ||
|
56
56
|
protected_slices == nullptr || unprotected_slices == nullptr) {
|
57
57
|
return TSI_INVALID_ARGUMENT;
|
58
58
|
}
|
59
59
|
if (self->vtable->unprotect == nullptr) return TSI_UNIMPLEMENTED;
|
60
|
-
return self->vtable->unprotect(self, protected_slices, unprotected_slices
|
60
|
+
return self->vtable->unprotect(self, protected_slices, unprotected_slices,
|
61
|
+
min_progress_size);
|
61
62
|
}
|
62
63
|
|
63
64
|
void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self) {
|
@@ -47,12 +47,14 @@ tsi_result tsi_zero_copy_grpc_protector_protect(
|
|
47
47
|
/* Outputs unprotected bytes.
|
48
48
|
- protected_slices is the bytes of protected frames.
|
49
49
|
- unprotected_slices is the unprotected output data.
|
50
|
+
- if min_progress_size is not null, it returns the size of the last
|
51
|
+
incomplete frame which could not be fully unprotected.
|
50
52
|
- This method returns TSI_OK in case of success. Success includes cases where
|
51
53
|
there is not enough data to output in which case unprotected_slices has 0
|
52
54
|
bytes. */
|
53
55
|
tsi_result tsi_zero_copy_grpc_protector_unprotect(
|
54
56
|
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
|
55
|
-
grpc_slice_buffer* unprotected_slices);
|
57
|
+
grpc_slice_buffer* unprotected_slices, int* min_progress_size);
|
56
58
|
|
57
59
|
/* Destroys the tsi_zero_copy_grpc_protector object. */
|
58
60
|
void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self);
|
@@ -68,7 +70,8 @@ struct tsi_zero_copy_grpc_protector_vtable {
|
|
68
70
|
grpc_slice_buffer* protected_slices);
|
69
71
|
tsi_result (*unprotect)(tsi_zero_copy_grpc_protector* self,
|
70
72
|
grpc_slice_buffer* protected_slices,
|
71
|
-
grpc_slice_buffer* unprotected_slices
|
73
|
+
grpc_slice_buffer* unprotected_slices,
|
74
|
+
int* min_progress_size);
|
72
75
|
void (*destroy)(tsi_zero_copy_grpc_protector* self);
|
73
76
|
tsi_result (*max_frame_size)(tsi_zero_copy_grpc_protector* self,
|
74
77
|
size_t* max_frame_size);
|