grpc 1.48.0 → 1.50.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +114 -150
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +20 -17
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
- data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
- data/include/grpc/impl/codegen/atm_windows.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +9 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +6 -6
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
- data/src/core/ext/filters/client_channel/client_channel.cc +154 -218
- data/src/core/ext/filters/client_channel/client_channel.h +16 -9
- 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 +0 -16
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +55 -74
- data/src/core/ext/filters/client_channel/http_proxy.h +15 -11
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -16
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +181 -194
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- 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 +20 -11
- 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 +250 -146
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +41 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +35 -32
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +195 -299
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +237 -250
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +431 -498
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -30
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +108 -124
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +68 -76
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +131 -227
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +126 -121
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +325 -304
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +172 -101
- 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 +18 -16
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- 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 +51 -32
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +87 -41
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +16 -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 +167 -168
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +40 -32
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +25 -36
- 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 +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -121
- data/src/core/ext/filters/client_channel/subchannel.h +20 -11
- 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 +4 -6
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +24 -19
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +40 -63
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +86 -107
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +155 -295
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +139 -42
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +27 -28
- 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 +30 -38
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +41 -77
- 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.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- 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_store.cc +63 -3
- data/src/core/ext/xds/certificate_provider_store.h +9 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +73 -102
- data/src/core/ext/xds/xds_api.h +26 -28
- data/src/core/ext/xds/xds_bootstrap.cc +5 -550
- data/src/core/ext/xds/xds_bootstrap.h +39 -91
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +732 -1317
- data/src/core/ext/xds/xds_client.h +33 -59
- data/src/core/ext/xds/xds_client_grpc.cc +229 -0
- data/src/core/ext/xds/xds_client_grpc.h +79 -0
- data/src/core/ext/xds/xds_client_stats.cc +4 -4
- data/src/core/ext/xds/xds_cluster.cc +162 -165
- data/src/core/ext/xds/xds_cluster.h +8 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +12 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +140 -108
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +87 -85
- data/src/core/ext/xds/xds_endpoint.h +4 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +21 -22
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +348 -313
- data/src/core/ext/xds/xds_listener.h +4 -5
- data/src/core/ext/xds/xds_resource_type.h +23 -9
- data/src/core/ext/xds/xds_route_config.cc +193 -191
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +81 -84
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +357 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/backoff/backoff.cc +2 -4
- data/src/core/lib/channel/call_finalization.h +1 -3
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +218 -67
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channel_trace.cc +3 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.cc +18 -19
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/channel/status_util.cc +27 -0
- data/src/core/lib/channel/status_util.h +10 -0
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +81 -35
- data/src/core/lib/debug/stats.cc +39 -46
- data/src/core/lib/debug/stats.h +11 -13
- data/src/core/lib/debug/stats_data.cc +118 -614
- data/src/core/lib/debug/stats_data.h +67 -465
- data/src/core/lib/debug/trace.cc +0 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- 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 +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +56 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +87 -30
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +40 -9
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/thread_pool.cc +195 -0
- data/src/core/lib/event_engine/thread_pool.h +114 -0
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/utils.cc +44 -0
- data/src/core/lib/event_engine/utils.h +36 -0
- data/src/core/lib/event_engine/windows/iocp.cc +155 -0
- data/src/core/lib/event_engine/windows/iocp.h +69 -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/experiments/config.cc +146 -0
- data/src/core/lib/experiments/config.h +43 -0
- data/src/core/lib/experiments/experiments.cc +75 -0
- data/src/core/lib/experiments/experiments.h +56 -0
- data/src/core/lib/gpr/alloc.cc +1 -9
- data/src/core/lib/gpr/log_windows.cc +0 -1
- data/src/core/lib/gpr/string_util_windows.cc +3 -30
- data/src/core/lib/gpr/sync_abseil.cc +0 -14
- data/src/core/lib/gpr/sync_posix.cc +0 -14
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/time_posix.cc +0 -6
- data/src/core/lib/gpr/time_precise.h +1 -1
- data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
- data/src/core/lib/gpr/useful.h +40 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/{gpr → gprpp}/env.h +25 -12
- data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
- data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/fork.cc +14 -22
- data/src/core/lib/gprpp/fork.h +0 -8
- data/src/core/lib/gprpp/global_config_env.cc +7 -6
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +20 -34
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/status_helper.h +6 -0
- data/src/core/lib/gprpp/table.h +9 -2
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/time.cc +21 -0
- data/src/core/lib/gprpp/time.h +55 -0
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +110 -0
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +16 -17
- data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -34
- data/src/core/lib/iomgr/closure.h +0 -10
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -9
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
- data/src/core/lib/iomgr/ev_poll_posix.cc +19 -26
- data/src/core/lib/iomgr/exec_ctx.cc +0 -22
- data/src/core/lib/iomgr/exec_ctx.h +7 -31
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +6 -8
- data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/pollset.h +1 -1
- data/src/core/lib/iomgr/pollset_set.h +0 -1
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +30 -6
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +43 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +45 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
- data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_client.cc +6 -7
- data/src/core/lib/iomgr/tcp_client.h +11 -11
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
- data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +249 -120
- data/src/core/lib/iomgr/tcp_posix.h +3 -1
- data/src/core/lib/iomgr/tcp_server.cc +5 -4
- data/src/core/lib/iomgr/tcp_server.h +9 -6
- data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
- data/src/core/lib/iomgr/tcp_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.h +0 -1
- data/src/core/lib/iomgr/timer_generic.cc +10 -12
- data/src/core/lib/iomgr/timer_manager.cc +1 -2
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +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 +202 -0
- data/src/core/lib/json/json_object_loader.h +598 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +9 -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 +20 -29
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +57 -10
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +1 -2
- 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/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +50 -42
- data/src/core/lib/promise/sleep.h +32 -23
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +15 -15
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +10 -1
- data/src/core/lib/resource_quota/api.h +6 -0
- data/src/core/lib/resource_quota/arena.cc +19 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +143 -19
- data/src/core/lib/resource_quota/memory_quota.h +85 -17
- data/src/core/lib/resource_quota/periodic_update.cc +78 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +33 -27
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +34 -24
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +35 -32
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +14 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -20
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +10 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +15 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- 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/surface/call.cc +9 -13
- data/src/core/lib/surface/channel.cc +9 -8
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +16 -30
- data/src/core/lib/surface/completion_queue.h +1 -4
- data/src/core/lib/surface/completion_queue_factory.cc +5 -0
- data/src/core/lib/surface/init.cc +17 -16
- data/src/core/lib/surface/init_internally.cc +24 -0
- data/src/core/lib/surface/init_internally.h +28 -0
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +8 -19
- data/src/core/lib/surface/server.h +11 -13
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -3
- 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 +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- 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 +16 -16
- data/src/core/lib/transport/metadata_batch.cc +7 -3
- data/src/core/lib/transport/metadata_batch.h +61 -14
- data/src/core/lib/transport/parsed_metadata.h +4 -3
- data/src/core/lib/transport/status_conversion.cc +1 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +20 -22
- data/src/core/lib/transport/transport.h +0 -8
- data/src/core/lib/transport/transport_impl.h +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
- 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 +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- 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 +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- 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/channel_spec.rb +5 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- 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 +117 -51
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -59
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
- data/src/core/lib/event_engine/promise.h +0 -69
- data/src/core/lib/gpr/env_windows.cc +0 -74
- data/src/core/lib/gpr/string_windows.h +0 -32
- 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/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -71,7 +71,8 @@ typedef struct alts_grpc_handshaker_client {
|
|
71
71
|
* handshaker service. */
|
72
72
|
grpc_byte_buffer* send_buffer = nullptr;
|
73
73
|
grpc_byte_buffer* recv_buffer = nullptr;
|
74
|
-
|
74
|
+
// Used to inject a read failure from tests.
|
75
|
+
bool inject_read_failure = false;
|
75
76
|
/* Initial metadata to be received from handshaker service. */
|
76
77
|
grpc_metadata_array recv_initial_metadata;
|
77
78
|
/* A callback function provided by an application to be invoked when response
|
@@ -106,6 +107,8 @@ typedef struct alts_grpc_handshaker_client {
|
|
106
107
|
recv_message_result* pending_recv_message_result = nullptr;
|
107
108
|
/* Maximum frame size used by frame protector. */
|
108
109
|
size_t max_frame_size;
|
110
|
+
// If non-null, will be populated with an error string upon error.
|
111
|
+
std::string* error;
|
109
112
|
} alts_grpc_handshaker_client;
|
110
113
|
|
111
114
|
static void handshaker_client_send_buffer_destroy(
|
@@ -174,10 +177,11 @@ static void maybe_complete_tsi_next(
|
|
174
177
|
}
|
175
178
|
|
176
179
|
static void handle_response_done(alts_grpc_handshaker_client* client,
|
177
|
-
tsi_result status,
|
180
|
+
tsi_result status, std::string error,
|
178
181
|
const unsigned char* bytes_to_send,
|
179
182
|
size_t bytes_to_send_size,
|
180
183
|
tsi_handshaker_result* result) {
|
184
|
+
if (client->error != nullptr) *client->error = std::move(error);
|
181
185
|
recv_message_result* p = grpc_core::Zalloc<recv_message_result>();
|
182
186
|
p->status = status;
|
183
187
|
p->bytes_to_send = bytes_to_send;
|
@@ -193,7 +197,6 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
193
197
|
alts_grpc_handshaker_client* client =
|
194
198
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
195
199
|
grpc_byte_buffer* recv_buffer = client->recv_buffer;
|
196
|
-
grpc_status_code status = client->status;
|
197
200
|
alts_tsi_handshaker* handshaker = client->handshaker;
|
198
201
|
/* Invalid input check. */
|
199
202
|
if (client->cb == nullptr) {
|
@@ -204,25 +207,34 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
204
207
|
if (handshaker == nullptr) {
|
205
208
|
gpr_log(GPR_ERROR,
|
206
209
|
"handshaker is nullptr in alts_tsi_handshaker_handle_response()");
|
207
|
-
handle_response_done(
|
210
|
+
handle_response_done(
|
211
|
+
client, TSI_INTERNAL_ERROR,
|
212
|
+
"handshaker is nullptr in alts_tsi_handshaker_handle_response()",
|
213
|
+
nullptr, 0, nullptr);
|
208
214
|
return;
|
209
215
|
}
|
210
216
|
/* TSI handshake has been shutdown. */
|
211
217
|
if (alts_tsi_handshaker_has_shutdown(handshaker)) {
|
212
218
|
gpr_log(GPR_INFO, "TSI handshake shutdown");
|
213
|
-
handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN,
|
219
|
+
handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN,
|
220
|
+
"TSI handshake shutdown", nullptr, 0, nullptr);
|
214
221
|
return;
|
215
222
|
}
|
216
|
-
/*
|
217
|
-
if (!is_ok ||
|
218
|
-
gpr_log(GPR_INFO, "grpc call
|
219
|
-
handle_response_done(client, TSI_INTERNAL_ERROR,
|
223
|
+
/* Check for failed grpc read. */
|
224
|
+
if (!is_ok || client->inject_read_failure) {
|
225
|
+
gpr_log(GPR_INFO, "read failed on grpc call to handshaker service");
|
226
|
+
handle_response_done(client, TSI_INTERNAL_ERROR,
|
227
|
+
"read failed on grpc call to handshaker service",
|
228
|
+
nullptr, 0, nullptr);
|
220
229
|
return;
|
221
230
|
}
|
222
231
|
if (recv_buffer == nullptr) {
|
223
232
|
gpr_log(GPR_ERROR,
|
224
233
|
"recv_buffer is nullptr in alts_tsi_handshaker_handle_response()");
|
225
|
-
handle_response_done(
|
234
|
+
handle_response_done(
|
235
|
+
client, TSI_INTERNAL_ERROR,
|
236
|
+
"recv_buffer is nullptr in alts_tsi_handshaker_handle_response()",
|
237
|
+
nullptr, 0, nullptr);
|
226
238
|
return;
|
227
239
|
}
|
228
240
|
upb::Arena arena;
|
@@ -233,14 +245,17 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
233
245
|
/* Invalid handshaker response check. */
|
234
246
|
if (resp == nullptr) {
|
235
247
|
gpr_log(GPR_ERROR, "alts_tsi_utils_deserialize_response() failed");
|
236
|
-
handle_response_done(client, TSI_DATA_CORRUPTED,
|
248
|
+
handle_response_done(client, TSI_DATA_CORRUPTED,
|
249
|
+
"alts_tsi_utils_deserialize_response() failed",
|
250
|
+
nullptr, 0, nullptr);
|
237
251
|
return;
|
238
252
|
}
|
239
253
|
const grpc_gcp_HandshakerStatus* resp_status =
|
240
254
|
grpc_gcp_HandshakerResp_status(resp);
|
241
255
|
if (resp_status == nullptr) {
|
242
256
|
gpr_log(GPR_ERROR, "No status in HandshakerResp");
|
243
|
-
handle_response_done(client, TSI_DATA_CORRUPTED,
|
257
|
+
handle_response_done(client, TSI_DATA_CORRUPTED,
|
258
|
+
"No status in HandshakerResp", nullptr, 0, nullptr);
|
244
259
|
return;
|
245
260
|
}
|
246
261
|
upb_StringView out_frames = grpc_gcp_HandshakerResp_out_frames(resp);
|
@@ -262,7 +277,9 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
262
277
|
alts_tsi_handshaker_result_create(resp, client->is_client, &result);
|
263
278
|
if (status != TSI_OK) {
|
264
279
|
gpr_log(GPR_ERROR, "alts_tsi_handshaker_result_create() failed");
|
265
|
-
handle_response_done(client, status,
|
280
|
+
handle_response_done(client, status,
|
281
|
+
"alts_tsi_handshaker_result_create() failed",
|
282
|
+
nullptr, 0, nullptr);
|
266
283
|
return;
|
267
284
|
}
|
268
285
|
alts_tsi_handshaker_result_set_unused_bytes(
|
@@ -271,13 +288,13 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
271
288
|
}
|
272
289
|
grpc_status_code code = static_cast<grpc_status_code>(
|
273
290
|
grpc_gcp_HandshakerStatus_code(resp_status));
|
291
|
+
std::string error;
|
274
292
|
if (code != GRPC_STATUS_OK) {
|
275
293
|
upb_StringView details = grpc_gcp_HandshakerStatus_details(resp_status);
|
276
294
|
if (details.size > 0) {
|
277
|
-
|
278
|
-
|
279
|
-
gpr_log(GPR_ERROR, "
|
280
|
-
gpr_free(error_details);
|
295
|
+
error = absl::StrCat("Status ", code, " from handshaker service: ",
|
296
|
+
absl::string_view(details.data, details.size));
|
297
|
+
gpr_log(GPR_ERROR, "%s", error.c_str());
|
281
298
|
}
|
282
299
|
}
|
283
300
|
// TODO(apolcyn): consider short ciruiting handle_response_done and
|
@@ -285,7 +302,8 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
|
|
285
302
|
// handle_response_done's allocation per message received causes
|
286
303
|
// a performance issue.
|
287
304
|
handle_response_done(client, alts_tsi_utils_convert_to_tsi_result(code),
|
288
|
-
bytes_to_send, bytes_to_send_size,
|
305
|
+
std::move(error), bytes_to_send, bytes_to_send_size,
|
306
|
+
result);
|
289
307
|
}
|
290
308
|
|
291
309
|
static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
|
@@ -690,7 +708,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
|
|
690
708
|
grpc_alts_credentials_options* options, const grpc_slice& target_name,
|
691
709
|
grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
|
692
710
|
void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
|
693
|
-
bool is_client, size_t max_frame_size) {
|
711
|
+
bool is_client, size_t max_frame_size, std::string* error) {
|
694
712
|
if (channel == nullptr || handshaker_service_url == nullptr) {
|
695
713
|
gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()");
|
696
714
|
return nullptr;
|
@@ -713,6 +731,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
|
|
713
731
|
client->buffer = static_cast<unsigned char*>(gpr_zalloc(client->buffer_size));
|
714
732
|
client->handshake_status_details = grpc_empty_slice();
|
715
733
|
client->max_frame_size = max_frame_size;
|
734
|
+
client->error = error;
|
716
735
|
grpc_slice slice = grpc_slice_from_copied_string(handshaker_service_url);
|
717
736
|
client->call =
|
718
737
|
strcmp(handshaker_service_url, ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING) ==
|
@@ -776,7 +795,7 @@ void alts_handshaker_client_set_recv_bytes_for_testing(
|
|
776
795
|
void alts_handshaker_client_set_fields_for_testing(
|
777
796
|
alts_handshaker_client* c, alts_tsi_handshaker* handshaker,
|
778
797
|
tsi_handshaker_on_next_done_cb cb, void* user_data,
|
779
|
-
grpc_byte_buffer* recv_buffer,
|
798
|
+
grpc_byte_buffer* recv_buffer, bool inject_read_failure) {
|
780
799
|
GPR_ASSERT(c != nullptr);
|
781
800
|
alts_grpc_handshaker_client* client =
|
782
801
|
reinterpret_cast<alts_grpc_handshaker_client*>(c);
|
@@ -784,7 +803,7 @@ void alts_handshaker_client_set_fields_for_testing(
|
|
784
803
|
client->cb = cb;
|
785
804
|
client->user_data = user_data;
|
786
805
|
client->recv_buffer = recv_buffer;
|
787
|
-
client->
|
806
|
+
client->inject_read_failure = inject_read_failure;
|
788
807
|
}
|
789
808
|
|
790
809
|
void alts_handshaker_client_check_fields_for_testing(
|
@@ -144,7 +144,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
|
|
144
144
|
grpc_alts_credentials_options* options, const grpc_slice& target_name,
|
145
145
|
grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
|
146
146
|
void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
|
147
|
-
bool is_client, size_t max_frame_size);
|
147
|
+
bool is_client, size_t max_frame_size, std::string* error);
|
148
148
|
|
149
149
|
/**
|
150
150
|
* This method handles handshaker response returned from ALTS handshaker
|
@@ -416,7 +416,7 @@ static void on_handshaker_service_resp_recv_dedicated(
|
|
416
416
|
static tsi_result alts_tsi_handshaker_continue_handshaker_next(
|
417
417
|
alts_tsi_handshaker* handshaker, const unsigned char* received_bytes,
|
418
418
|
size_t received_bytes_size, tsi_handshaker_on_next_done_cb cb,
|
419
|
-
void* user_data) {
|
419
|
+
void* user_data, std::string* error) {
|
420
420
|
if (!handshaker->has_created_handshaker_client) {
|
421
421
|
if (handshaker->channel == nullptr) {
|
422
422
|
grpc_alts_shared_resource_dedicated_start(
|
@@ -437,9 +437,10 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
|
|
437
437
|
handshaker->interested_parties, handshaker->options,
|
438
438
|
handshaker->target_name, grpc_cb, cb, user_data,
|
439
439
|
handshaker->client_vtable_for_testing, handshaker->is_client,
|
440
|
-
handshaker->max_frame_size);
|
440
|
+
handshaker->max_frame_size, error);
|
441
441
|
if (client == nullptr) {
|
442
442
|
gpr_log(GPR_ERROR, "Failed to create ALTS handshaker client");
|
443
|
+
if (error != nullptr) *error = "Failed to create ALTS handshaker client";
|
443
444
|
return TSI_FAILED_PRECONDITION;
|
444
445
|
}
|
445
446
|
{
|
@@ -448,6 +449,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
|
|
448
449
|
handshaker->client = client;
|
449
450
|
if (handshaker->shutdown) {
|
450
451
|
gpr_log(GPR_INFO, "TSI handshake shutdown");
|
452
|
+
if (error != nullptr) *error = "TSI handshaker shutdown";
|
451
453
|
return TSI_HANDSHAKE_SHUTDOWN;
|
452
454
|
}
|
453
455
|
}
|
@@ -490,6 +492,7 @@ struct alts_tsi_handshaker_continue_handshaker_next_args {
|
|
490
492
|
tsi_handshaker_on_next_done_cb cb;
|
491
493
|
void* user_data;
|
492
494
|
grpc_closure closure;
|
495
|
+
std::string* error = nullptr;
|
493
496
|
};
|
494
497
|
|
495
498
|
static void alts_tsi_handshaker_create_channel(
|
@@ -510,7 +513,8 @@ static void alts_tsi_handshaker_create_channel(
|
|
510
513
|
tsi_result continue_next_result =
|
511
514
|
alts_tsi_handshaker_continue_handshaker_next(
|
512
515
|
handshaker, next_args->received_bytes.get(),
|
513
|
-
next_args->received_bytes_size, next_args->cb, next_args->user_data
|
516
|
+
next_args->received_bytes_size, next_args->cb, next_args->user_data,
|
517
|
+
next_args->error);
|
514
518
|
if (continue_next_result != TSI_OK) {
|
515
519
|
next_args->cb(continue_next_result, next_args->user_data, nullptr, 0,
|
516
520
|
nullptr);
|
@@ -522,9 +526,10 @@ static tsi_result handshaker_next(
|
|
522
526
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
523
527
|
size_t received_bytes_size, const unsigned char** /*bytes_to_send*/,
|
524
528
|
size_t* /*bytes_to_send_size*/, tsi_handshaker_result** /*result*/,
|
525
|
-
tsi_handshaker_on_next_done_cb cb, void* user_data) {
|
529
|
+
tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
|
526
530
|
if (self == nullptr || cb == nullptr) {
|
527
531
|
gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
|
532
|
+
if (error != nullptr) *error = "invalid argument";
|
528
533
|
return TSI_INVALID_ARGUMENT;
|
529
534
|
}
|
530
535
|
alts_tsi_handshaker* handshaker =
|
@@ -533,6 +538,7 @@ static tsi_result handshaker_next(
|
|
533
538
|
grpc_core::MutexLock lock(&handshaker->mu);
|
534
539
|
if (handshaker->shutdown) {
|
535
540
|
gpr_log(GPR_INFO, "TSI handshake shutdown");
|
541
|
+
if (error != nullptr) *error = "handshake shutdown";
|
536
542
|
return TSI_HANDSHAKE_SHUTDOWN;
|
537
543
|
}
|
538
544
|
}
|
@@ -542,6 +548,7 @@ static tsi_result handshaker_next(
|
|
542
548
|
args->handshaker = handshaker;
|
543
549
|
args->received_bytes = nullptr;
|
544
550
|
args->received_bytes_size = received_bytes_size;
|
551
|
+
args->error = error;
|
545
552
|
if (received_bytes_size > 0) {
|
546
553
|
args->received_bytes = std::unique_ptr<unsigned char>(
|
547
554
|
static_cast<unsigned char*>(gpr_zalloc(received_bytes_size)));
|
@@ -559,7 +566,7 @@ static tsi_result handshaker_next(
|
|
559
566
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &args->closure, GRPC_ERROR_NONE);
|
560
567
|
} else {
|
561
568
|
tsi_result ok = alts_tsi_handshaker_continue_handshaker_next(
|
562
|
-
handshaker, received_bytes, received_bytes_size, cb, user_data);
|
569
|
+
handshaker, received_bytes, received_bytes_size, cb, user_data, error);
|
563
570
|
if (ok != TSI_OK) {
|
564
571
|
gpr_log(GPR_ERROR, "Failed to schedule ALTS handshaker requests");
|
565
572
|
return ok;
|
@@ -577,11 +584,11 @@ static tsi_result handshaker_next_dedicated(
|
|
577
584
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
578
585
|
size_t received_bytes_size, const unsigned char** bytes_to_send,
|
579
586
|
size_t* bytes_to_send_size, tsi_handshaker_result** result,
|
580
|
-
tsi_handshaker_on_next_done_cb cb, void* user_data) {
|
587
|
+
tsi_handshaker_on_next_done_cb cb, void* user_data, std::string* error) {
|
581
588
|
grpc_core::ExecCtx exec_ctx;
|
582
589
|
return handshaker_next(self, received_bytes, received_bytes_size,
|
583
590
|
bytes_to_send, bytes_to_send_size, result, cb,
|
584
|
-
user_data);
|
591
|
+
user_data, error);
|
585
592
|
}
|
586
593
|
|
587
594
|
static void handshaker_shutdown(tsi_handshaker* self) {
|
@@ -63,7 +63,7 @@ void alts_handshaker_client_check_fields_for_testing(
|
|
63
63
|
void alts_handshaker_client_set_fields_for_testing(
|
64
64
|
alts_handshaker_client* client, alts_tsi_handshaker* handshaker,
|
65
65
|
tsi_handshaker_on_next_done_cb cb, void* user_data,
|
66
|
-
grpc_byte_buffer* recv_buffer,
|
66
|
+
grpc_byte_buffer* recv_buffer, bool inject_read_failure);
|
67
67
|
|
68
68
|
void alts_handshaker_client_set_vtable_for_testing(
|
69
69
|
alts_handshaker_client* client, alts_handshaker_client_vtable* vtable);
|
@@ -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
|
|
@@ -174,12 +176,16 @@ static void tsi_fake_frame_ensure_size(tsi_fake_frame* frame) {
|
|
174
176
|
* This method should not be called if frame->needs_framing is not 0. */
|
175
177
|
static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
|
176
178
|
size_t* incoming_bytes_size,
|
177
|
-
tsi_fake_frame* frame
|
179
|
+
tsi_fake_frame* frame,
|
180
|
+
std::string* error) {
|
178
181
|
size_t available_size = *incoming_bytes_size;
|
179
182
|
size_t to_read_size = 0;
|
180
183
|
const unsigned char* bytes_cursor = incoming_bytes;
|
181
184
|
|
182
|
-
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
|
+
}
|
183
189
|
if (frame->data == nullptr) {
|
184
190
|
frame->allocated_size = TSI_FAKE_FRAME_INITIAL_ALLOCATED_SIZE;
|
185
191
|
frame->data =
|
@@ -224,9 +230,13 @@ static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
|
|
224
230
|
* This method should not be called if frame->needs_framing is 0. */
|
225
231
|
static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
|
226
232
|
size_t* outgoing_bytes_size,
|
227
|
-
tsi_fake_frame* frame
|
233
|
+
tsi_fake_frame* frame,
|
234
|
+
std::string* error) {
|
228
235
|
size_t to_write_size = frame->size - frame->offset;
|
229
|
-
if (!frame->needs_draining)
|
236
|
+
if (!frame->needs_draining) {
|
237
|
+
if (error != nullptr) *error = "fake frame needs draining";
|
238
|
+
return TSI_INTERNAL_ERROR;
|
239
|
+
}
|
230
240
|
if (*outgoing_bytes_size < to_write_size) {
|
231
241
|
memcpy(outgoing_bytes, frame->data + frame->offset, *outgoing_bytes_size);
|
232
242
|
frame->offset += *outgoing_bytes_size;
|
@@ -240,15 +250,14 @@ static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
|
|
240
250
|
|
241
251
|
/* Sets the payload of a fake frame to contain the given data blob, where
|
242
252
|
* data_size indicates the size of data. */
|
243
|
-
static
|
244
|
-
|
253
|
+
static void tsi_fake_frame_set_data(unsigned char* data, size_t data_size,
|
254
|
+
tsi_fake_frame* frame) {
|
245
255
|
frame->offset = 0;
|
246
256
|
frame->size = data_size + TSI_FAKE_FRAME_HEADER_SIZE;
|
247
257
|
tsi_fake_frame_ensure_size(frame);
|
248
258
|
store32_little_endian(static_cast<uint32_t>(frame->size), frame->data);
|
249
259
|
memcpy(frame->data + TSI_FAKE_FRAME_HEADER_SIZE, data, data_size);
|
250
260
|
tsi_fake_frame_reset(frame, 1 /* needs draining */);
|
251
|
-
return TSI_OK;
|
252
261
|
}
|
253
262
|
|
254
263
|
/* Destroys the contents of a fake frame. */
|
@@ -276,8 +285,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
276
285
|
/* Try to drain first. */
|
277
286
|
if (frame->needs_draining) {
|
278
287
|
drained_size = saved_output_size - *num_bytes_written;
|
279
|
-
result =
|
280
|
-
|
288
|
+
result = tsi_fake_frame_encode(protected_output_frames, &drained_size,
|
289
|
+
frame, /*error=*/nullptr);
|
281
290
|
*num_bytes_written += drained_size;
|
282
291
|
protected_output_frames += drained_size;
|
283
292
|
if (result != TSI_OK) {
|
@@ -297,7 +306,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
297
306
|
store32_little_endian(static_cast<uint32_t>(impl->max_frame_size),
|
298
307
|
frame_header);
|
299
308
|
written_in_frame_size = TSI_FAKE_FRAME_HEADER_SIZE;
|
300
|
-
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);
|
301
311
|
if (result != TSI_INCOMPLETE_DATA) {
|
302
312
|
gpr_log(GPR_ERROR, "tsi_fake_frame_decode returned %s",
|
303
313
|
tsi_result_to_string(result));
|
@@ -305,7 +315,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
305
315
|
}
|
306
316
|
}
|
307
317
|
result =
|
308
|
-
tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame
|
318
|
+
tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame,
|
319
|
+
/*error=*/nullptr);
|
309
320
|
if (result != TSI_OK) {
|
310
321
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
311
322
|
return result;
|
@@ -315,7 +326,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
|
|
315
326
|
if (!frame->needs_draining) return TSI_INTERNAL_ERROR;
|
316
327
|
if (frame->offset != 0) return TSI_INTERNAL_ERROR;
|
317
328
|
drained_size = saved_output_size - *num_bytes_written;
|
318
|
-
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);
|
319
331
|
*num_bytes_written += drained_size;
|
320
332
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
321
333
|
return result;
|
@@ -337,7 +349,8 @@ static tsi_result fake_protector_protect_flush(
|
|
337
349
|
frame->data); /* Overwrite header. */
|
338
350
|
}
|
339
351
|
result = tsi_fake_frame_encode(protected_output_frames,
|
340
|
-
protected_output_frames_size, frame
|
352
|
+
protected_output_frames_size, frame,
|
353
|
+
/*error=*/nullptr);
|
341
354
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
342
355
|
*still_pending_size = frame->size - frame->offset;
|
343
356
|
return result;
|
@@ -361,7 +374,8 @@ static tsi_result fake_protector_unprotect(
|
|
361
374
|
/* Go past the header if needed. */
|
362
375
|
if (frame->offset == 0) frame->offset = TSI_FAKE_FRAME_HEADER_SIZE;
|
363
376
|
drained_size = saved_output_size - *num_bytes_written;
|
364
|
-
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame
|
377
|
+
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
|
378
|
+
/*error=*/nullptr);
|
365
379
|
unprotected_bytes += drained_size;
|
366
380
|
*num_bytes_written += drained_size;
|
367
381
|
if (result != TSI_OK) {
|
@@ -376,7 +390,8 @@ static tsi_result fake_protector_unprotect(
|
|
376
390
|
/* Now process the protected_bytes. */
|
377
391
|
if (frame->needs_draining) return TSI_INTERNAL_ERROR;
|
378
392
|
result = tsi_fake_frame_decode(protected_frames_bytes,
|
379
|
-
protected_frames_bytes_size, frame
|
393
|
+
protected_frames_bytes_size, frame,
|
394
|
+
/*error=*/nullptr);
|
380
395
|
if (result != TSI_OK) {
|
381
396
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
382
397
|
return result;
|
@@ -387,7 +402,8 @@ static tsi_result fake_protector_unprotect(
|
|
387
402
|
if (frame->offset != 0) return TSI_INTERNAL_ERROR;
|
388
403
|
frame->offset = TSI_FAKE_FRAME_HEADER_SIZE; /* Go past the header. */
|
389
404
|
drained_size = saved_output_size - *num_bytes_written;
|
390
|
-
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame
|
405
|
+
result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
|
406
|
+
/*error=*/nullptr);
|
391
407
|
*num_bytes_written += drained_size;
|
392
408
|
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
|
393
409
|
return result;
|
@@ -579,9 +595,10 @@ static const tsi_handshaker_result_vtable handshaker_result_vtable = {
|
|
579
595
|
|
580
596
|
static tsi_result fake_handshaker_result_create(
|
581
597
|
const unsigned char* unused_bytes, size_t unused_bytes_size,
|
582
|
-
tsi_handshaker_result** handshaker_result) {
|
598
|
+
tsi_handshaker_result** handshaker_result, std::string* error) {
|
583
599
|
if ((unused_bytes_size > 0 && unused_bytes == nullptr) ||
|
584
600
|
handshaker_result == nullptr) {
|
601
|
+
if (error != nullptr) *error = "invalid argument";
|
585
602
|
return TSI_INVALID_ARGUMENT;
|
586
603
|
}
|
587
604
|
fake_handshaker_result* result = grpc_core::Zalloc<fake_handshaker_result>();
|
@@ -599,7 +616,8 @@ static tsi_result fake_handshaker_result_create(
|
|
599
616
|
/* --- tsi_handshaker methods implementation. ---*/
|
600
617
|
|
601
618
|
static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
602
|
-
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) {
|
603
621
|
tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
|
604
622
|
tsi_result result = TSI_OK;
|
605
623
|
if (impl->needs_incoming_message || impl->result == TSI_OK) {
|
@@ -612,10 +630,9 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
612
630
|
static_cast<tsi_fake_handshake_message>(impl->next_message_to_send + 2);
|
613
631
|
const char* msg_string =
|
614
632
|
tsi_fake_handshake_message_to_string(impl->next_message_to_send);
|
615
|
-
|
633
|
+
tsi_fake_frame_set_data(
|
616
634
|
reinterpret_cast<unsigned char*>(const_cast<char*>(msg_string)),
|
617
635
|
strlen(msg_string), &impl->outgoing_frame);
|
618
|
-
if (result != TSI_OK) return result;
|
619
636
|
if (next_message_to_send > TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
|
620
637
|
next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX;
|
621
638
|
}
|
@@ -626,7 +643,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
626
643
|
}
|
627
644
|
impl->next_message_to_send = next_message_to_send;
|
628
645
|
}
|
629
|
-
result =
|
646
|
+
result =
|
647
|
+
tsi_fake_frame_encode(bytes, bytes_size, &impl->outgoing_frame, error);
|
630
648
|
if (result != TSI_OK) return result;
|
631
649
|
if (!impl->is_client &&
|
632
650
|
impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
|
@@ -642,7 +660,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
|
|
642
660
|
}
|
643
661
|
|
644
662
|
static tsi_result fake_handshaker_process_bytes_from_peer(
|
645
|
-
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) {
|
646
665
|
tsi_result result = TSI_OK;
|
647
666
|
tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
|
648
667
|
tsi_fake_handshake_message expected_msg =
|
@@ -653,14 +672,15 @@ static tsi_result fake_handshaker_process_bytes_from_peer(
|
|
653
672
|
*bytes_size = 0;
|
654
673
|
return TSI_OK;
|
655
674
|
}
|
656
|
-
result =
|
675
|
+
result =
|
676
|
+
tsi_fake_frame_decode(bytes, bytes_size, &impl->incoming_frame, error);
|
657
677
|
if (result != TSI_OK) return result;
|
658
678
|
|
659
679
|
/* We now have a complete frame. */
|
660
680
|
result = tsi_fake_handshake_message_from_string(
|
661
681
|
reinterpret_cast<const char*>(impl->incoming_frame.data) +
|
662
682
|
TSI_FAKE_FRAME_HEADER_SIZE,
|
663
|
-
&received_msg);
|
683
|
+
&received_msg, error);
|
664
684
|
if (result != TSI_OK) {
|
665
685
|
impl->result = result;
|
666
686
|
return result;
|
@@ -703,11 +723,13 @@ static tsi_result fake_handshaker_next(
|
|
703
723
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
704
724
|
size_t received_bytes_size, const unsigned char** bytes_to_send,
|
705
725
|
size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
|
706
|
-
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) {
|
707
728
|
/* Sanity check the arguments. */
|
708
729
|
if ((received_bytes_size > 0 && received_bytes == nullptr) ||
|
709
730
|
bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
|
710
731
|
handshaker_result == nullptr) {
|
732
|
+
if (error != nullptr) *error = "invalid argument";
|
711
733
|
return TSI_INVALID_ARGUMENT;
|
712
734
|
}
|
713
735
|
tsi_fake_handshaker* handshaker =
|
@@ -717,8 +739,8 @@ static tsi_result fake_handshaker_next(
|
|
717
739
|
/* Decode and process a handshake frame from the peer. */
|
718
740
|
size_t consumed_bytes_size = received_bytes_size;
|
719
741
|
if (received_bytes_size > 0) {
|
720
|
-
result = fake_handshaker_process_bytes_from_peer(
|
721
|
-
|
742
|
+
result = fake_handshaker_process_bytes_from_peer(
|
743
|
+
self, received_bytes, &consumed_bytes_size, error);
|
722
744
|
if (result != TSI_OK) return result;
|
723
745
|
}
|
724
746
|
|
@@ -728,7 +750,8 @@ static tsi_result fake_handshaker_next(
|
|
728
750
|
do {
|
729
751
|
size_t sent_bytes_size = handshaker->outgoing_bytes_buffer_size - offset;
|
730
752
|
result = fake_handshaker_get_bytes_to_send_to_peer(
|
731
|
-
self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size
|
753
|
+
self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size,
|
754
|
+
error);
|
732
755
|
offset += sent_bytes_size;
|
733
756
|
if (result == TSI_INCOMPLETE_DATA) {
|
734
757
|
handshaker->outgoing_bytes_buffer_size *= 2;
|
@@ -754,7 +777,7 @@ static tsi_result fake_handshaker_next(
|
|
754
777
|
|
755
778
|
/* Create a handshaker_result containing the unused bytes. */
|
756
779
|
result = fake_handshaker_result_create(unused_bytes, unused_bytes_size,
|
757
|
-
handshaker_result);
|
780
|
+
handshaker_result, error);
|
758
781
|
if (result == TSI_OK) {
|
759
782
|
/* Indicate that the handshake has completed and that a handshaker_result
|
760
783
|
* has been created. */
|
@@ -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
|