grpc 1.47.0-x86_64-linux → 1.49.0.pre1-x86_64-linux
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 +183 -62
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +37 -25
- 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 +5 -9
- data/include/grpc/impl/codegen/port_platform.h +2 -7
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
- 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 +164 -261
- data/src/core/ext/filters/client_channel/client_channel.h +34 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +13 -5
- data/src/core/ext/filters/client_channel/connector.h +5 -6
- 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/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- 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 +170 -164
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +200 -96
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
- 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 +179 -103
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +16 -18
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
- 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 +39 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
- data/src/core/ext/filters/client_channel/subchannel.h +14 -30
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +15 -101
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
- data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
- data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
- data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
- data/src/core/ext/filters/http/client_authority_filter.h +6 -3
- 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 +17 -11
- data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
- 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 +25 -10
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
- 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 +14 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
- 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 +39 -66
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
- data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -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_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
- 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 +124 -154
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- 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 +168 -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 +98 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- 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_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- 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 +0 -22
- data/src/core/ext/xds/xds_api.cc +68 -103
- data/src/core/ext/xds/xds_api.h +30 -32
- data/src/core/ext/xds/xds_bootstrap.cc +69 -69
- data/src/core/ext/xds/xds_bootstrap.h +37 -19
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +25 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
- data/src/core/ext/xds/xds_client.cc +583 -1193
- data/src/core/ext/xds/xds_client.h +28 -42
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- 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 +107 -107
- data/src/core/ext/xds/xds_cluster.h +14 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
- data/src/core/ext/xds/xds_common_types.cc +161 -123
- data/src/core/ext/xds/xds_common_types.h +16 -9
- data/src/core/ext/xds/xds_endpoint.cc +95 -85
- data/src/core/ext/xds/xds_endpoint.h +16 -8
- data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
- data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +5 -5
- data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
- data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +355 -307
- data/src/core/ext/xds/xds_listener.h +13 -4
- data/src/core/ext/xds/xds_resource_type.h +16 -5
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +215 -184
- data/src/core/ext/xds/xds_route_config.h +39 -16
- data/src/core/ext/xds/xds_routing.cc +19 -6
- data/src/core/ext/xds/xds_routing.h +12 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +24 -25
- data/src/core/lib/address_utils/parse_address.h +11 -7
- 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 +47 -25
- 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 +4 -4
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +114 -62
- 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 -5
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +28 -37
- data/src/core/lib/channel/channelz.h +11 -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 -1
- 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/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +15 -18
- data/src/core/lib/debug/stats.h +13 -4
- 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.cc +71 -0
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
- data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
- data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
- data/src/core/lib/event_engine/promise.h +78 -0
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +158 -0
- data/src/core/lib/event_engine/thread_pool.h +81 -0
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +45 -30
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
- data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
- 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 +29 -35
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +26 -14
- 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 -28
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +6 -777
- data/src/core/lib/iomgr/error.h +6 -147
- data/src/core/lib/iomgr/error_cfstream.cc +0 -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 +94 -61
- 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/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -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/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- 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 +207 -33
- 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/timer_generic.cc +6 -8
- 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/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
- 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 +56 -14
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +43 -42
- data/src/core/lib/promise/sleep.h +31 -28
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -42
- data/src/core/lib/resolver/resolver.h +5 -12
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +3 -10
- data/src/core/lib/resolver/resolver_registry.h +12 -2
- data/src/core/lib/resolver/server_address.cc +19 -15
- data/src/core/lib/resolver/server_address.h +11 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +171 -73
- data/src/core/lib/resource_quota/memory_quota.h +109 -42
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- 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 +17 -8
- 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 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
- data/src/core/lib/security/authorization/matchers.cc +20 -9
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +4 -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 +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
- 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 +5 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +26 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
- 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 +53 -29
- 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 +15 -8
- 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 +23 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- 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 +55 -35
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
- 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 +15 -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 +19 -26
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
- 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 +21 -31
- data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
- 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 +42 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
- 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 +34 -13
- data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +23 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
- 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 +25 -17
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
- data/src/core/lib/security/transport/auth_filters.h +8 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
- 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 +70 -49
- data/src/core/lib/security/transport/security_handshaker.h +6 -1
- 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.h +11 -0
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +12 -16
- data/src/core/lib/service_config/service_config_parser.cc +26 -29
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -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 +61 -117
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -1
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -16
- data/src/core/lib/surface/completion_queue.h +2 -4
- data/src/core/lib/surface/init.cc +2 -7
- data/src/core/lib/surface/lame_client.cc +3 -4
- data/src/core/lib/surface/lame_client.h +2 -2
- data/src/core/lib/surface/server.cc +21 -20
- data/src/core/lib/surface/server.h +11 -8
- data/src/core/lib/surface/validate_metadata.cc +5 -15
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +9 -39
- data/src/core/lib/transport/handshaker.cc +10 -12
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +20 -20
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -21
- 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_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +15 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +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 +66 -31
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +48 -24
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/core/tsi/transport_security_interface.h +17 -5
- 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 +51 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- 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/any_invocable.h +313 -0
- 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/functional/internal/any_invocable.h +857 -0
- 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
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +113 -37
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/event_engine/event_engine.cc +0 -62
- data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/promise/detail/switch.h +0 -1455
- 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
@@ -96,7 +96,8 @@ static const char* tsi_fake_handshake_message_to_string(int msg) {
|
|
96
96
|
}
|
97
97
|
|
98
98
|
static tsi_result tsi_fake_handshake_message_from_string(
|
99
|
-
const char* msg_string, tsi_fake_handshake_message* msg
|
99
|
+
const char* msg_string, tsi_fake_handshake_message* msg,
|
100
|
+
std::string* error) {
|
100
101
|
for (int i = 0; i < TSI_FAKE_HANDSHAKE_MESSAGE_MAX; i++) {
|
101
102
|
if (strncmp(msg_string, tsi_fake_handshake_message_strings[i],
|
102
103
|
strlen(tsi_fake_handshake_message_strings[i])) == 0) {
|
@@ -105,6 +106,7 @@ static tsi_result tsi_fake_handshake_message_from_string(
|
|
105
106
|
}
|
106
107
|
}
|
107
108
|
gpr_log(GPR_ERROR, "Invalid handshake message.");
|
109
|
+
if (error != nullptr) *error = "invalid handshake message";
|
108
110
|
return TSI_DATA_CORRUPTED;
|
109
111
|
}
|
110
112
|
|
@@ -143,6 +145,11 @@ static uint32_t read_frame_size(const grpc_slice_buffer* sb) {
|
|
143
145
|
return load32_little_endian(frame_size_buffer);
|
144
146
|
}
|
145
147
|
|
148
|
+
uint32_t tsi_fake_zero_copy_grpc_protector_next_frame_size(
|
149
|
+
const grpc_slice_buffer* protected_slices) {
|
150
|
+
return read_frame_size(protected_slices);
|
151
|
+
}
|
152
|
+
|
146
153
|
static void tsi_fake_frame_reset(tsi_fake_frame* frame, int needs_draining) {
|
147
154
|
frame->offset = 0;
|
148
155
|
frame->needs_draining = needs_draining;
|
@@ -169,12 +176,16 @@ static void tsi_fake_frame_ensure_size(tsi_fake_frame* frame) {
|
|
169
176
|
* This method should not be called if frame->needs_framing is not 0. */
|
170
177
|
static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
|
171
178
|
size_t* incoming_bytes_size,
|
172
|
-
tsi_fake_frame* frame
|
179
|
+
tsi_fake_frame* frame,
|
180
|
+
std::string* error) {
|
173
181
|
size_t available_size = *incoming_bytes_size;
|
174
182
|
size_t to_read_size = 0;
|
175
183
|
const unsigned char* bytes_cursor = incoming_bytes;
|
176
184
|
|
177
|
-
if (frame->needs_draining)
|
185
|
+
if (frame->needs_draining) {
|
186
|
+
if (error != nullptr) *error = "fake handshaker frame needs draining";
|
187
|
+
return TSI_INTERNAL_ERROR;
|
188
|
+
}
|
178
189
|
if (frame->data == nullptr) {
|
179
190
|
frame->allocated_size = TSI_FAKE_FRAME_INITIAL_ALLOCATED_SIZE;
|
180
191
|
frame->data =
|
@@ -219,9 +230,13 @@ static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
|
|
219
230
|
* This method should not be called if frame->needs_framing is 0. */
|
220
231
|
static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
|
221
232
|
size_t* outgoing_bytes_size,
|
222
|
-
tsi_fake_frame* frame
|
233
|
+
tsi_fake_frame* frame,
|
234
|
+
std::string* error) {
|
223
235
|
size_t to_write_size = frame->size - frame->offset;
|
224
|
-
if (!frame->needs_draining)
|
236
|
+
if (!frame->needs_draining) {
|
237
|
+
if (error != nullptr) *error = "fake frame needs draining";
|
238
|
+
return TSI_INTERNAL_ERROR;
|
239
|
+
}
|
225
240
|
if (*outgoing_bytes_size < to_write_size) {
|
226
241
|
memcpy(outgoing_bytes, frame->data + frame->offset, *outgoing_bytes_size);
|
227
242
|
frame->offset += *outgoing_bytes_size;
|
@@ -235,15 +250,14 @@ static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
|
|
235
250
|
|
236
251
|
/* Sets the payload of a fake frame to contain the given data blob, where
|
237
252
|
* data_size indicates the size of data. */
|
238
|
-
static
|
239
|
-
|
253
|
+
static void tsi_fake_frame_set_data(unsigned char* data, size_t data_size,
|
254
|
+
tsi_fake_frame* frame) {
|
240
255
|
frame->offset = 0;
|
241
256
|
frame->size = data_size + TSI_FAKE_FRAME_HEADER_SIZE;
|
242
257
|
tsi_fake_frame_ensure_size(frame);
|
243
258
|
store32_little_endian(static_cast<uint32_t>(frame->size), frame->data);
|
244
259
|
memcpy(frame->data + TSI_FAKE_FRAME_HEADER_SIZE, data, data_size);
|
245
260
|
tsi_fake_frame_reset(frame, 1 /* needs draining */);
|
246
|
-
return TSI_OK;
|
247
261
|
}
|
248
262
|
|
249
263
|
/* Destroys the contents of a fake frame. */
|
@@ -271,8 +285,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
271
285
|
/* Try to drain first. */
|
272
286
|
if (frame->needs_draining) {
|
273
287
|
drained_size = saved_output_size - *num_bytes_written;
|
274
|
-
result =
|
275
|
-
|
288
|
+
result = tsi_fake_frame_encode(protected_output_frames, &drained_size,
|
289
|
+
frame, /*error=*/nullptr);
|
276
290
|
*num_bytes_written += drained_size;
|
277
291
|
protected_output_frames += drained_size;
|
278
292
|
if (result != TSI_OK) {
|
@@ -292,7 +306,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
292
306
|
store32_little_endian(static_cast<uint32_t>(impl->max_frame_size),
|
293
307
|
frame_header);
|
294
308
|
written_in_frame_size = TSI_FAKE_FRAME_HEADER_SIZE;
|
295
|
-
result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame
|
309
|
+
result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame,
|
310
|
+
/*error=*/nullptr);
|
296
311
|
if (result != TSI_INCOMPLETE_DATA) {
|
297
312
|
gpr_log(GPR_ERROR, "tsi_fake_frame_decode returned %s",
|
298
313
|
tsi_result_to_string(result));
|
@@ -300,7 +315,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
300
315
|
}
|
301
316
|
}
|
302
317
|
result =
|
303
|
-
tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame
|
318
|
+
tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame,
|
319
|
+
/*error=*/nullptr);
|
304
320
|
if (result != TSI_OK) {
|
305
321
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
306
322
|
return result;
|
@@ -310,7 +326,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
310
326
|
if (!frame->needs_draining) return TSI_INTERNAL_ERROR;
|
311
327
|
if (frame->offset != 0) return TSI_INTERNAL_ERROR;
|
312
328
|
drained_size = saved_output_size - *num_bytes_written;
|
313
|
-
result = tsi_fake_frame_encode(protected_output_frames, &drained_size, frame
|
329
|
+
result = tsi_fake_frame_encode(protected_output_frames, &drained_size, frame,
|
330
|
+
/*error=*/nullptr);
|
314
331
|
*num_bytes_written += drained_size;
|
315
332
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
316
333
|
return result;
|
@@ -332,7 +349,8 @@ static tsi_result fake_protector_protect_flush(
|
|
332
349
|
frame->data); /* Overwrite header. */
|
333
350
|
}
|
334
351
|
result = tsi_fake_frame_encode(protected_output_frames,
|
335
|
-
protected_output_frames_size, frame
|
352
|
+
protected_output_frames_size, frame,
|
353
|
+
/*error=*/nullptr);
|
336
354
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
337
355
|
*still_pending_size = frame->size - frame->offset;
|
338
356
|
return result;
|
@@ -356,7 +374,8 @@ static tsi_result fake_protector_unprotect(
|
|
356
374
|
/* Go past the header if needed. */
|
357
375
|
if (frame->offset == 0) frame->offset = TSI_FAKE_FRAME_HEADER_SIZE;
|
358
376
|
drained_size = saved_output_size - *num_bytes_written;
|
359
|
-
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame
|
377
|
+
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
|
378
|
+
/*error=*/nullptr);
|
360
379
|
unprotected_bytes += drained_size;
|
361
380
|
*num_bytes_written += drained_size;
|
362
381
|
if (result != TSI_OK) {
|
@@ -371,7 +390,8 @@ static tsi_result fake_protector_unprotect(
|
|
371
390
|
/* Now process the protected_bytes. */
|
372
391
|
if (frame->needs_draining) return TSI_INTERNAL_ERROR;
|
373
392
|
result = tsi_fake_frame_decode(protected_frames_bytes,
|
374
|
-
protected_frames_bytes_size, frame
|
393
|
+
protected_frames_bytes_size, frame,
|
394
|
+
/*error=*/nullptr);
|
375
395
|
if (result != TSI_OK) {
|
376
396
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
377
397
|
return result;
|
@@ -382,7 +402,8 @@ static tsi_result fake_protector_unprotect(
|
|
382
402
|
if (frame->offset != 0) return TSI_INTERNAL_ERROR;
|
383
403
|
frame->offset = TSI_FAKE_FRAME_HEADER_SIZE; /* Go past the header. */
|
384
404
|
drained_size = saved_output_size - *num_bytes_written;
|
385
|
-
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame
|
405
|
+
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
|
406
|
+
/*error=*/nullptr);
|
386
407
|
*num_bytes_written += drained_size;
|
387
408
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
388
409
|
return result;
|
@@ -432,7 +453,7 @@ static tsi_result fake_zero_copy_grpc_protector_protect(
|
|
432
453
|
|
433
454
|
static tsi_result fake_zero_copy_grpc_protector_unprotect(
|
434
455
|
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
|
435
|
-
grpc_slice_buffer* unprotected_slices) {
|
456
|
+
grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
|
436
457
|
if (self == nullptr || unprotected_slices == nullptr ||
|
437
458
|
protected_slices == nullptr) {
|
438
459
|
return TSI_INVALID_ARGUMENT;
|
@@ -462,6 +483,13 @@ static tsi_result fake_zero_copy_grpc_protector_unprotect(
|
|
462
483
|
impl->parsed_frame_size = 0;
|
463
484
|
grpc_slice_buffer_reset_and_unref_internal(&impl->header_sb);
|
464
485
|
}
|
486
|
+
if (min_progress_size != nullptr) {
|
487
|
+
if (impl->parsed_frame_size > TSI_FAKE_FRAME_HEADER_SIZE) {
|
488
|
+
*min_progress_size = impl->parsed_frame_size - impl->protected_sb.length;
|
489
|
+
} else {
|
490
|
+
*min_progress_size = 1;
|
491
|
+
}
|
492
|
+
}
|
465
493
|
return TSI_OK;
|
466
494
|
}
|
467
495
|
|
@@ -567,9 +595,10 @@ static const tsi_handshaker_result_vtable handshaker_result_vtable = {
|
|
567
595
|
|
568
596
|
static tsi_result fake_handshaker_result_create(
|
569
597
|
const unsigned char* unused_bytes, size_t unused_bytes_size,
|
570
|
-
tsi_handshaker_result** handshaker_result) {
|
598
|
+
tsi_handshaker_result** handshaker_result, std::string* error) {
|
571
599
|
if ((unused_bytes_size > 0 && unused_bytes == nullptr) ||
|
572
600
|
handshaker_result == nullptr) {
|
601
|
+
if (error != nullptr) *error = "invalid argument";
|
573
602
|
return TSI_INVALID_ARGUMENT;
|
574
603
|
}
|
575
604
|
fake_handshaker_result* result = grpc_core::Zalloc<fake_handshaker_result>();
|
@@ -587,7 +616,8 @@ static tsi_result fake_handshaker_result_create(
|
|
587
616
|
/* --- tsi_handshaker methods implementation. ---*/
|
588
617
|
|
589
618
|
static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
590
|
-
tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size
|
619
|
+
tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size,
|
620
|
+
std::string* error) {
|
591
621
|
tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
|
592
622
|
tsi_result result = TSI_OK;
|
593
623
|
if (impl->needs_incoming_message || impl->result == TSI_OK) {
|
@@ -600,10 +630,9 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
600
630
|
static_cast<tsi_fake_handshake_message>(impl->next_message_to_send + 2);
|
601
631
|
const char* msg_string =
|
602
632
|
tsi_fake_handshake_message_to_string(impl->next_message_to_send);
|
603
|
-
|
633
|
+
tsi_fake_frame_set_data(
|
604
634
|
reinterpret_cast<unsigned char*>(const_cast<char*>(msg_string)),
|
605
635
|
strlen(msg_string), &impl->outgoing_frame);
|
606
|
-
if (result != TSI_OK) return result;
|
607
636
|
if (next_message_to_send > TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
|
608
637
|
next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX;
|
609
638
|
}
|
@@ -614,7 +643,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
614
643
|
}
|
615
644
|
impl->next_message_to_send = next_message_to_send;
|
616
645
|
}
|
617
|
-
result =
|
646
|
+
result =
|
647
|
+
tsi_fake_frame_encode(bytes, bytes_size, &impl->outgoing_frame, error);
|
618
648
|
if (result != TSI_OK) return result;
|
619
649
|
if (!impl->is_client &&
|
620
650
|
impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
|
@@ -630,7 +660,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
630
660
|
}
|
631
661
|
|
632
662
|
static tsi_result fake_handshaker_process_bytes_from_peer(
|
633
|
-
tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size
|
663
|
+
tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size,
|
664
|
+
std::string* error) {
|
634
665
|
tsi_result result = TSI_OK;
|
635
666
|
tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
|
636
667
|
tsi_fake_handshake_message expected_msg =
|
@@ -641,14 +672,15 @@ static tsi_result fake_handshaker_process_bytes_from_peer(
|
|
641
672
|
*bytes_size = 0;
|
642
673
|
return TSI_OK;
|
643
674
|
}
|
644
|
-
result =
|
675
|
+
result =
|
676
|
+
tsi_fake_frame_decode(bytes, bytes_size, &impl->incoming_frame, error);
|
645
677
|
if (result != TSI_OK) return result;
|
646
678
|
|
647
679
|
/* We now have a complete frame. */
|
648
680
|
result = tsi_fake_handshake_message_from_string(
|
649
681
|
reinterpret_cast<const char*>(impl->incoming_frame.data) +
|
650
682
|
TSI_FAKE_FRAME_HEADER_SIZE,
|
651
|
-
&received_msg);
|
683
|
+
&received_msg, error);
|
652
684
|
if (result != TSI_OK) {
|
653
685
|
impl->result = result;
|
654
686
|
return result;
|
@@ -691,11 +723,13 @@ static tsi_result fake_handshaker_next(
|
|
691
723
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
692
724
|
size_t received_bytes_size, const unsigned char** bytes_to_send,
|
693
725
|
size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
|
694
|
-
tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data
|
726
|
+
tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/,
|
727
|
+
std::string* error) {
|
695
728
|
/* Sanity check the arguments. */
|
696
729
|
if ((received_bytes_size > 0 && received_bytes == nullptr) ||
|
697
730
|
bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
|
698
731
|
handshaker_result == nullptr) {
|
732
|
+
if (error != nullptr) *error = "invalid argument";
|
699
733
|
return TSI_INVALID_ARGUMENT;
|
700
734
|
}
|
701
735
|
tsi_fake_handshaker* handshaker =
|
@@ -705,8 +739,8 @@ static tsi_result fake_handshaker_next(
|
|
705
739
|
/* Decode and process a handshake frame from the peer. */
|
706
740
|
size_t consumed_bytes_size = received_bytes_size;
|
707
741
|
if (received_bytes_size > 0) {
|
708
|
-
result = fake_handshaker_process_bytes_from_peer(
|
709
|
-
|
742
|
+
result = fake_handshaker_process_bytes_from_peer(
|
743
|
+
self, received_bytes, &consumed_bytes_size, error);
|
710
744
|
if (result != TSI_OK) return result;
|
711
745
|
}
|
712
746
|
|
@@ -716,7 +750,8 @@ static tsi_result fake_handshaker_next(
|
|
716
750
|
do {
|
717
751
|
size_t sent_bytes_size = handshaker->outgoing_bytes_buffer_size - offset;
|
718
752
|
result = fake_handshaker_get_bytes_to_send_to_peer(
|
719
|
-
self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size
|
753
|
+
self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size,
|
754
|
+
error);
|
720
755
|
offset += sent_bytes_size;
|
721
756
|
if (result == TSI_INCOMPLETE_DATA) {
|
722
757
|
handshaker->outgoing_bytes_buffer_size *= 2;
|
@@ -742,7 +777,7 @@ static tsi_result fake_handshaker_next(
|
|
742
777
|
|
743
778
|
/* Create a handshaker_result containing the unused bytes. */
|
744
779
|
result = fake_handshaker_result_create(unused_bytes, unused_bytes_size,
|
745
|
-
handshaker_result);
|
780
|
+
handshaker_result, error);
|
746
781
|
if (result == TSI_OK) {
|
747
782
|
/* Indicate that the handshake has completed and that a handshaker_result
|
748
783
|
* has been created. */
|
@@ -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 */
|
@@ -119,13 +119,17 @@ tsi_result create_handshaker_result(const unsigned char* received_bytes,
|
|
119
119
|
|
120
120
|
/* --- tsi_handshaker methods implementation. --- */
|
121
121
|
|
122
|
-
tsi_result handshaker_next(
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
122
|
+
tsi_result handshaker_next(tsi_handshaker* self,
|
123
|
+
const unsigned char* received_bytes,
|
124
|
+
size_t received_bytes_size,
|
125
|
+
const unsigned char** /*bytes_to_send*/,
|
126
|
+
size_t* bytes_to_send_size,
|
127
|
+
tsi_handshaker_result** result,
|
128
|
+
tsi_handshaker_on_next_done_cb /*cb*/,
|
129
|
+
void* /*user_data*/, std::string* error) {
|
127
130
|
if (self == nullptr) {
|
128
131
|
gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
|
132
|
+
if (error != nullptr) *error = "invalid argument";
|
129
133
|
return TSI_INVALID_ARGUMENT;
|
130
134
|
}
|
131
135
|
/* Note that there is no interaction between TSI peers, and all operations are
|
@@ -25,9 +25,11 @@
|
|
25
25
|
|
26
26
|
#include <openssl/ssl.h>
|
27
27
|
|
28
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
28
29
|
#include <grpc/slice.h>
|
29
30
|
#include <grpc/support/sync.h>
|
30
31
|
|
32
|
+
#include "src/core/lib/gprpp/cpp_impl_of.h"
|
31
33
|
#include "src/core/lib/gprpp/memory.h"
|
32
34
|
#include "src/core/lib/gprpp/ref_counted.h"
|
33
35
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -44,7 +46,10 @@
|
|
44
46
|
|
45
47
|
namespace tsi {
|
46
48
|
|
47
|
-
class SslSessionLRUCache
|
49
|
+
class SslSessionLRUCache
|
50
|
+
: public grpc_core::CppImplOf<SslSessionLRUCache,
|
51
|
+
struct tsi_ssl_session_cache>,
|
52
|
+
public grpc_core::RefCounted<SslSessionLRUCache> {
|
48
53
|
public:
|
49
54
|
/// Create new LRU cache with the given capacity.
|
50
55
|
static grpc_core::RefCountedPtr<SslSessionLRUCache> Create(size_t capacity) {
|
@@ -59,6 +64,10 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
|
|
59
64
|
SslSessionLRUCache(const SslSessionLRUCache&) = delete;
|
60
65
|
SslSessionLRUCache& operator=(const SslSessionLRUCache&) = delete;
|
61
66
|
|
67
|
+
static absl::string_view ChannelArgName() {
|
68
|
+
return GRPC_SSL_SESSION_CACHE_ARG;
|
69
|
+
}
|
70
|
+
|
62
71
|
/// Returns current number of sessions in the cache.
|
63
72
|
size_t Size();
|
64
73
|
/// Add \a session in the cache using \a key. This operation may discard older
|
@@ -45,6 +45,7 @@
|
|
45
45
|
#include <openssl/x509v3.h>
|
46
46
|
|
47
47
|
#include "absl/strings/match.h"
|
48
|
+
#include "absl/strings/str_cat.h"
|
48
49
|
#include "absl/strings/string_view.h"
|
49
50
|
|
50
51
|
#include <grpc/grpc_security.h>
|
@@ -1036,17 +1037,16 @@ void tsi_ssl_root_certs_store_destroy(tsi_ssl_root_certs_store* self) {
|
|
1036
1037
|
|
1037
1038
|
tsi_ssl_session_cache* tsi_ssl_session_cache_create_lru(size_t capacity) {
|
1038
1039
|
/* Pointer will be dereferenced by unref call. */
|
1039
|
-
return
|
1040
|
-
tsi::SslSessionLRUCache::Create(capacity).release());
|
1040
|
+
return tsi::SslSessionLRUCache::Create(capacity).release()->c_ptr();
|
1041
1041
|
}
|
1042
1042
|
|
1043
1043
|
void tsi_ssl_session_cache_ref(tsi_ssl_session_cache* cache) {
|
1044
1044
|
/* Pointer will be dereferenced by unref call. */
|
1045
|
-
|
1045
|
+
tsi::SslSessionLRUCache::FromC(cache)->Ref().release();
|
1046
1046
|
}
|
1047
1047
|
|
1048
1048
|
void tsi_ssl_session_cache_unref(tsi_ssl_session_cache* cache) {
|
1049
|
-
|
1049
|
+
tsi::SslSessionLRUCache::FromC(cache)->Unref();
|
1050
1050
|
}
|
1051
1051
|
|
1052
1052
|
/* --- tsi_frame_protector methods implementation. ---*/
|
@@ -1416,9 +1416,11 @@ static const tsi_handshaker_result_vtable handshaker_result_vtable = {
|
|
1416
1416
|
|
1417
1417
|
static tsi_result ssl_handshaker_result_create(
|
1418
1418
|
tsi_ssl_handshaker* handshaker, unsigned char* unused_bytes,
|
1419
|
-
size_t unused_bytes_size, tsi_handshaker_result** handshaker_result
|
1419
|
+
size_t unused_bytes_size, tsi_handshaker_result** handshaker_result,
|
1420
|
+
std::string* error) {
|
1420
1421
|
if (handshaker == nullptr || handshaker_result == nullptr ||
|
1421
1422
|
(unused_bytes_size > 0 && unused_bytes == nullptr)) {
|
1423
|
+
if (error != nullptr) *error = "invalid argument";
|
1422
1424
|
return TSI_INVALID_ARGUMENT;
|
1423
1425
|
}
|
1424
1426
|
tsi_ssl_handshaker_result* result =
|
@@ -1439,9 +1441,11 @@ static tsi_result ssl_handshaker_result_create(
|
|
1439
1441
|
/* --- tsi_handshaker methods implementation. ---*/
|
1440
1442
|
|
1441
1443
|
static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(
|
1442
|
-
tsi_ssl_handshaker* impl, unsigned char* bytes, size_t* bytes_size
|
1444
|
+
tsi_ssl_handshaker* impl, unsigned char* bytes, size_t* bytes_size,
|
1445
|
+
std::string* error) {
|
1443
1446
|
int bytes_read_from_ssl = 0;
|
1444
1447
|
if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
|
1448
|
+
if (error != nullptr) *error = "invalid argument";
|
1445
1449
|
return TSI_INVALID_ARGUMENT;
|
1446
1450
|
}
|
1447
1451
|
GPR_ASSERT(*bytes_size <= INT_MAX);
|
@@ -1450,6 +1454,7 @@ static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(
|
|
1450
1454
|
if (bytes_read_from_ssl < 0) {
|
1451
1455
|
*bytes_size = 0;
|
1452
1456
|
if (!BIO_should_retry(impl->network_io)) {
|
1457
|
+
if (error != nullptr) *error = "error reading from BIO";
|
1453
1458
|
impl->result = TSI_INTERNAL_ERROR;
|
1454
1459
|
return impl->result;
|
1455
1460
|
} else {
|
@@ -1468,7 +1473,8 @@ static tsi_result ssl_handshaker_get_result(tsi_ssl_handshaker* impl) {
|
|
1468
1473
|
return impl->result;
|
1469
1474
|
}
|
1470
1475
|
|
1471
|
-
static tsi_result ssl_handshaker_do_handshake(tsi_ssl_handshaker* impl
|
1476
|
+
static tsi_result ssl_handshaker_do_handshake(tsi_ssl_handshaker* impl,
|
1477
|
+
std::string* error) {
|
1472
1478
|
if (ssl_handshaker_get_result(impl) != TSI_HANDSHAKE_IN_PROGRESS) {
|
1473
1479
|
impl->result = TSI_OK;
|
1474
1480
|
return impl->result;
|
@@ -1494,6 +1500,9 @@ static tsi_result ssl_handshaker_do_handshake(tsi_ssl_handshaker* impl) {
|
|
1494
1500
|
ERR_error_string_n(ERR_get_error(), err_str, sizeof(err_str));
|
1495
1501
|
gpr_log(GPR_ERROR, "Handshake failed with fatal error %s: %s.",
|
1496
1502
|
ssl_error_string(ssl_result), err_str);
|
1503
|
+
if (error != nullptr) {
|
1504
|
+
*error = absl::StrCat(ssl_error_string(ssl_result), ": ", err_str);
|
1505
|
+
}
|
1497
1506
|
impl->result = TSI_PROTOCOL_FAILURE;
|
1498
1507
|
return impl->result;
|
1499
1508
|
}
|
@@ -1502,9 +1511,11 @@ static tsi_result ssl_handshaker_do_handshake(tsi_ssl_handshaker* impl) {
|
|
1502
1511
|
}
|
1503
1512
|
|
1504
1513
|
static tsi_result ssl_handshaker_process_bytes_from_peer(
|
1505
|
-
tsi_ssl_handshaker* impl, const unsigned char* bytes, size_t* bytes_size
|
1514
|
+
tsi_ssl_handshaker* impl, const unsigned char* bytes, size_t* bytes_size,
|
1515
|
+
std::string* error) {
|
1506
1516
|
int bytes_written_into_ssl_size = 0;
|
1507
1517
|
if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
|
1518
|
+
if (error != nullptr) *error = "invalid argument";
|
1508
1519
|
return TSI_INVALID_ARGUMENT;
|
1509
1520
|
}
|
1510
1521
|
GPR_ASSERT(*bytes_size <= INT_MAX);
|
@@ -1512,11 +1523,12 @@ static tsi_result ssl_handshaker_process_bytes_from_peer(
|
|
1512
1523
|
BIO_write(impl->network_io, bytes, static_cast<int>(*bytes_size));
|
1513
1524
|
if (bytes_written_into_ssl_size < 0) {
|
1514
1525
|
gpr_log(GPR_ERROR, "Could not write to memory BIO.");
|
1526
|
+
if (error != nullptr) *error = "could not write to memory BIO";
|
1515
1527
|
impl->result = TSI_INTERNAL_ERROR;
|
1516
1528
|
return impl->result;
|
1517
1529
|
}
|
1518
1530
|
*bytes_size = static_cast<size_t>(bytes_written_into_ssl_size);
|
1519
|
-
return ssl_handshaker_do_handshake(impl);
|
1531
|
+
return ssl_handshaker_do_handshake(impl, error);
|
1520
1532
|
}
|
1521
1533
|
|
1522
1534
|
static void ssl_handshaker_destroy(tsi_handshaker* self) {
|
@@ -1532,9 +1544,11 @@ static void ssl_handshaker_destroy(tsi_handshaker* self) {
|
|
1532
1544
|
// |bytes_remaining|.
|
1533
1545
|
static tsi_result ssl_bytes_remaining(tsi_ssl_handshaker* impl,
|
1534
1546
|
unsigned char** bytes_remaining,
|
1535
|
-
size_t* bytes_remaining_size
|
1547
|
+
size_t* bytes_remaining_size,
|
1548
|
+
std::string* error) {
|
1536
1549
|
if (impl == nullptr || bytes_remaining == nullptr ||
|
1537
1550
|
bytes_remaining_size == nullptr) {
|
1551
|
+
if (error != nullptr) *error = "invalid argument";
|
1538
1552
|
return TSI_INVALID_ARGUMENT;
|
1539
1553
|
}
|
1540
1554
|
// Atempt to read all of the bytes in SSL's read BIO. These bytes should
|
@@ -1552,6 +1566,9 @@ static tsi_result ssl_bytes_remaining(tsi_ssl_handshaker* impl,
|
|
1552
1566
|
"Failed to read the expected number of bytes from SSL object.");
|
1553
1567
|
gpr_free(*bytes_remaining);
|
1554
1568
|
*bytes_remaining = nullptr;
|
1569
|
+
if (error != nullptr) {
|
1570
|
+
*error = "Failed to read the expected number of bytes from SSL object.";
|
1571
|
+
}
|
1555
1572
|
return TSI_INTERNAL_ERROR;
|
1556
1573
|
}
|
1557
1574
|
*bytes_remaining_size = static_cast<size_t>(bytes_read);
|
@@ -1563,14 +1580,15 @@ static tsi_result ssl_bytes_remaining(tsi_ssl_handshaker* impl,
|
|
1563
1580
|
// This API needs to be repeatedly called until all handshake data are
|
1564
1581
|
// received from SSL.
|
1565
1582
|
static tsi_result ssl_handshaker_write_output_buffer(tsi_handshaker* self,
|
1566
|
-
size_t* bytes_written
|
1583
|
+
size_t* bytes_written,
|
1584
|
+
std::string* error) {
|
1567
1585
|
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1568
1586
|
tsi_result status = TSI_OK;
|
1569
|
-
|
1587
|
+
size_t offset = *bytes_written;
|
1570
1588
|
do {
|
1571
1589
|
size_t to_send_size = impl->outgoing_bytes_buffer_size - offset;
|
1572
1590
|
status = ssl_handshaker_get_bytes_to_send_to_peer(
|
1573
|
-
impl, impl->outgoing_bytes_buffer + offset, &to_send_size);
|
1591
|
+
impl, impl->outgoing_bytes_buffer + offset, &to_send_size, error);
|
1574
1592
|
offset += to_send_size;
|
1575
1593
|
if (status == TSI_INCOMPLETE_DATA) {
|
1576
1594
|
impl->outgoing_bytes_buffer_size *= 2;
|
@@ -1582,15 +1600,19 @@ static tsi_result ssl_handshaker_write_output_buffer(tsi_handshaker* self,
|
|
1582
1600
|
return status;
|
1583
1601
|
}
|
1584
1602
|
|
1585
|
-
static tsi_result ssl_handshaker_next(
|
1586
|
-
|
1587
|
-
|
1588
|
-
|
1589
|
-
|
1603
|
+
static tsi_result ssl_handshaker_next(tsi_handshaker* self,
|
1604
|
+
const unsigned char* received_bytes,
|
1605
|
+
size_t received_bytes_size,
|
1606
|
+
const unsigned char** bytes_to_send,
|
1607
|
+
size_t* bytes_to_send_size,
|
1608
|
+
tsi_handshaker_result** handshaker_result,
|
1609
|
+
tsi_handshaker_on_next_done_cb /*cb*/,
|
1610
|
+
void* /*user_data*/, std::string* error) {
|
1590
1611
|
/* Input sanity check. */
|
1591
1612
|
if ((received_bytes_size > 0 && received_bytes == nullptr) ||
|
1592
1613
|
bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
|
1593
1614
|
handshaker_result == nullptr) {
|
1615
|
+
if (error != nullptr) *error = "invalid argument";
|
1594
1616
|
return TSI_INVALID_ARGUMENT;
|
1595
1617
|
}
|
1596
1618
|
/* If there are received bytes, process them first. */
|
@@ -1600,16 +1622,16 @@ static tsi_result ssl_handshaker_next(
|
|
1600
1622
|
size_t bytes_written = 0;
|
1601
1623
|
if (received_bytes_size > 0) {
|
1602
1624
|
status = ssl_handshaker_process_bytes_from_peer(impl, received_bytes,
|
1603
|
-
&bytes_consumed);
|
1625
|
+
&bytes_consumed, error);
|
1604
1626
|
while (status == TSI_DRAIN_BUFFER) {
|
1605
|
-
status = ssl_handshaker_write_output_buffer(self, &bytes_written);
|
1627
|
+
status = ssl_handshaker_write_output_buffer(self, &bytes_written, error);
|
1606
1628
|
if (status != TSI_OK) return status;
|
1607
|
-
status = ssl_handshaker_do_handshake(impl);
|
1629
|
+
status = ssl_handshaker_do_handshake(impl, error);
|
1608
1630
|
}
|
1609
1631
|
}
|
1610
1632
|
if (status != TSI_OK) return status;
|
1611
1633
|
/* Get bytes to send to the peer, if available. */
|
1612
|
-
status = ssl_handshaker_write_output_buffer(self, &bytes_written);
|
1634
|
+
status = ssl_handshaker_write_output_buffer(self, &bytes_written, error);
|
1613
1635
|
if (status != TSI_OK) return status;
|
1614
1636
|
*bytes_to_send = impl->outgoing_bytes_buffer;
|
1615
1637
|
*bytes_to_send_size = bytes_written;
|
@@ -1623,15 +1645,17 @@ static tsi_result ssl_handshaker_next(
|
|
1623
1645
|
// peer that must be processed.
|
1624
1646
|
unsigned char* unused_bytes = nullptr;
|
1625
1647
|
size_t unused_bytes_size = 0;
|
1626
|
-
status =
|
1648
|
+
status =
|
1649
|
+
ssl_bytes_remaining(impl, &unused_bytes, &unused_bytes_size, error);
|
1627
1650
|
if (status != TSI_OK) return status;
|
1628
1651
|
if (unused_bytes_size > received_bytes_size) {
|
1629
1652
|
gpr_log(GPR_ERROR, "More unused bytes than received bytes.");
|
1630
1653
|
gpr_free(unused_bytes);
|
1654
|
+
if (error != nullptr) *error = "More unused bytes than received bytes.";
|
1631
1655
|
return TSI_INTERNAL_ERROR;
|
1632
1656
|
}
|
1633
1657
|
status = ssl_handshaker_result_create(impl, unused_bytes, unused_bytes_size,
|
1634
|
-
handshaker_result);
|
1658
|
+
handshaker_result, error);
|
1635
1659
|
if (status == TSI_OK) {
|
1636
1660
|
/* Indicates that the handshake has completed and that a handshaker_result
|
1637
1661
|
* has been created. */
|
@@ -216,14 +216,26 @@ tsi_result tsi_handshaker_next(
|
|
216
216
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
217
217
|
size_t received_bytes_size, const unsigned char** bytes_to_send,
|
218
218
|
size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
|
219
|
-
tsi_handshaker_on_next_done_cb cb, void* user_data) {
|
220
|
-
if (self == nullptr || self->vtable == nullptr)
|
221
|
-
|
222
|
-
|
223
|
-
|
219
|
+
tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
|
220
|
+
if (self == nullptr || self->vtable == nullptr) {
|
221
|
+
if (error != nullptr) *error = "invalid argument";
|
222
|
+
return TSI_INVALID_ARGUMENT;
|
223
|
+
}
|
224
|
+
if (self->handshaker_result_created) {
|
225
|
+
if (error != nullptr) *error = "handshaker already returned a result";
|
226
|
+
return TSI_FAILED_PRECONDITION;
|
227
|
+
}
|
228
|
+
if (self->handshake_shutdown) {
|
229
|
+
if (error != nullptr) *error = "handshaker shutdown";
|
230
|
+
return TSI_HANDSHAKE_SHUTDOWN;
|
231
|
+
}
|
232
|
+
if (self->vtable->next == nullptr) {
|
233
|
+
if (error != nullptr) *error = "TSI handshaker does not implement next()";
|
234
|
+
return TSI_UNIMPLEMENTED;
|
235
|
+
}
|
224
236
|
return self->vtable->next(self, received_bytes, received_bytes_size,
|
225
237
|
bytes_to_send, bytes_to_send_size,
|
226
|
-
handshaker_result, cb, user_data);
|
238
|
+
handshaker_result, cb, user_data, error);
|
227
239
|
}
|
228
240
|
|
229
241
|
void tsi_handshaker_shutdown(tsi_handshaker* self) {
|
@@ -78,7 +78,8 @@ struct tsi_handshaker_vtable {
|
|
78
78
|
const unsigned char** bytes_to_send,
|
79
79
|
size_t* bytes_to_send_size,
|
80
80
|
tsi_handshaker_result** handshaker_result,
|
81
|
-
tsi_handshaker_on_next_done_cb cb, void* user_data
|
81
|
+
tsi_handshaker_on_next_done_cb cb, void* user_data,
|
82
|
+
std::string* error);
|
82
83
|
void (*shutdown)(tsi_handshaker* self);
|
83
84
|
};
|
84
85
|
struct tsi_handshaker {
|
@@ -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) {
|