grpc 1.34.0 → 1.35.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +808 -2787
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +14 -0
- data/include/grpc/grpc_security.h +61 -3
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +1 -1
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
- data/src/core/ext/filters/client_channel/client_channel.h +0 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
- data/src/core/ext/filters/client_channel/subchannel.h +12 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- 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 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
- 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 +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
- 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 +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -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 +7 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- 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 +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- 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 +7 -0
- 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 +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
- 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 +19 -0
- 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 +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -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 +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- 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 +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- 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 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- 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 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/xds/certificate_provider_store.cc +10 -7
- data/src/core/ext/xds/certificate_provider_store.h +12 -7
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
- data/src/core/ext/xds/xds_api.cc +220 -31
- data/src/core/ext/xds/xds_api.h +41 -10
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
- data/src/core/ext/xds/xds_certificate_provider.h +40 -2
- data/src/core/ext/xds/xds_client.cc +31 -29
- data/src/core/ext/xds/xds_client.h +6 -1
- data/src/core/ext/xds/xds_client_stats.cc +2 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
- data/src/core/lib/channel/channel_args.cc +8 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +13 -14
- data/src/core/lib/channel/channelz.h +0 -1
- data/src/core/lib/channel/channelz_registry.h +0 -1
- data/src/core/lib/channel/handshaker.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/debug/stats.h +2 -2
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/log.cc +53 -16
- data/src/core/lib/gpr/log_linux.cc +3 -1
- data/src/core/lib/gpr/log_posix.cc +3 -1
- data/src/core/lib/gpr/log_windows.cc +3 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +22 -21
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/ref_counted.h +2 -2
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
- data/src/core/lib/gprpp/thd_posix.cc +6 -1
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +1 -1
- data/src/core/lib/http/parser.cc +1 -2
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/error.cc +15 -11
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/exec_ctx.h +6 -4
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/threadpool.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +52 -46
- data/src/core/lib/iomgr/parse_address.h +13 -9
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/timer_custom.cc +3 -3
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
- data/src/core/lib/json/json.h +10 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
- data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +3 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +32 -24
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +16 -10
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +23 -18
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +6 -5
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +59 -15
- data/src/core/lib/surface/server.h +37 -5
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/authority_override.cc +6 -4
- data/src/core/lib/transport/authority_override.h +5 -2
- data/src/core/lib/transport/connectivity_state.h +6 -4
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/transport.h +7 -7
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +5 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +62 -49
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +6 -6
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +525 -516
- data/third_party/upb/upb/def.h +16 -31
- data/third_party/upb/upb/def.hpp +37 -123
- data/third_party/upb/upb/encode.c +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +36 -19
- data/third_party/upb/upb/table.c +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- data/third_party/upb/upb/text_encode.c +45 -22
- data/third_party/upb/upb/text_encode.h +4 -1
- data/third_party/upb/upb/upb.c +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +60 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/third_party/upb/upb/port.c +0 -26
@@ -21,6 +21,8 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <ares.h>
|
25
|
+
|
24
26
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
25
27
|
#include "src/core/lib/iomgr/iomgr.h"
|
26
28
|
#include "src/core/lib/iomgr/polling_entity.h"
|
@@ -93,5 +95,8 @@ bool grpc_ares_query_ipv6();
|
|
93
95
|
void grpc_cares_wrapper_address_sorting_sort(
|
94
96
|
const grpc_ares_request* request, grpc_core::ServerAddressList* addresses);
|
95
97
|
|
98
|
+
/* Exposed in this header for C-core tests only */
|
99
|
+
extern void (*grpc_ares_test_only_inject_config)(ares_channel channel);
|
100
|
+
|
96
101
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H \
|
97
102
|
*/
|
@@ -74,7 +74,7 @@ class NativeDnsResolver : public Resolver {
|
|
74
74
|
void OnResolvedLocked(grpc_error* error);
|
75
75
|
|
76
76
|
/// name to resolve
|
77
|
-
|
77
|
+
std::string name_to_resolve_;
|
78
78
|
/// channel args
|
79
79
|
grpc_channel_args* channel_args_ = nullptr;
|
80
80
|
/// pollset_set to drive the name resolution process
|
@@ -107,9 +107,7 @@ NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
|
|
107
107
|
.set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
|
108
108
|
.set_jitter(GRPC_DNS_RECONNECT_JITTER)
|
109
109
|
.set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)) {
|
110
|
-
|
111
|
-
if (path[0] == '/') ++path;
|
112
|
-
name_to_resolve_ = gpr_strdup(path);
|
110
|
+
name_to_resolve_ = std::string(absl::StripPrefix(args.uri.path(), "/"));
|
113
111
|
channel_args_ = grpc_channel_args_copy(args.args);
|
114
112
|
const grpc_arg* arg = grpc_channel_args_find(
|
115
113
|
args.args, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS);
|
@@ -124,7 +122,6 @@ NativeDnsResolver::NativeDnsResolver(ResolverArgs args)
|
|
124
122
|
NativeDnsResolver::~NativeDnsResolver() {
|
125
123
|
grpc_channel_args_destroy(channel_args_);
|
126
124
|
grpc_pollset_set_destroy(interested_parties_);
|
127
|
-
gpr_free(name_to_resolve_);
|
128
125
|
}
|
129
126
|
|
130
127
|
void NativeDnsResolver::StartLocked() { MaybeStartResolvingLocked(); }
|
@@ -269,8 +266,8 @@ void NativeDnsResolver::StartResolvingLocked() {
|
|
269
266
|
addresses_ = nullptr;
|
270
267
|
GRPC_CLOSURE_INIT(&on_resolved_, NativeDnsResolver::OnResolved, this,
|
271
268
|
grpc_schedule_on_exec_ctx);
|
272
|
-
grpc_resolve_address(name_to_resolve_, kDefaultPort,
|
273
|
-
&on_resolved_, &addresses_);
|
269
|
+
grpc_resolve_address(name_to_resolve_.c_str(), kDefaultPort,
|
270
|
+
interested_parties_, &on_resolved_, &addresses_);
|
274
271
|
last_resolution_timestamp_ = grpc_core::ExecCtx::Get()->Now();
|
275
272
|
}
|
276
273
|
|
@@ -280,8 +277,8 @@ void NativeDnsResolver::StartResolvingLocked() {
|
|
280
277
|
|
281
278
|
class NativeDnsResolverFactory : public ResolverFactory {
|
282
279
|
public:
|
283
|
-
bool IsValidUri(const
|
284
|
-
if (GPR_UNLIKELY(
|
280
|
+
bool IsValidUri(const URI& uri) const override {
|
281
|
+
if (GPR_UNLIKELY(!uri.authority().empty())) {
|
285
282
|
gpr_log(GPR_ERROR, "authority based dns uri's not supported");
|
286
283
|
return false;
|
287
284
|
}
|
@@ -339,7 +339,7 @@ grpc_arg FakeResolverResponseGenerator::MakeChannelArg(
|
|
339
339
|
FakeResolverResponseGenerator* generator) {
|
340
340
|
grpc_arg arg;
|
341
341
|
arg.type = GRPC_ARG_POINTER;
|
342
|
-
arg.key = (
|
342
|
+
arg.key = const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
|
343
343
|
arg.value.pointer.p = generator;
|
344
344
|
arg.value.pointer.vtable = &response_generator_arg_vtable;
|
345
345
|
return arg;
|
@@ -362,7 +362,7 @@ namespace {
|
|
362
362
|
|
363
363
|
class FakeResolverFactory : public ResolverFactory {
|
364
364
|
public:
|
365
|
-
bool IsValidUri(const
|
365
|
+
bool IsValidUri(const URI& /*uri*/) const override { return true; }
|
366
366
|
|
367
367
|
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
|
368
368
|
return MakeOrphanable<FakeResolver>(std::move(args));
|
@@ -23,6 +23,8 @@
|
|
23
23
|
#include <stdlib.h>
|
24
24
|
#include <string.h>
|
25
25
|
|
26
|
+
#include "absl/strings/str_split.h"
|
27
|
+
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/string_util.h>
|
28
30
|
|
@@ -78,30 +80,20 @@ void SockaddrResolver::StartLocked() {
|
|
78
80
|
// Factory
|
79
81
|
//
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
-
bool ParseUri(const grpc_uri* uri,
|
84
|
-
bool parse(const grpc_uri* uri, grpc_resolved_address* dst),
|
83
|
+
bool ParseUri(const URI& uri,
|
84
|
+
bool parse(const URI& uri, grpc_resolved_address* dst),
|
85
85
|
ServerAddressList* addresses) {
|
86
|
-
if (
|
86
|
+
if (!uri.authority().empty()) {
|
87
87
|
gpr_log(GPR_ERROR, "authority-based URIs not supported by the %s scheme",
|
88
|
-
uri
|
88
|
+
uri.scheme().c_str());
|
89
89
|
return false;
|
90
90
|
}
|
91
91
|
// Construct addresses.
|
92
|
-
grpc_slice path_slice =
|
93
|
-
grpc_slice_new(uri->path, strlen(uri->path), DoNothing);
|
94
|
-
grpc_slice_buffer path_parts;
|
95
|
-
grpc_slice_buffer_init(&path_parts);
|
96
|
-
grpc_slice_split(path_slice, ",", &path_parts);
|
97
92
|
bool errors_found = false;
|
98
|
-
for (
|
99
|
-
|
100
|
-
grpc_core::UniquePtr<char> part_str(
|
101
|
-
grpc_slice_to_c_string(path_parts.slices[i]));
|
102
|
-
ith_uri.path = part_str.get();
|
93
|
+
for (absl::string_view ith_path : absl::StrSplit(uri.path(), ',')) {
|
94
|
+
URI ith_uri(uri.scheme(), "", std::string(ith_path), {}, "");
|
103
95
|
grpc_resolved_address addr;
|
104
|
-
if (!parse(
|
96
|
+
if (!parse(ith_uri, &addr)) {
|
105
97
|
errors_found = true;
|
106
98
|
break;
|
107
99
|
}
|
@@ -109,14 +101,11 @@ bool ParseUri(const grpc_uri* uri,
|
|
109
101
|
addresses->emplace_back(addr, nullptr /* args */);
|
110
102
|
}
|
111
103
|
}
|
112
|
-
grpc_slice_buffer_destroy_internal(&path_parts);
|
113
|
-
grpc_slice_unref_internal(path_slice);
|
114
104
|
return !errors_found;
|
115
105
|
}
|
116
106
|
|
117
107
|
OrphanablePtr<Resolver> CreateSockaddrResolver(
|
118
|
-
ResolverArgs args,
|
119
|
-
bool parse(const grpc_uri* uri, grpc_resolved_address* dst)) {
|
108
|
+
ResolverArgs args, bool parse(const URI& uri, grpc_resolved_address* dst)) {
|
120
109
|
ServerAddressList addresses;
|
121
110
|
if (!ParseUri(args.uri, parse, &addresses)) return nullptr;
|
122
111
|
// Instantiate resolver.
|
@@ -126,7 +115,7 @@ OrphanablePtr<Resolver> CreateSockaddrResolver(
|
|
126
115
|
|
127
116
|
class IPv4ResolverFactory : public ResolverFactory {
|
128
117
|
public:
|
129
|
-
bool IsValidUri(const
|
118
|
+
bool IsValidUri(const URI& uri) const override {
|
130
119
|
return ParseUri(uri, grpc_parse_ipv4, nullptr);
|
131
120
|
}
|
132
121
|
|
@@ -139,7 +128,7 @@ class IPv4ResolverFactory : public ResolverFactory {
|
|
139
128
|
|
140
129
|
class IPv6ResolverFactory : public ResolverFactory {
|
141
130
|
public:
|
142
|
-
bool IsValidUri(const
|
131
|
+
bool IsValidUri(const URI& uri) const override {
|
143
132
|
return ParseUri(uri, grpc_parse_ipv6, nullptr);
|
144
133
|
}
|
145
134
|
|
@@ -153,7 +142,7 @@ class IPv6ResolverFactory : public ResolverFactory {
|
|
153
142
|
#ifdef GRPC_HAVE_UNIX_SOCKET
|
154
143
|
class UnixResolverFactory : public ResolverFactory {
|
155
144
|
public:
|
156
|
-
bool IsValidUri(const
|
145
|
+
bool IsValidUri(const URI& uri) const override {
|
157
146
|
return ParseUri(uri, grpc_parse_unix, nullptr);
|
158
147
|
}
|
159
148
|
|
@@ -161,9 +150,8 @@ class UnixResolverFactory : public ResolverFactory {
|
|
161
150
|
return CreateSockaddrResolver(std::move(args), grpc_parse_unix);
|
162
151
|
}
|
163
152
|
|
164
|
-
|
165
|
-
|
166
|
-
return grpc_core::UniquePtr<char>(gpr_strdup("localhost"));
|
153
|
+
std::string GetDefaultAuthority(const URI& uri) const override {
|
154
|
+
return "localhost";
|
167
155
|
}
|
168
156
|
|
169
157
|
const char* scheme() const override { return "unix"; }
|
@@ -171,7 +159,7 @@ class UnixResolverFactory : public ResolverFactory {
|
|
171
159
|
|
172
160
|
class UnixAbstractResolverFactory : public ResolverFactory {
|
173
161
|
public:
|
174
|
-
bool IsValidUri(const
|
162
|
+
bool IsValidUri(const URI& uri) const override {
|
175
163
|
return ParseUri(uri, grpc_parse_unix_abstract, nullptr);
|
176
164
|
}
|
177
165
|
|
@@ -179,9 +167,8 @@ class UnixAbstractResolverFactory : public ResolverFactory {
|
|
179
167
|
return CreateSockaddrResolver(std::move(args), grpc_parse_unix_abstract);
|
180
168
|
}
|
181
169
|
|
182
|
-
|
183
|
-
|
184
|
-
return grpc_core::UniquePtr<char>(gpr_strdup("localhost"));
|
170
|
+
std::string GetDefaultAuthority(const URI& /*uri*/) const override {
|
171
|
+
return "localhost";
|
185
172
|
}
|
186
173
|
|
187
174
|
const char* scheme() const override { return "unix-abstract"; }
|
@@ -48,11 +48,9 @@ class XdsResolver : public Resolver {
|
|
48
48
|
explicit XdsResolver(ResolverArgs args)
|
49
49
|
: Resolver(std::move(args.work_serializer),
|
50
50
|
std::move(args.result_handler)),
|
51
|
+
server_name_(absl::StripPrefix(args.uri.path(), "/")),
|
51
52
|
args_(grpc_channel_args_copy(args.args)),
|
52
53
|
interested_parties_(args.pollset_set) {
|
53
|
-
char* path = args.uri->path;
|
54
|
-
if (path[0] == '/') ++path;
|
55
|
-
server_name_ = path;
|
56
54
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
|
57
55
|
gpr_log(GPR_INFO, "[xds_resolver %p] created for server name %s", this,
|
58
56
|
server_name_.c_str());
|
@@ -762,8 +760,8 @@ void XdsResolver::MaybeRemoveUnusedClusters() {
|
|
762
760
|
|
763
761
|
class XdsResolverFactory : public ResolverFactory {
|
764
762
|
public:
|
765
|
-
bool IsValidUri(const
|
766
|
-
if (GPR_UNLIKELY(
|
763
|
+
bool IsValidUri(const URI& uri) const override {
|
764
|
+
if (GPR_UNLIKELY(!uri.authority().empty())) {
|
767
765
|
gpr_log(GPR_ERROR, "URI authority not supported");
|
768
766
|
return false;
|
769
767
|
}
|
@@ -21,6 +21,8 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "absl/strings/strip.h"
|
25
|
+
|
24
26
|
#include <grpc/support/string_util.h>
|
25
27
|
|
26
28
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
@@ -33,7 +35,7 @@ namespace grpc_core {
|
|
33
35
|
|
34
36
|
struct ResolverArgs {
|
35
37
|
/// The parsed URI to resolve.
|
36
|
-
|
38
|
+
URI uri;
|
37
39
|
/// Channel args to be included in resolver results.
|
38
40
|
const grpc_channel_args* args = nullptr;
|
39
41
|
/// Used to drive I/O in the name resolution process.
|
@@ -48,17 +50,15 @@ class ResolverFactory {
|
|
48
50
|
public:
|
49
51
|
/// Returns a bool indicating whether the input uri is valid to create a
|
50
52
|
/// resolver.
|
51
|
-
virtual bool IsValidUri(const
|
53
|
+
virtual bool IsValidUri(const URI& uri) const = 0;
|
52
54
|
|
53
55
|
/// Returns a new resolver instance.
|
54
56
|
virtual OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const = 0;
|
55
57
|
|
56
58
|
/// Returns a string representing the default authority to use for this
|
57
59
|
/// scheme.
|
58
|
-
virtual
|
59
|
-
|
60
|
-
if (path[0] == '/') ++path;
|
61
|
-
return grpc_core::UniquePtr<char>(gpr_strdup(path));
|
60
|
+
virtual std::string GetDefaultAuthority(const URI& uri) const {
|
61
|
+
return std::string(absl::StripPrefix(uri.path(), "/"));
|
62
62
|
}
|
63
63
|
|
64
64
|
/// Returns the URI scheme that this factory implements.
|
@@ -24,6 +24,7 @@
|
|
24
24
|
|
25
25
|
#include "absl/container/inlined_vector.h"
|
26
26
|
#include "absl/strings/str_cat.h"
|
27
|
+
#include "absl/strings/str_format.h"
|
27
28
|
|
28
29
|
#include <grpc/support/alloc.h>
|
29
30
|
#include <grpc/support/log.h>
|
@@ -50,9 +51,9 @@ class RegistryState {
|
|
50
51
|
factories_.push_back(std::move(factory));
|
51
52
|
}
|
52
53
|
|
53
|
-
ResolverFactory* LookupResolverFactory(
|
54
|
+
ResolverFactory* LookupResolverFactory(absl::string_view scheme) const {
|
54
55
|
for (size_t i = 0; i < factories_.size(); ++i) {
|
55
|
-
if (
|
56
|
+
if (scheme == factories_[i]->scheme()) {
|
56
57
|
return factories_[i].get();
|
57
58
|
}
|
58
59
|
}
|
@@ -65,26 +66,35 @@ class RegistryState {
|
|
65
66
|
// point to the parsed URI.
|
66
67
|
// If \a default_prefix_ needs to be prepended, sets \a canonical_target
|
67
68
|
// to the canonical target string.
|
68
|
-
ResolverFactory* FindResolverFactory(
|
69
|
+
ResolverFactory* FindResolverFactory(absl::string_view target, URI* uri,
|
69
70
|
std::string* canonical_target) const {
|
70
71
|
GPR_ASSERT(uri != nullptr);
|
71
|
-
|
72
|
+
absl::StatusOr<URI> tmp_uri = URI::Parse(target);
|
72
73
|
ResolverFactory* factory =
|
73
|
-
|
74
|
-
if (factory
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
}
|
74
|
+
tmp_uri.ok() ? LookupResolverFactory(tmp_uri->scheme()) : nullptr;
|
75
|
+
if (factory != nullptr) {
|
76
|
+
*uri = *tmp_uri;
|
77
|
+
return factory;
|
78
|
+
}
|
79
|
+
*canonical_target = absl::StrCat(default_prefix_.get(), target);
|
80
|
+
absl::StatusOr<URI> tmp_uri2 = URI::Parse(*canonical_target);
|
81
|
+
factory =
|
82
|
+
tmp_uri2.ok() ? LookupResolverFactory(tmp_uri2->scheme()) : nullptr;
|
83
|
+
if (factory != nullptr) {
|
84
|
+
*uri = *tmp_uri2;
|
85
|
+
return factory;
|
86
86
|
}
|
87
|
-
|
87
|
+
if (!tmp_uri.ok() || !tmp_uri2.ok()) {
|
88
|
+
gpr_log(GPR_ERROR, "%s",
|
89
|
+
absl::StrFormat("Error parsing URI(s). '%s':%s; '%s':%s", target,
|
90
|
+
tmp_uri.status().ToString(), *canonical_target,
|
91
|
+
tmp_uri2.status().ToString())
|
92
|
+
.c_str());
|
93
|
+
return nullptr;
|
94
|
+
}
|
95
|
+
gpr_log(GPR_ERROR, "Don't know how to resolve '%s' or '%s'.",
|
96
|
+
std::string(target).c_str(), canonical_target->c_str());
|
97
|
+
return nullptr;
|
88
98
|
}
|
89
99
|
|
90
100
|
private:
|
@@ -114,10 +124,9 @@ void ResolverRegistry::Builder::ShutdownRegistry() {
|
|
114
124
|
g_state = nullptr;
|
115
125
|
}
|
116
126
|
|
117
|
-
void ResolverRegistry::Builder::SetDefaultPrefix(
|
118
|
-
const char* default_resolver_prefix) {
|
127
|
+
void ResolverRegistry::Builder::SetDefaultPrefix(const char* default_prefix) {
|
119
128
|
InitRegistry();
|
120
|
-
g_state->SetDefaultPrefix(
|
129
|
+
g_state->SetDefaultPrefix(default_prefix);
|
121
130
|
}
|
122
131
|
|
123
132
|
void ResolverRegistry::Builder::RegisterResolverFactory(
|
@@ -135,14 +144,12 @@ ResolverFactory* ResolverRegistry::LookupResolverFactory(const char* scheme) {
|
|
135
144
|
return g_state->LookupResolverFactory(scheme);
|
136
145
|
}
|
137
146
|
|
138
|
-
bool ResolverRegistry::IsValidTarget(
|
139
|
-
|
147
|
+
bool ResolverRegistry::IsValidTarget(absl::string_view target) {
|
148
|
+
URI uri;
|
140
149
|
std::string canonical_target;
|
141
150
|
ResolverFactory* factory =
|
142
151
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
143
|
-
|
144
|
-
grpc_uri_destroy(uri);
|
145
|
-
return result;
|
152
|
+
return factory == nullptr ? false : factory->IsValidUri(uri);
|
146
153
|
}
|
147
154
|
|
148
155
|
OrphanablePtr<Resolver> ResolverRegistry::CreateResolver(
|
@@ -151,12 +158,10 @@ OrphanablePtr<Resolver> ResolverRegistry::CreateResolver(
|
|
151
158
|
std::shared_ptr<WorkSerializer> work_serializer,
|
152
159
|
std::unique_ptr<Resolver::ResultHandler> result_handler) {
|
153
160
|
GPR_ASSERT(g_state != nullptr);
|
154
|
-
grpc_uri* uri = nullptr;
|
155
161
|
std::string canonical_target;
|
156
|
-
ResolverFactory* factory =
|
157
|
-
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
158
162
|
ResolverArgs resolver_args;
|
159
|
-
|
163
|
+
ResolverFactory* factory = g_state->FindResolverFactory(
|
164
|
+
target, &resolver_args.uri, &canonical_target);
|
160
165
|
resolver_args.args = args;
|
161
166
|
resolver_args.pollset_set = pollset_set;
|
162
167
|
resolver_args.work_serializer = std::move(work_serializer);
|
@@ -164,30 +169,26 @@ OrphanablePtr<Resolver> ResolverRegistry::CreateResolver(
|
|
164
169
|
OrphanablePtr<Resolver> resolver =
|
165
170
|
factory == nullptr ? nullptr
|
166
171
|
: factory->CreateResolver(std::move(resolver_args));
|
167
|
-
grpc_uri_destroy(uri);
|
168
172
|
return resolver;
|
169
173
|
}
|
170
174
|
|
171
|
-
|
172
|
-
const char* target) {
|
175
|
+
std::string ResolverRegistry::GetDefaultAuthority(absl::string_view target) {
|
173
176
|
GPR_ASSERT(g_state != nullptr);
|
174
|
-
|
177
|
+
URI uri;
|
175
178
|
std::string canonical_target;
|
176
179
|
ResolverFactory* factory =
|
177
180
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
178
|
-
|
179
|
-
factory == nullptr ?
|
180
|
-
grpc_uri_destroy(uri);
|
181
|
+
std::string authority =
|
182
|
+
factory == nullptr ? "" : factory->GetDefaultAuthority(uri);
|
181
183
|
return authority;
|
182
184
|
}
|
183
185
|
|
184
186
|
grpc_core::UniquePtr<char> ResolverRegistry::AddDefaultPrefixIfNeeded(
|
185
187
|
const char* target) {
|
186
188
|
GPR_ASSERT(g_state != nullptr);
|
187
|
-
|
189
|
+
URI uri;
|
188
190
|
std::string canonical_target;
|
189
191
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
190
|
-
grpc_uri_destroy(uri);
|
191
192
|
return grpc_core::UniquePtr<char>(canonical_target.empty()
|
192
193
|
? gpr_strdup(target)
|
193
194
|
: gpr_strdup(canonical_target.c_str()));
|
@@ -51,7 +51,7 @@ class ResolverRegistry {
|
|
51
51
|
};
|
52
52
|
|
53
53
|
/// Checks whether the user input \a target is valid to create a resolver.
|
54
|
-
static bool IsValidTarget(
|
54
|
+
static bool IsValidTarget(absl::string_view target);
|
55
55
|
|
56
56
|
/// Creates a resolver given \a target.
|
57
57
|
/// First tries to parse \a target as a URI. If this succeeds, tries
|
@@ -73,7 +73,7 @@ class ResolverRegistry {
|
|
73
73
|
std::unique_ptr<Resolver::ResultHandler> result_handler);
|
74
74
|
|
75
75
|
/// Returns the default authority to pass from a client for \a target.
|
76
|
-
static
|
76
|
+
static std::string GetDefaultAuthority(absl::string_view target);
|
77
77
|
|
78
78
|
/// Returns \a target with the default prefix prepended, if needed.
|
79
79
|
static grpc_core::UniquePtr<char> AddDefaultPrefixIfNeeded(
|
@@ -248,27 +248,25 @@ grpc_error* ParseRetryThrottling(
|
|
248
248
|
return GRPC_ERROR_CREATE_FROM_VECTOR("retryPolicy", &error_list);
|
249
249
|
}
|
250
250
|
|
251
|
-
|
251
|
+
absl::optional<std::string> ParseHealthCheckConfig(const Json& field,
|
252
|
+
grpc_error** error) {
|
252
253
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
253
|
-
const char* service_name = nullptr;
|
254
254
|
if (field.type() != Json::Type::OBJECT) {
|
255
255
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
256
256
|
"field:healthCheckConfig error:should be of type object");
|
257
|
-
return
|
257
|
+
return absl::nullopt;
|
258
258
|
}
|
259
259
|
std::vector<grpc_error*> error_list;
|
260
|
+
absl::optional<std::string> service_name;
|
260
261
|
auto it = field.object_value().find("serviceName");
|
261
262
|
if (it != field.object_value().end()) {
|
262
263
|
if (it->second.type() != Json::Type::STRING) {
|
263
264
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
264
265
|
"field:serviceName error:should be of type string"));
|
265
266
|
} else {
|
266
|
-
service_name = it->second.string_value()
|
267
|
+
service_name = it->second.string_value();
|
267
268
|
}
|
268
269
|
}
|
269
|
-
if (!error_list.empty()) {
|
270
|
-
return nullptr;
|
271
|
-
}
|
272
270
|
*error =
|
273
271
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:healthCheckConfig", &error_list);
|
274
272
|
return service_name;
|
@@ -281,12 +279,8 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
|
|
281
279
|
const grpc_channel_args* /*args*/, const Json& json, grpc_error** error) {
|
282
280
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
283
281
|
std::vector<grpc_error*> error_list;
|
284
|
-
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config;
|
285
|
-
std::string lb_policy_name;
|
286
|
-
absl::optional<ClientChannelGlobalParsedConfig::RetryThrottling>
|
287
|
-
retry_throttling;
|
288
|
-
const char* health_check_service_name = nullptr;
|
289
282
|
// Parse LB config.
|
283
|
+
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config;
|
290
284
|
auto it = json.object_value().find("loadBalancingConfig");
|
291
285
|
if (it != json.object_value().end()) {
|
292
286
|
grpc_error* parse_error = GRPC_ERROR_NONE;
|
@@ -300,6 +294,7 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
|
|
300
294
|
}
|
301
295
|
}
|
302
296
|
// Parse deprecated LB policy.
|
297
|
+
std::string lb_policy_name;
|
303
298
|
it = json.object_value().find("loadBalancingPolicy");
|
304
299
|
if (it != json.object_value().end()) {
|
305
300
|
if (it->second.type() != Json::Type::STRING) {
|
@@ -325,6 +320,8 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
|
|
325
320
|
}
|
326
321
|
}
|
327
322
|
// Parse retry throttling.
|
323
|
+
absl::optional<ClientChannelGlobalParsedConfig::RetryThrottling>
|
324
|
+
retry_throttling;
|
328
325
|
it = json.object_value().find("retryThrottling");
|
329
326
|
if (it != json.object_value().end()) {
|
330
327
|
ClientChannelGlobalParsedConfig::RetryThrottling data;
|
@@ -336,6 +333,7 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
|
|
336
333
|
}
|
337
334
|
}
|
338
335
|
// Parse health check config.
|
336
|
+
absl::optional<std::string> health_check_service_name;
|
339
337
|
it = json.object_value().find("healthCheckConfig");
|
340
338
|
if (it != json.object_value().end()) {
|
341
339
|
grpc_error* parsing_error = GRPC_ERROR_NONE;
|
@@ -350,7 +348,7 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
|
|
350
348
|
if (*error == GRPC_ERROR_NONE) {
|
351
349
|
return absl::make_unique<ClientChannelGlobalParsedConfig>(
|
352
350
|
std::move(parsed_lb_config), std::move(lb_policy_name),
|
353
|
-
retry_throttling, health_check_service_name);
|
351
|
+
retry_throttling, std::move(health_check_service_name));
|
354
352
|
}
|
355
353
|
return nullptr;
|
356
354
|
}
|