grpc 1.48.0 → 1.49.1
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 +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +125 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- 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 +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- 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/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/grpclb.cc +102 -131
- 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.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- 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 +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +63 -67
- 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 +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -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 +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 +170 -99
- 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 +17 -15
- 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 +38 -17
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- 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 +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- 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 +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- 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 +3 -4
- 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 +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -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 +2 -3
- 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/server/http_server_filter.cc +2 -3
- 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 +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- 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 +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- 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/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- 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 +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- 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_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- 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 +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- 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 +76 -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 +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/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- 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/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- 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 +54 -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 +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- 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/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 -1
- 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 +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- 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/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- 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 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- 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_poll_posix.cc +17 -9
- 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/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 +42 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +44 -10
- 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_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- 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 -24
- 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 +49 -72
- 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 +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- 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/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- 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 +2 -12
- 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 +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 +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- 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/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/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/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 +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- 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/google_default_credentials.cc +29 -26
- 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 +11 -13
- 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 +17 -18
- 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.h +6 -0
- 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/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 +3 -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 +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- 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 +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- 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 +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 +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 +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- 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/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 +88 -36
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- 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/promise/detail/switch.h +0 -1455
@@ -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
|
@@ -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. */
|