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
@@ -75,8 +75,4 @@ void grpc_client_channel_stop_connectivity_watch(
|
|
75
75
|
grpc_channel_element* elem,
|
76
76
|
grpc_core::AsyncConnectivityStateWatcherInterface* watcher);
|
77
77
|
|
78
|
-
/* Debug helper: pull the subchannel call from a call stack element */
|
79
|
-
grpc_core::RefCountedPtr<grpc_core::SubchannelCall>
|
80
|
-
grpc_client_channel_get_subchannel_call(grpc_call_element* elem);
|
81
|
-
|
82
78
|
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
@@ -54,7 +54,7 @@ void grpc_client_channel_init(void) {
|
|
54
54
|
grpc_core::GlobalSubchannelPool::Init();
|
55
55
|
grpc_channel_init_register_stage(
|
56
56
|
GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, append_filter,
|
57
|
-
(
|
57
|
+
const_cast<grpc_channel_filter*>(&grpc_client_channel_filter));
|
58
58
|
grpc_http_connect_register_handshaker_factory();
|
59
59
|
grpc_client_channel_global_init_backup_polling();
|
60
60
|
}
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <functional>
|
23
23
|
#include <map>
|
24
|
+
#include <vector>
|
24
25
|
|
25
26
|
#include "absl/strings/string_view.h"
|
26
27
|
|
@@ -28,6 +29,7 @@
|
|
28
29
|
|
29
30
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
30
31
|
#include "src/core/ext/filters/client_channel/service_config_parser.h"
|
32
|
+
#include "src/core/lib/channel/channel_stack.h"
|
31
33
|
#include "src/core/lib/gprpp/arena.h"
|
32
34
|
#include "src/core/lib/gprpp/ref_counted.h"
|
33
35
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -80,6 +82,8 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
80
82
|
return cs1->Equals(cs2);
|
81
83
|
}
|
82
84
|
|
85
|
+
virtual std::vector<const grpc_channel_filter*> GetFilters() { return {}; }
|
86
|
+
|
83
87
|
virtual CallConfig GetCallConfig(GetCallConfigArgs args) = 0;
|
84
88
|
|
85
89
|
grpc_arg MakeChannelArg() const;
|
@@ -0,0 +1,186 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
20
|
+
|
21
|
+
#include "src/core/lib/channel/channel_stack.h"
|
22
|
+
#include "src/core/lib/surface/lame_client.h"
|
23
|
+
|
24
|
+
// Conversion between call and call stack.
|
25
|
+
#define CALL_TO_CALL_STACK(call) \
|
26
|
+
(grpc_call_stack*)((char*)(call) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE( \
|
27
|
+
sizeof(DynamicFilters::Call)))
|
28
|
+
#define CALL_STACK_TO_CALL(callstack) \
|
29
|
+
(DynamicFilters::Call*)(((char*)(call_stack)) - \
|
30
|
+
GPR_ROUND_UP_TO_ALIGNMENT_SIZE( \
|
31
|
+
sizeof(DynamicFilters::Call)))
|
32
|
+
|
33
|
+
namespace grpc_core {
|
34
|
+
|
35
|
+
//
|
36
|
+
// DynamicFilters::Call
|
37
|
+
//
|
38
|
+
|
39
|
+
DynamicFilters::Call::Call(Args args, grpc_error** error)
|
40
|
+
: channel_stack_(std::move(args.channel_stack)) {
|
41
|
+
grpc_call_stack* call_stack = CALL_TO_CALL_STACK(this);
|
42
|
+
const grpc_call_element_args call_args = {
|
43
|
+
call_stack, /* call_stack */
|
44
|
+
nullptr, /* server_transport_data */
|
45
|
+
args.context, /* context */
|
46
|
+
args.path, /* path */
|
47
|
+
args.start_time, /* start_time */
|
48
|
+
args.deadline, /* deadline */
|
49
|
+
args.arena, /* arena */
|
50
|
+
args.call_combiner /* call_combiner */
|
51
|
+
};
|
52
|
+
*error = grpc_call_stack_init(channel_stack_->channel_stack_, 1, Destroy,
|
53
|
+
this, &call_args);
|
54
|
+
if (GPR_UNLIKELY(*error != GRPC_ERROR_NONE)) {
|
55
|
+
const char* error_string = grpc_error_string(*error);
|
56
|
+
gpr_log(GPR_ERROR, "error: %s", error_string);
|
57
|
+
return;
|
58
|
+
}
|
59
|
+
grpc_call_stack_set_pollset_or_pollset_set(call_stack, args.pollent);
|
60
|
+
}
|
61
|
+
|
62
|
+
void DynamicFilters::Call::StartTransportStreamOpBatch(
|
63
|
+
grpc_transport_stream_op_batch* batch) {
|
64
|
+
grpc_call_stack* call_stack = CALL_TO_CALL_STACK(this);
|
65
|
+
grpc_call_element* top_elem = grpc_call_stack_element(call_stack, 0);
|
66
|
+
GRPC_CALL_LOG_OP(GPR_INFO, top_elem, batch);
|
67
|
+
top_elem->filter->start_transport_stream_op_batch(top_elem, batch);
|
68
|
+
}
|
69
|
+
|
70
|
+
void DynamicFilters::Call::SetAfterCallStackDestroy(grpc_closure* closure) {
|
71
|
+
GPR_ASSERT(after_call_stack_destroy_ == nullptr);
|
72
|
+
GPR_ASSERT(closure != nullptr);
|
73
|
+
after_call_stack_destroy_ = closure;
|
74
|
+
}
|
75
|
+
|
76
|
+
RefCountedPtr<DynamicFilters::Call> DynamicFilters::Call::Ref() {
|
77
|
+
IncrementRefCount();
|
78
|
+
return RefCountedPtr<DynamicFilters::Call>(this);
|
79
|
+
}
|
80
|
+
|
81
|
+
RefCountedPtr<DynamicFilters::Call> DynamicFilters::Call::Ref(
|
82
|
+
const grpc_core::DebugLocation& location, const char* reason) {
|
83
|
+
IncrementRefCount(location, reason);
|
84
|
+
return RefCountedPtr<DynamicFilters::Call>(this);
|
85
|
+
}
|
86
|
+
|
87
|
+
void DynamicFilters::Call::Unref() {
|
88
|
+
GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), "");
|
89
|
+
}
|
90
|
+
|
91
|
+
void DynamicFilters::Call::Unref(const DebugLocation& /*location*/,
|
92
|
+
const char* reason) {
|
93
|
+
GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), reason);
|
94
|
+
}
|
95
|
+
|
96
|
+
void DynamicFilters::Call::Destroy(void* arg, grpc_error* /*error*/) {
|
97
|
+
DynamicFilters::Call* self = static_cast<DynamicFilters::Call*>(arg);
|
98
|
+
// Keep some members before destroying the subchannel call.
|
99
|
+
grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_;
|
100
|
+
RefCountedPtr<DynamicFilters> channel_stack = std::move(self->channel_stack_);
|
101
|
+
// Destroy the subchannel call.
|
102
|
+
self->~Call();
|
103
|
+
// Destroy the call stack. This should be after destroying the call, because
|
104
|
+
// call->after_call_stack_destroy(), if not null, will free the call arena.
|
105
|
+
grpc_call_stack_destroy(CALL_TO_CALL_STACK(self), nullptr,
|
106
|
+
after_call_stack_destroy);
|
107
|
+
// Automatically reset channel_stack. This should be after destroying the call
|
108
|
+
// stack, because destroying call stack needs access to the channel stack.
|
109
|
+
}
|
110
|
+
|
111
|
+
void DynamicFilters::Call::IncrementRefCount() {
|
112
|
+
GRPC_CALL_STACK_REF(CALL_TO_CALL_STACK(this), "");
|
113
|
+
}
|
114
|
+
|
115
|
+
void DynamicFilters::Call::IncrementRefCount(
|
116
|
+
const grpc_core::DebugLocation& /*location*/, const char* reason) {
|
117
|
+
GRPC_CALL_STACK_REF(CALL_TO_CALL_STACK(this), reason);
|
118
|
+
}
|
119
|
+
|
120
|
+
//
|
121
|
+
// DynamicFilters
|
122
|
+
//
|
123
|
+
|
124
|
+
namespace {
|
125
|
+
|
126
|
+
void DestroyChannelStack(void* arg, grpc_error* /*error*/) {
|
127
|
+
grpc_channel_stack* channel_stack = static_cast<grpc_channel_stack*>(arg);
|
128
|
+
grpc_channel_stack_destroy(channel_stack);
|
129
|
+
gpr_free(channel_stack);
|
130
|
+
}
|
131
|
+
|
132
|
+
std::pair<grpc_channel_stack*, grpc_error*> CreateChannelStack(
|
133
|
+
const grpc_channel_args* args,
|
134
|
+
std::vector<const grpc_channel_filter*> filters) {
|
135
|
+
// Allocate memory for channel stack.
|
136
|
+
const size_t channel_stack_size =
|
137
|
+
grpc_channel_stack_size(filters.data(), filters.size());
|
138
|
+
grpc_channel_stack* channel_stack =
|
139
|
+
reinterpret_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
|
140
|
+
// Initialize stack.
|
141
|
+
grpc_error* error = grpc_channel_stack_init(
|
142
|
+
/*initial_refs=*/1, DestroyChannelStack, channel_stack, filters.data(),
|
143
|
+
filters.size(), args, /*optional_transport=*/nullptr, "DynamicFilters",
|
144
|
+
channel_stack);
|
145
|
+
if (error != GRPC_ERROR_NONE) {
|
146
|
+
gpr_log(GPR_ERROR, "error initializing client internal stack: %s",
|
147
|
+
grpc_error_string(error));
|
148
|
+
grpc_channel_stack_destroy(channel_stack);
|
149
|
+
gpr_free(channel_stack);
|
150
|
+
return {nullptr, error};
|
151
|
+
}
|
152
|
+
return {channel_stack, GRPC_ERROR_NONE};
|
153
|
+
}
|
154
|
+
|
155
|
+
} // namespace
|
156
|
+
|
157
|
+
RefCountedPtr<DynamicFilters> DynamicFilters::Create(
|
158
|
+
const grpc_channel_args* args,
|
159
|
+
std::vector<const grpc_channel_filter*> filters) {
|
160
|
+
// Attempt to create channel stack from requested filters.
|
161
|
+
auto p = CreateChannelStack(args, std::move(filters));
|
162
|
+
if (p.second != GRPC_ERROR_NONE) {
|
163
|
+
// Initial pass failed. Create with lame filter.
|
164
|
+
grpc_error* error = p.second;
|
165
|
+
p = CreateChannelStack(args, {&grpc_lame_filter});
|
166
|
+
GPR_ASSERT(p.second == GRPC_ERROR_NONE);
|
167
|
+
grpc_channel_element* elem = grpc_channel_stack_element(p.first, 0);
|
168
|
+
SetLameFilterError(elem, error);
|
169
|
+
}
|
170
|
+
return MakeRefCounted<DynamicFilters>(p.first);
|
171
|
+
}
|
172
|
+
|
173
|
+
DynamicFilters::~DynamicFilters() {
|
174
|
+
GRPC_CHANNEL_STACK_UNREF(channel_stack_, "~DynamicFilters");
|
175
|
+
}
|
176
|
+
|
177
|
+
RefCountedPtr<DynamicFilters::Call> DynamicFilters::CreateCall(
|
178
|
+
DynamicFilters::Call::Args args, grpc_error** error) {
|
179
|
+
size_t allocation_size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(Call)) +
|
180
|
+
channel_stack_->call_stack_size;
|
181
|
+
Call* call = static_cast<Call*>(args.arena->Alloc(allocation_size));
|
182
|
+
new (call) Call(std::move(args), error);
|
183
|
+
return call;
|
184
|
+
}
|
185
|
+
|
186
|
+
} // namespace grpc_core
|
@@ -0,0 +1,99 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_DYNAMIC_FILTERS_H
|
18
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_DYNAMIC_FILTERS_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <vector>
|
23
|
+
|
24
|
+
#include "src/core/lib/channel/channel_stack.h"
|
25
|
+
#include "src/core/lib/gpr/time_precise.h"
|
26
|
+
#include "src/core/lib/gprpp/arena.h"
|
27
|
+
#include "src/core/lib/gprpp/ref_counted.h"
|
28
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
29
|
+
#include "src/core/lib/iomgr/polling_entity.h"
|
30
|
+
|
31
|
+
namespace grpc_core {
|
32
|
+
|
33
|
+
class DynamicFilters : public RefCounted<DynamicFilters> {
|
34
|
+
public:
|
35
|
+
// Implements the interface of RefCounted<>.
|
36
|
+
class Call {
|
37
|
+
public:
|
38
|
+
struct Args {
|
39
|
+
RefCountedPtr<DynamicFilters> channel_stack;
|
40
|
+
grpc_polling_entity* pollent;
|
41
|
+
grpc_slice path;
|
42
|
+
gpr_cycle_counter start_time;
|
43
|
+
grpc_millis deadline;
|
44
|
+
Arena* arena;
|
45
|
+
grpc_call_context_element* context;
|
46
|
+
CallCombiner* call_combiner;
|
47
|
+
};
|
48
|
+
|
49
|
+
Call(Args args, grpc_error** error);
|
50
|
+
|
51
|
+
// Continues processing a transport stream op batch.
|
52
|
+
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
53
|
+
|
54
|
+
// Sets the 'then_schedule_closure' argument for call stack destruction.
|
55
|
+
// Must be called once per call.
|
56
|
+
void SetAfterCallStackDestroy(grpc_closure* closure);
|
57
|
+
|
58
|
+
// Interface of RefCounted<>.
|
59
|
+
RefCountedPtr<Call> Ref() GRPC_MUST_USE_RESULT;
|
60
|
+
RefCountedPtr<Call> Ref(const DebugLocation& location,
|
61
|
+
const char* reason) GRPC_MUST_USE_RESULT;
|
62
|
+
// When refcount drops to 0, destroys itself and the associated call stack,
|
63
|
+
// but does NOT free the memory because it's in the call arena.
|
64
|
+
void Unref();
|
65
|
+
void Unref(const DebugLocation& location, const char* reason);
|
66
|
+
|
67
|
+
private:
|
68
|
+
// Allow RefCountedPtr<> to access IncrementRefCount().
|
69
|
+
template <typename T>
|
70
|
+
friend class RefCountedPtr;
|
71
|
+
|
72
|
+
// Interface of RefCounted<>.
|
73
|
+
void IncrementRefCount();
|
74
|
+
void IncrementRefCount(const DebugLocation& location, const char* reason);
|
75
|
+
|
76
|
+
static void Destroy(void* arg, grpc_error* error);
|
77
|
+
|
78
|
+
RefCountedPtr<DynamicFilters> channel_stack_;
|
79
|
+
grpc_closure* after_call_stack_destroy_ = nullptr;
|
80
|
+
};
|
81
|
+
|
82
|
+
static RefCountedPtr<DynamicFilters> Create(
|
83
|
+
const grpc_channel_args* args,
|
84
|
+
std::vector<const grpc_channel_filter*> filters);
|
85
|
+
|
86
|
+
explicit DynamicFilters(grpc_channel_stack* channel_stack)
|
87
|
+
: channel_stack_(channel_stack) {}
|
88
|
+
|
89
|
+
~DynamicFilters() override;
|
90
|
+
|
91
|
+
RefCountedPtr<Call> CreateCall(Call::Args args, grpc_error** error);
|
92
|
+
|
93
|
+
private:
|
94
|
+
grpc_channel_stack* channel_stack_;
|
95
|
+
};
|
96
|
+
|
97
|
+
} // namespace grpc_core
|
98
|
+
|
99
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_DYNAMIC_FILTERS_H
|
@@ -46,7 +46,7 @@ TraceFlag grpc_health_check_client_trace(false, "health_check_client");
|
|
46
46
|
//
|
47
47
|
|
48
48
|
HealthCheckClient::HealthCheckClient(
|
49
|
-
|
49
|
+
std::string service_name,
|
50
50
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel,
|
51
51
|
grpc_pollset_set* interested_parties,
|
52
52
|
RefCountedPtr<channelz::SubchannelNode> channelz_node,
|
@@ -55,7 +55,7 @@ HealthCheckClient::HealthCheckClient(
|
|
55
55
|
GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
|
56
56
|
? "HealthCheckClient"
|
57
57
|
: nullptr),
|
58
|
-
service_name_(service_name),
|
58
|
+
service_name_(std::move(service_name)),
|
59
59
|
connected_subchannel_(std::move(connected_subchannel)),
|
60
60
|
interested_parties_(interested_parties),
|
61
61
|
channelz_node_(std::move(channelz_node)),
|
@@ -180,13 +180,14 @@ void HealthCheckClient::OnRetryTimer(void* arg, grpc_error* error) {
|
|
180
180
|
|
181
181
|
namespace {
|
182
182
|
|
183
|
-
void EncodeRequest(const
|
183
|
+
void EncodeRequest(const std::string& service_name,
|
184
184
|
ManualConstructor<SliceBufferByteStream>* send_message) {
|
185
185
|
upb::Arena arena;
|
186
186
|
grpc_health_v1_HealthCheckRequest* request_struct =
|
187
187
|
grpc_health_v1_HealthCheckRequest_new(arena.ptr());
|
188
188
|
grpc_health_v1_HealthCheckRequest_set_service(
|
189
|
-
request_struct,
|
189
|
+
request_struct,
|
190
|
+
upb_strview_make(service_name.data(), service_name.size()));
|
190
191
|
size_t buf_length;
|
191
192
|
char* buf = grpc_health_v1_HealthCheckRequest_serialize(
|
192
193
|
request_struct, arena.ptr(), &buf_length);
|
@@ -252,7 +253,7 @@ HealthCheckClient::CallState::CallState(
|
|
252
253
|
: health_check_client_(std::move(health_check_client)),
|
253
254
|
pollent_(grpc_polling_entity_create_from_pollset_set(interested_parties)),
|
254
255
|
arena_(Arena::Create(health_check_client_->connected_subchannel_
|
255
|
-
->GetInitialCallSizeEstimate(
|
256
|
+
->GetInitialCallSizeEstimate())),
|
256
257
|
payload_(context_) {}
|
257
258
|
|
258
259
|
HealthCheckClient::CallState::~CallState() {
|
@@ -291,7 +292,6 @@ void HealthCheckClient::CallState::StartCall() {
|
|
291
292
|
arena_,
|
292
293
|
context_,
|
293
294
|
&call_combiner_,
|
294
|
-
0, // parent_data_size
|
295
295
|
};
|
296
296
|
grpc_error* error = GRPC_ERROR_NONE;
|
297
297
|
call_ = SubchannelCall::Create(std::move(args), &error).release();
|
@@ -44,7 +44,7 @@ namespace grpc_core {
|
|
44
44
|
|
45
45
|
class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
46
46
|
public:
|
47
|
-
HealthCheckClient(
|
47
|
+
HealthCheckClient(std::string service_name,
|
48
48
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel,
|
49
49
|
grpc_pollset_set* interested_parties,
|
50
50
|
RefCountedPtr<channelz::SubchannelNode> channelz_node,
|
@@ -150,7 +150,7 @@ class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
|
|
150
150
|
void SetHealthStatusLocked(grpc_connectivity_state state,
|
151
151
|
const char* reason); // Requires holding mu_.
|
152
152
|
|
153
|
-
|
153
|
+
std::string service_name_;
|
154
154
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
155
155
|
grpc_pollset_set* interested_parties_; // Do not own.
|
156
156
|
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
|
@@ -332,7 +332,7 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
|
|
332
332
|
grpc_httpcli_request request;
|
333
333
|
request.host = server_name;
|
334
334
|
request.ssl_host_override = nullptr;
|
335
|
-
request.http.method = (
|
335
|
+
request.http.method = const_cast<char*>("CONNECT");
|
336
336
|
request.http.path = server_name;
|
337
337
|
request.http.version = GRPC_HTTP_HTTP10; // Set by OnReadDone
|
338
338
|
request.http.hdrs = headers;
|
@@ -382,8 +382,7 @@ class HttpConnectHandshakerFactory : public HandshakerFactory {
|
|
382
382
|
} // namespace grpc_core
|
383
383
|
|
384
384
|
void grpc_http_connect_register_handshaker_factory() {
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
absl::make_unique<HttpConnectHandshakerFactory>());
|
385
|
+
grpc_core::HandshakerRegistry::RegisterHandshakerFactory(
|
386
|
+
true /* at_start */, grpc_core::HANDSHAKER_CLIENT,
|
387
|
+
absl::make_unique<grpc_core::HttpConnectHandshakerFactory>());
|
389
388
|
}
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <string.h>
|
25
25
|
|
26
26
|
#include "absl/strings/str_cat.h"
|
27
|
+
#include "absl/strings/strip.h"
|
27
28
|
|
28
29
|
#include <grpc/support/alloc.h>
|
29
30
|
#include <grpc/support/log.h>
|
@@ -47,9 +48,10 @@ namespace {
|
|
47
48
|
* credentials if present in the 'http_proxy' env var, otherwise leaves it
|
48
49
|
* unchanged. It is caller's responsibility to gpr_free user_cred.
|
49
50
|
*/
|
51
|
+
// TODO(hork): change this to return std::string
|
50
52
|
char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
51
53
|
GPR_ASSERT(user_cred != nullptr);
|
52
|
-
|
54
|
+
absl::StatusOr<URI> uri;
|
53
55
|
char* proxy_name = nullptr;
|
54
56
|
char** authority_strs = nullptr;
|
55
57
|
size_t authority_nstrs;
|
@@ -69,17 +71,20 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
|
69
71
|
if (uri_str == nullptr) return nullptr;
|
70
72
|
// an emtpy value means "don't use proxy"
|
71
73
|
if (uri_str[0] == '\0') goto done;
|
72
|
-
uri =
|
73
|
-
if (uri
|
74
|
-
gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var"
|
74
|
+
uri = URI::Parse(uri_str);
|
75
|
+
if (!uri.ok() || uri->authority().empty()) {
|
76
|
+
gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var. Error: %s",
|
77
|
+
uri.status().ToString().c_str());
|
75
78
|
goto done;
|
76
79
|
}
|
77
|
-
if (
|
78
|
-
gpr_log(GPR_ERROR, "'%s' scheme not supported in proxy URI",
|
80
|
+
if (uri->scheme() != "http") {
|
81
|
+
gpr_log(GPR_ERROR, "'%s' scheme not supported in proxy URI",
|
82
|
+
uri->scheme().c_str());
|
79
83
|
goto done;
|
80
84
|
}
|
81
85
|
/* Split on '@' to separate user credentials from host */
|
82
|
-
gpr_string_split(uri->authority, "@", &authority_strs,
|
86
|
+
gpr_string_split(uri->authority().c_str(), "@", &authority_strs,
|
87
|
+
&authority_nstrs);
|
83
88
|
GPR_ASSERT(authority_nstrs != 0); /* should have at least 1 string */
|
84
89
|
if (authority_nstrs == 1) {
|
85
90
|
/* User cred not present in authority */
|
@@ -99,7 +104,6 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
|
|
99
104
|
gpr_free(authority_strs);
|
100
105
|
done:
|
101
106
|
gpr_free(uri_str);
|
102
|
-
grpc_uri_destroy(uri);
|
103
107
|
return proxy_name;
|
104
108
|
}
|
105
109
|
|
@@ -114,15 +118,15 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
114
118
|
*name_to_resolve = GetHttpProxyServer(args, &user_cred);
|
115
119
|
if (*name_to_resolve == nullptr) return false;
|
116
120
|
char* no_proxy_str = nullptr;
|
117
|
-
|
118
|
-
if (uri
|
121
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
122
|
+
if (!uri.ok() || uri->path().empty()) {
|
119
123
|
gpr_log(GPR_ERROR,
|
120
124
|
"'http_proxy' environment variable set, but cannot "
|
121
|
-
"parse server URI '%s' -- not using proxy",
|
122
|
-
server_uri);
|
125
|
+
"parse server URI '%s' -- not using proxy. Error: %s",
|
126
|
+
server_uri, uri.status().ToString().c_str());
|
123
127
|
goto no_use_proxy;
|
124
128
|
}
|
125
|
-
if (
|
129
|
+
if (uri->scheme() == "unix") {
|
126
130
|
gpr_log(GPR_INFO, "not using proxy for Unix domain socket '%s'",
|
127
131
|
server_uri);
|
128
132
|
goto no_use_proxy;
|
@@ -135,9 +139,8 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
135
139
|
bool use_proxy = true;
|
136
140
|
std::string server_host;
|
137
141
|
std::string server_port;
|
138
|
-
if (!
|
139
|
-
|
140
|
-
&server_port)) {
|
142
|
+
if (!SplitHostPort(absl::StripPrefix(uri->path(), "/"), &server_host,
|
143
|
+
&server_port)) {
|
141
144
|
gpr_log(GPR_INFO,
|
142
145
|
"unable to split host and port, not checking no_proxy list for "
|
143
146
|
"host '%s'",
|
@@ -172,8 +175,8 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
172
175
|
}
|
173
176
|
grpc_arg args_to_add[2];
|
174
177
|
args_to_add[0] = grpc_channel_arg_string_create(
|
175
|
-
(
|
176
|
-
uri->path
|
178
|
+
const_cast<char*>(GRPC_ARG_HTTP_CONNECT_SERVER),
|
179
|
+
const_cast<char*>(absl::StripPrefix(uri->path(), "/").data()));
|
177
180
|
if (user_cred != nullptr) {
|
178
181
|
/* Use base64 encoding for user credentials as stated in RFC 7617 */
|
179
182
|
char* encoded_user_cred =
|
@@ -188,11 +191,9 @@ class HttpProxyMapper : public ProxyMapperInterface {
|
|
188
191
|
} else {
|
189
192
|
*new_args = grpc_channel_args_copy_and_add(args, args_to_add, 1);
|
190
193
|
}
|
191
|
-
grpc_uri_destroy(uri);
|
192
194
|
gpr_free(user_cred);
|
193
195
|
return true;
|
194
196
|
no_use_proxy:
|
195
|
-
if (uri != nullptr) grpc_uri_destroy(uri);
|
196
197
|
gpr_free(*name_to_resolve);
|
197
198
|
*name_to_resolve = nullptr;
|
198
199
|
gpr_free(user_cred);
|