grpc 1.45.0 → 1.46.2
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 +36 -29
- data/include/grpc/impl/codegen/grpc_types.h +7 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
- data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
- data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
- data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
- data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
- data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
- data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
- data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
- data/src/core/ext/filters/http/client_authority_filter.h +6 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
- 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 +10 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
- 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 +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
- 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 +7 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
- 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/discovery.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
- data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
- data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
- data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
- data/src/core/ext/xds/certificate_provider_store.cc +8 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/xds_api.cc +20 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
- data/src/core/ext/xds/xds_certificate_provider.h +8 -0
- data/src/core/ext/xds/xds_client.cc +83 -93
- data/src/core/ext/xds/xds_client.h +11 -4
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
- data/src/core/ext/xds/xds_common_types.cc +9 -9
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +12 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
- data/src/core/ext/xds/xds_listener.cc +1 -1
- data/src/core/ext/xds/xds_route_config.cc +162 -25
- data/src/core/ext/xds/xds_route_config.h +13 -10
- data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
- data/src/core/lib/avl/avl.h +68 -5
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channel_args.cc +138 -59
- data/src/core/lib/channel/channel_args.h +210 -9
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
- data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
- data/src/core/lib/channel/channel_stack.h +2 -5
- data/src/core/lib/channel/channel_stack_builder.cc +0 -65
- data/src/core/lib/channel/channel_stack_builder.h +27 -6
- data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
- data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +495 -162
- data/src/core/lib/channel/promise_based_filter.h +55 -41
- data/src/core/lib/compression/compression_internal.cc +1 -7
- data/src/core/lib/debug/stats_data.cc +2 -6
- data/src/core/lib/debug/stats_data.h +18 -21
- data/src/core/lib/gpr/tls.h +1 -0
- data/src/core/lib/gprpp/bitset.h +12 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +2 -0
- data/src/core/lib/gprpp/single_set_ptr.h +87 -0
- data/src/core/lib/gprpp/status_helper.cc +18 -2
- data/src/core/lib/gprpp/time.cc +12 -0
- data/src/core/lib/gprpp/time.h +1 -1
- data/src/core/lib/http/format_request.cc +1 -2
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.cc +80 -9
- data/src/core/lib/http/parser.h +14 -1
- data/src/core/lib/iomgr/ev_posix.cc +6 -7
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/port.h +0 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +93 -35
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/promise/call_push_pull.h +144 -0
- data/src/core/lib/promise/detail/status.h +2 -1
- data/src/core/lib/promise/intra_activity_waiter.h +49 -0
- data/src/core/lib/promise/latch.h +104 -0
- data/src/core/lib/resource_quota/api.cc +5 -30
- data/src/core/lib/resource_quota/api.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
- data/src/core/lib/security/context/security_context.h +8 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
- data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
- data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
- data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
- data/src/core/lib/security/credentials/credentials.h +16 -33
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
- data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
- data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +9 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
- data/src/core/lib/security/transport/auth_filters.h +7 -7
- data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
- data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
- data/src/core/lib/security/transport/secure_endpoint.h +1 -1
- data/src/core/lib/security/transport/security_handshaker.cc +6 -4
- data/src/core/lib/surface/call.cc +1023 -903
- data/src/core/lib/surface/call.h +0 -14
- data/src/core/lib/surface/channel.cc +4 -3
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -6
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/server.cc +3 -14
- data/src/core/lib/surface/server.h +1 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +2 -0
- data/src/core/lib/transport/metadata_batch.h +12 -8
- data/src/core/lib/transport/transport.h +20 -5
- data/src/core/lib/transport/transport_impl.h +4 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +75 -38
- data/src/core/tsi/ssl_transport_security.h +8 -2
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
- data/src/ruby/lib/grpc/grpc.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -0
- data/src/ruby/pb/test/client.rb +769 -0
- data/src/ruby/pb/test/server.rb +252 -0
- data/src/ruby/pb/test/xds_client.rb +415 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/decode.c +32 -16
- data/third_party/upb/upb/def.c +118 -55
- data/third_party/upb/upb/def.h +12 -3
- data/third_party/upb/upb/encode.c +14 -8
- data/third_party/upb/upb/json_encode.c +776 -0
- data/third_party/upb/upb/json_encode.h +62 -0
- data/third_party/upb/upb/msg.c +5 -7
- data/third_party/upb/upb/msg.h +1 -2
- data/third_party/upb/upb/msg_internal.h +49 -36
- data/third_party/upb/upb/port_def.inc +8 -0
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/table.c +10 -6
- data/third_party/upb/upb/table_internal.h +2 -0
- data/third_party/upb/upb/upb.h +41 -11
- data/third_party/zlib/crc32.c +966 -292
- data/third_party/zlib/crc32.h +9441 -436
- data/third_party/zlib/deflate.c +78 -30
- data/third_party/zlib/deflate.h +12 -15
- data/third_party/zlib/gzguts.h +3 -2
- data/third_party/zlib/gzlib.c +5 -3
- data/third_party/zlib/gzread.c +5 -7
- data/third_party/zlib/gzwrite.c +25 -13
- data/third_party/zlib/infback.c +2 -1
- data/third_party/zlib/inffast.c +14 -14
- data/third_party/zlib/inflate.c +39 -8
- data/third_party/zlib/inflate.h +3 -2
- data/third_party/zlib/inftrees.c +3 -3
- data/third_party/zlib/trees.c +27 -48
- data/third_party/zlib/zlib.h +123 -100
- data/third_party/zlib/zutil.c +2 -2
- data/third_party/zlib/zutil.h +12 -9
- metadata +66 -45
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
- data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
- data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
- data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -20,6 +20,7 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/gpr/useful.h"
|
22
22
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
23
|
+
#include "src/core/lib/resource_quota/resource_quota.h"
|
23
24
|
|
24
25
|
namespace grpc_core {
|
25
26
|
|
@@ -30,30 +31,13 @@ ResourceQuotaRefPtr ResourceQuotaFromChannelArgs(
|
|
30
31
|
->Ref();
|
31
32
|
}
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
return grpc_channel_arg_pointer_create(
|
36
|
-
const_cast<char*>(GRPC_ARG_RESOURCE_QUOTA), quota,
|
37
|
-
grpc_resource_quota_arg_vtable());
|
38
|
-
}
|
39
|
-
|
40
|
-
const grpc_channel_args* EnsureResourceQuotaInChannelArgs(
|
41
|
-
const grpc_channel_args* args) {
|
42
|
-
const grpc_arg* existing =
|
43
|
-
grpc_channel_args_find(args, GRPC_ARG_RESOURCE_QUOTA);
|
44
|
-
if (existing != nullptr && existing->type == GRPC_ARG_POINTER &&
|
45
|
-
existing->value.pointer.p != nullptr) {
|
46
|
-
return grpc_channel_args_copy(args);
|
47
|
-
}
|
34
|
+
ChannelArgs EnsureResourceQuotaInChannelArgs(ChannelArgs args) {
|
35
|
+
if (args.GetObject<ResourceQuota>() != nullptr) return args;
|
48
36
|
// If there's no existing quota, add it to the default one - shared between
|
49
37
|
// all channel args declared thusly. This prevents us from accidentally not
|
50
38
|
// sharing subchannels due to their channel args not specifying a quota.
|
51
|
-
|
52
|
-
auto new_arg = MakeArg(ResourceQuota::Default().get());
|
53
|
-
return grpc_channel_args_copy_and_add_and_remove(args, remove, 1, &new_arg,
|
54
|
-
1);
|
39
|
+
return args.SetObject(ResourceQuota::Default());
|
55
40
|
}
|
56
|
-
} // namespace
|
57
41
|
|
58
42
|
void RegisterResourceQuota(CoreConfiguration::Builder* builder) {
|
59
43
|
builder->channel_args_preconditioning()->RegisterStage(
|
@@ -63,16 +47,7 @@ void RegisterResourceQuota(CoreConfiguration::Builder* builder) {
|
|
63
47
|
} // namespace grpc_core
|
64
48
|
|
65
49
|
extern "C" const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable() {
|
66
|
-
|
67
|
-
// copy
|
68
|
-
[](void* p) -> void* {
|
69
|
-
return static_cast<grpc_core::ResourceQuota*>(p)->Ref().release();
|
70
|
-
},
|
71
|
-
// destroy
|
72
|
-
[](void* p) { static_cast<grpc_core::ResourceQuota*>(p)->Unref(); },
|
73
|
-
// compare
|
74
|
-
[](void* p, void* q) { return grpc_core::QsortCompare(p, q); }};
|
75
|
-
return &vtable;
|
50
|
+
return grpc_core::ChannelArgTypeTraits<grpc_core::ResourceQuota>::VTable();
|
76
51
|
}
|
77
52
|
|
78
53
|
extern "C" grpc_resource_quota* grpc_resource_quota_create(const char* name) {
|
@@ -27,7 +27,7 @@ namespace grpc_core {
|
|
27
27
|
|
28
28
|
// TODO(ctiller): This is a hack. We need to do real accounting instead of
|
29
29
|
// hard coding.
|
30
|
-
constexpr size_t kResourceQuotaChannelSize =
|
30
|
+
constexpr size_t kResourceQuotaChannelSize = 34 * 1024;
|
31
31
|
|
32
32
|
// Retrieve the resource quota from the channel args.
|
33
33
|
// UB if not set.
|
@@ -19,6 +19,7 @@
|
|
19
19
|
|
20
20
|
#include <grpc/impl/codegen/grpc_types.h>
|
21
21
|
|
22
|
+
#include "src/core/lib/gpr/useful.h"
|
22
23
|
#include "src/core/lib/gprpp/cpp_impl_of.h"
|
23
24
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
24
25
|
#include "src/core/lib/resource_quota/thread_quota.h"
|
@@ -37,6 +38,8 @@ class ResourceQuota : public RefCounted<ResourceQuota>,
|
|
37
38
|
ResourceQuota(const ResourceQuota&) = delete;
|
38
39
|
ResourceQuota& operator=(const ResourceQuota&) = delete;
|
39
40
|
|
41
|
+
static absl::string_view ChannelArgName() { return GRPC_ARG_RESOURCE_QUOTA; }
|
42
|
+
|
40
43
|
MemoryQuotaRefPtr memory_quota() { return memory_quota_; }
|
41
44
|
|
42
45
|
const RefCountedPtr<ThreadQuota>& thread_quota() { return thread_quota_; }
|
@@ -44,6 +47,11 @@ class ResourceQuota : public RefCounted<ResourceQuota>,
|
|
44
47
|
// The default global resource quota
|
45
48
|
static ResourceQuotaRefPtr Default();
|
46
49
|
|
50
|
+
static int ChannelArgsCompare(const ResourceQuota* a,
|
51
|
+
const ResourceQuota* b) {
|
52
|
+
return QsortCompare(a, b);
|
53
|
+
}
|
54
|
+
|
47
55
|
private:
|
48
56
|
MemoryQuotaRefPtr memory_quota_;
|
49
57
|
RefCountedPtr<ThreadQuota> thread_quota_;
|
@@ -23,6 +23,13 @@
|
|
23
23
|
struct grpc_authorization_policy_provider
|
24
24
|
: public grpc_core::DualRefCounted<grpc_authorization_policy_provider> {
|
25
25
|
public:
|
26
|
+
static absl::string_view ChannelArgName() {
|
27
|
+
return GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER;
|
28
|
+
}
|
29
|
+
static int ChannelArgsCompare(const grpc_authorization_policy_provider* a,
|
30
|
+
const grpc_authorization_policy_provider* b) {
|
31
|
+
return QsortCompare(a, b);
|
32
|
+
}
|
26
33
|
struct AuthorizationEngines {
|
27
34
|
grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> allow_engine;
|
28
35
|
grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> deny_engine;
|
@@ -32,11 +32,9 @@ GrpcServerAuthzFilter::GrpcServerAuthzFilter(
|
|
32
32
|
provider_(std::move(provider)) {}
|
33
33
|
|
34
34
|
absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
grpc_channel_args_find_pointer<grpc_authorization_policy_provider>(
|
39
|
-
args, GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER);
|
35
|
+
ChannelArgs args, ChannelFilter::Args) {
|
36
|
+
auto* auth_context = args.GetObject<grpc_auth_context>();
|
37
|
+
auto* provider = args.GetObject<grpc_authorization_policy_provider>();
|
40
38
|
if (provider == nullptr) {
|
41
39
|
return absl::InvalidArgumentError("Failed to get authorization provider.");
|
42
40
|
}
|
@@ -49,7 +47,7 @@ absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
|
|
49
47
|
}
|
50
48
|
|
51
49
|
bool GrpcServerAuthzFilter::IsAuthorized(
|
52
|
-
const
|
50
|
+
const ClientMetadataHandle& initial_metadata) {
|
53
51
|
EvaluateArgs args(initial_metadata.get(), &per_channel_evaluate_args_);
|
54
52
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_authz_trace)) {
|
55
53
|
gpr_log(GPR_DEBUG,
|
@@ -92,14 +90,13 @@ bool GrpcServerAuthzFilter::IsAuthorized(
|
|
92
90
|
return false;
|
93
91
|
}
|
94
92
|
|
95
|
-
ArenaPromise<
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
return ArenaPromise<TrailingMetadata>(Immediate(TrailingMetadata(
|
93
|
+
ArenaPromise<ServerMetadataHandle> GrpcServerAuthzFilter::MakeCallPromise(
|
94
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) {
|
95
|
+
if (!IsAuthorized(call_args.client_initial_metadata)) {
|
96
|
+
return ArenaPromise<ServerMetadataHandle>(Immediate(ServerMetadataHandle(
|
100
97
|
absl::PermissionDeniedError("Unauthorized RPC request rejected."))));
|
101
98
|
}
|
102
|
-
return next_promise_factory(std::move(
|
99
|
+
return next_promise_factory(std::move(call_args));
|
103
100
|
}
|
104
101
|
|
105
102
|
const grpc_channel_filter GrpcServerAuthzFilter::kFilterVtable =
|
@@ -27,19 +27,18 @@ class GrpcServerAuthzFilter final : public ChannelFilter {
|
|
27
27
|
public:
|
28
28
|
static const grpc_channel_filter kFilterVtable;
|
29
29
|
|
30
|
-
static absl::StatusOr<GrpcServerAuthzFilter> Create(
|
31
|
-
|
30
|
+
static absl::StatusOr<GrpcServerAuthzFilter> Create(ChannelArgs args,
|
31
|
+
ChannelFilter::Args);
|
32
32
|
|
33
|
-
ArenaPromise<
|
34
|
-
|
35
|
-
NextPromiseFactory next_promise_factory) override;
|
33
|
+
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
34
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
36
35
|
|
37
36
|
private:
|
38
37
|
GrpcServerAuthzFilter(
|
39
38
|
RefCountedPtr<grpc_auth_context> auth_context, grpc_endpoint* endpoint,
|
40
39
|
RefCountedPtr<grpc_authorization_policy_provider> provider);
|
41
40
|
|
42
|
-
bool IsAuthorized(const
|
41
|
+
bool IsAuthorized(const ClientMetadataHandle& initial_metadata);
|
43
42
|
|
44
43
|
RefCountedPtr<grpc_auth_context> auth_context_;
|
45
44
|
EvaluateArgs::PerChannelArgs per_channel_evaluate_args_;
|
@@ -43,6 +43,8 @@ struct grpc_auth_property_array {
|
|
43
43
|
|
44
44
|
void grpc_auth_property_reset(grpc_auth_property* property);
|
45
45
|
|
46
|
+
#define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context"
|
47
|
+
|
46
48
|
// This type is forward declared as a C struct and we cannot define it as a
|
47
49
|
// class. Otherwise, compiler will complain about type mismatch due to
|
48
50
|
// -Wmismatched-tags.
|
@@ -73,6 +75,12 @@ struct grpc_auth_context
|
|
73
75
|
}
|
74
76
|
}
|
75
77
|
|
78
|
+
static absl::string_view ChannelArgName() { return GRPC_AUTH_CONTEXT_ARG; }
|
79
|
+
static int ChannelArgsCompare(const grpc_auth_context* a,
|
80
|
+
const grpc_auth_context* b) {
|
81
|
+
return QsortCompare(a, b);
|
82
|
+
}
|
83
|
+
|
76
84
|
const grpc_auth_context* chained() const { return chained_.get(); }
|
77
85
|
const grpc_auth_property_array& properties() const { return properties_; }
|
78
86
|
|
@@ -142,7 +150,6 @@ grpc_server_security_context* grpc_server_security_context_create(
|
|
142
150
|
void grpc_server_security_context_destroy(void* ctx);
|
143
151
|
|
144
152
|
/* --- Channel args for auth context --- */
|
145
|
-
#define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context"
|
146
153
|
|
147
154
|
grpc_arg grpc_auth_context_to_arg(grpc_auth_context* c);
|
148
155
|
grpc_auth_context* grpc_auth_context_from_arg(const grpc_arg* arg);
|
@@ -30,14 +30,12 @@
|
|
30
30
|
#include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
|
31
31
|
#include "src/core/lib/security/security_connector/alts/alts_security_connector.h"
|
32
32
|
|
33
|
-
#define GRPC_CREDENTIALS_TYPE_ALTS "Alts"
|
34
33
|
#define GRPC_ALTS_HANDSHAKER_SERVICE_URL "metadata.google.internal.:8080"
|
35
34
|
|
36
35
|
grpc_alts_credentials::grpc_alts_credentials(
|
37
36
|
const grpc_alts_credentials_options* options,
|
38
37
|
const char* handshaker_service_url)
|
39
|
-
:
|
40
|
-
options_(grpc_alts_credentials_options_copy(options)),
|
38
|
+
: options_(grpc_alts_credentials_options_copy(options)),
|
41
39
|
handshaker_service_url_(handshaker_service_url == nullptr
|
42
40
|
? gpr_strdup(GRPC_ALTS_HANDSHAKER_SERVICE_URL)
|
43
41
|
: gpr_strdup(handshaker_service_url)) {
|
@@ -58,11 +56,12 @@ grpc_alts_credentials::create_security_connector(
|
|
58
56
|
this->Ref(), std::move(call_creds), target_name);
|
59
57
|
}
|
60
58
|
|
59
|
+
const char* grpc_alts_credentials::type() const { return "Alts"; }
|
60
|
+
|
61
61
|
grpc_alts_server_credentials::grpc_alts_server_credentials(
|
62
62
|
const grpc_alts_credentials_options* options,
|
63
63
|
const char* handshaker_service_url)
|
64
|
-
:
|
65
|
-
options_(grpc_alts_credentials_options_copy(options)),
|
64
|
+
: options_(grpc_alts_credentials_options_copy(options)),
|
66
65
|
handshaker_service_url_(handshaker_service_url == nullptr
|
67
66
|
? gpr_strdup(GRPC_ALTS_HANDSHAKER_SERVICE_URL)
|
68
67
|
: gpr_strdup(handshaker_service_url)) {
|
@@ -80,6 +79,8 @@ grpc_alts_server_credentials::~grpc_alts_server_credentials() {
|
|
80
79
|
gpr_free(handshaker_service_url_);
|
81
80
|
}
|
82
81
|
|
82
|
+
const char* grpc_alts_server_credentials::type() const { return "Alts"; }
|
83
|
+
|
83
84
|
grpc_channel_credentials* grpc_alts_credentials_create_customized(
|
84
85
|
const grpc_alts_credentials_options* options,
|
85
86
|
const char* handshaker_service_url, bool enable_untrusted_alts) {
|
@@ -39,6 +39,8 @@ class grpc_alts_credentials final : public grpc_channel_credentials {
|
|
39
39
|
const char* target_name, const grpc_channel_args* args,
|
40
40
|
grpc_channel_args** new_args) override;
|
41
41
|
|
42
|
+
const char* type() const override;
|
43
|
+
|
42
44
|
const grpc_alts_credentials_options* options() const { return options_; }
|
43
45
|
grpc_alts_credentials_options* mutable_options() { return options_; }
|
44
46
|
const char* handshaker_service_url() const { return handshaker_service_url_; }
|
@@ -64,6 +66,8 @@ class grpc_alts_server_credentials final : public grpc_server_credentials {
|
|
64
66
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
65
67
|
create_security_connector(const grpc_channel_args* /* args */) override;
|
66
68
|
|
69
|
+
const char* type() const override;
|
70
|
+
|
67
71
|
const grpc_alts_credentials_options* options() const { return options_; }
|
68
72
|
grpc_alts_credentials_options* mutable_options() { return options_; }
|
69
73
|
const char* handshaker_service_url() const { return handshaker_service_url_; }
|
@@ -31,7 +31,7 @@ struct ServiceUrlAndMethod {
|
|
31
31
|
};
|
32
32
|
|
33
33
|
ServiceUrlAndMethod MakeServiceUrlAndMethod(
|
34
|
-
const
|
34
|
+
const ClientMetadataHandle& initial_metadata,
|
35
35
|
const grpc_call_credentials::GetRequestMetadataArgs* args) {
|
36
36
|
auto service =
|
37
37
|
initial_metadata->get_pointer(HttpPathMetadata())->as_string_view();
|
@@ -65,13 +65,13 @@ ServiceUrlAndMethod MakeServiceUrlAndMethod(
|
|
65
65
|
} // namespace
|
66
66
|
|
67
67
|
std::string MakeJwtServiceUrl(
|
68
|
-
const
|
68
|
+
const ClientMetadataHandle& initial_metadata,
|
69
69
|
const grpc_call_credentials::GetRequestMetadataArgs* args) {
|
70
70
|
return MakeServiceUrlAndMethod(initial_metadata, args).service_url;
|
71
71
|
}
|
72
72
|
|
73
73
|
grpc_auth_metadata_context MakePluginAuthMetadataContext(
|
74
|
-
const
|
74
|
+
const ClientMetadataHandle& initial_metadata,
|
75
75
|
const grpc_call_credentials::GetRequestMetadataArgs* args) {
|
76
76
|
auto fields = MakeServiceUrlAndMethod(initial_metadata, args);
|
77
77
|
grpc_auth_metadata_context ctx;
|
@@ -29,12 +29,12 @@ namespace grpc_core {
|
|
29
29
|
|
30
30
|
// Helper function to construct service URL for jwt call creds.
|
31
31
|
std::string MakeJwtServiceUrl(
|
32
|
-
const
|
32
|
+
const ClientMetadataHandle& initial_metadata,
|
33
33
|
const grpc_call_credentials::GetRequestMetadataArgs* args);
|
34
34
|
|
35
35
|
// Helper function to construct context for plugin call creds.
|
36
36
|
grpc_auth_metadata_context MakePluginAuthMetadataContext(
|
37
|
-
const
|
37
|
+
const ClientMetadataHandle& initial_metadata,
|
38
38
|
const grpc_call_credentials::GetRequestMetadataArgs* args);
|
39
39
|
|
40
40
|
} // namespace grpc_core
|
@@ -37,25 +37,31 @@
|
|
37
37
|
#include "src/core/lib/surface/api_trace.h"
|
38
38
|
#include "src/core/lib/transport/transport.h"
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
//
|
41
|
+
// grpc_composite_channel_credentials
|
42
|
+
//
|
43
|
+
|
44
|
+
const char* grpc_composite_channel_credentials::type() const {
|
45
|
+
return "Composite";
|
46
|
+
}
|
43
47
|
|
44
48
|
/* -- Composite call credentials. -- */
|
45
49
|
|
46
|
-
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::
|
50
|
+
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
|
47
51
|
grpc_composite_call_credentials::GetRequestMetadata(
|
48
|
-
grpc_core::
|
52
|
+
grpc_core::ClientMetadataHandle initial_metadata,
|
49
53
|
const grpc_call_credentials::GetRequestMetadataArgs* args) {
|
50
54
|
auto self = Ref();
|
51
55
|
return TrySeqIter(
|
52
56
|
inner_.begin(), inner_.end(), std::move(initial_metadata),
|
53
57
|
[self, args](const grpc_core::RefCountedPtr<grpc_call_credentials>& creds,
|
54
|
-
grpc_core::
|
58
|
+
grpc_core::ClientMetadataHandle initial_metadata) {
|
55
59
|
return creds->GetRequestMetadata(std::move(initial_metadata), args);
|
56
60
|
});
|
57
61
|
}
|
58
62
|
|
63
|
+
const char* grpc_composite_call_credentials::Type() { return "Composite"; }
|
64
|
+
|
59
65
|
std::string grpc_composite_call_credentials::debug_string() {
|
60
66
|
std::vector<std::string> outputs;
|
61
67
|
for (auto& inner_cred : inner_) {
|
@@ -89,12 +95,11 @@ void grpc_composite_call_credentials::push_to_inner(
|
|
89
95
|
|
90
96
|
grpc_composite_call_credentials::grpc_composite_call_credentials(
|
91
97
|
grpc_core::RefCountedPtr<grpc_call_credentials> creds1,
|
92
|
-
grpc_core::RefCountedPtr<grpc_call_credentials> creds2)
|
93
|
-
: grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) {
|
98
|
+
grpc_core::RefCountedPtr<grpc_call_credentials> creds2) {
|
94
99
|
const bool creds1_is_composite =
|
95
|
-
|
100
|
+
creds1->type() == grpc_composite_call_credentials::Type();
|
96
101
|
const bool creds2_is_composite =
|
97
|
-
|
102
|
+
creds2->type() == grpc_composite_call_credentials::Type();
|
98
103
|
const size_t size = get_creds_array_size(creds1.get(), creds1_is_composite) +
|
99
104
|
get_creds_array_size(creds2.get(), creds2_is_composite);
|
100
105
|
inner_.reserve(size);
|
@@ -30,17 +30,12 @@
|
|
30
30
|
|
31
31
|
/* -- Composite channel credentials. -- */
|
32
32
|
|
33
|
-
namespace grpc_core {
|
34
|
-
extern const char kCredentialsTypeComposite[];
|
35
|
-
}
|
36
|
-
|
37
33
|
class grpc_composite_channel_credentials : public grpc_channel_credentials {
|
38
34
|
public:
|
39
35
|
grpc_composite_channel_credentials(
|
40
36
|
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
|
41
37
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds)
|
42
|
-
:
|
43
|
-
inner_creds_(std::move(channel_creds)),
|
38
|
+
: inner_creds_(std::move(channel_creds)),
|
44
39
|
call_creds_(std::move(call_creds)) {}
|
45
40
|
|
46
41
|
~grpc_composite_channel_credentials() override = default;
|
@@ -60,6 +55,8 @@ class grpc_composite_channel_credentials : public grpc_channel_credentials {
|
|
60
55
|
return inner_creds_->update_arguments(args);
|
61
56
|
}
|
62
57
|
|
58
|
+
const char* type() const override;
|
59
|
+
|
63
60
|
const grpc_channel_credentials* inner_creds() const {
|
64
61
|
return inner_creds_.get();
|
65
62
|
}
|
@@ -90,8 +87,8 @@ class grpc_composite_call_credentials : public grpc_call_credentials {
|
|
90
87
|
grpc_core::RefCountedPtr<grpc_call_credentials> creds2);
|
91
88
|
~grpc_composite_call_credentials() override = default;
|
92
89
|
|
93
|
-
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::
|
94
|
-
GetRequestMetadata(grpc_core::
|
90
|
+
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
|
91
|
+
GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
|
95
92
|
const GetRequestMetadataArgs* args) override;
|
96
93
|
|
97
94
|
grpc_security_level min_security_level() const override {
|
@@ -101,6 +98,10 @@ class grpc_composite_call_credentials : public grpc_call_credentials {
|
|
101
98
|
const CallCredentialsList& inner() const { return inner_; }
|
102
99
|
std::string debug_string() override;
|
103
100
|
|
101
|
+
static const char* Type();
|
102
|
+
|
103
|
+
const char* type() const override { return Type(); }
|
104
|
+
|
104
105
|
private:
|
105
106
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
106
107
|
// TODO(yashykt): Check if we can do something better here
|
@@ -48,17 +48,6 @@ typedef enum {
|
|
48
48
|
|
49
49
|
#define GRPC_FAKE_TRANSPORT_SECURITY_TYPE "fake"
|
50
50
|
|
51
|
-
#define GRPC_CHANNEL_CREDENTIALS_TYPE_SSL "Ssl"
|
52
|
-
#define GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY \
|
53
|
-
"FakeTransportSecurity"
|
54
|
-
#define GRPC_CHANNEL_CREDENTIALS_TYPE_GOOGLE_DEFAULT "GoogleDefault"
|
55
|
-
#define GRPC_CREDENTIALS_TYPE_INSECURE "insecure"
|
56
|
-
|
57
|
-
#define GRPC_CALL_CREDENTIALS_TYPE_OAUTH2 "Oauth2"
|
58
|
-
#define GRPC_CALL_CREDENTIALS_TYPE_JWT "Jwt"
|
59
|
-
#define GRPC_CALL_CREDENTIALS_TYPE_IAM "Iam"
|
60
|
-
#define GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE "Composite"
|
61
|
-
|
62
51
|
#define GRPC_AUTHORIZATION_METADATA_KEY "authorization"
|
63
52
|
#define GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY \
|
64
53
|
"x-goog-iam-authorization-token"
|
@@ -103,13 +92,6 @@ void grpc_override_well_known_credentials_path_getter(
|
|
103
92
|
struct grpc_channel_credentials
|
104
93
|
: grpc_core::RefCounted<grpc_channel_credentials> {
|
105
94
|
public:
|
106
|
-
// The pointer value \a type is used to uniquely identify a creds
|
107
|
-
// implementation for down-casting purposes. Every creds implementation should
|
108
|
-
// use a unique string instance, which should be returned by all instances of
|
109
|
-
// that creds implementation.
|
110
|
-
explicit grpc_channel_credentials(const char* type) : type_(type) {}
|
111
|
-
~grpc_channel_credentials() override = default;
|
112
|
-
|
113
95
|
// Creates a security connector for the channel. May also create new channel
|
114
96
|
// args for the channel to be used in place of the passed in const args if
|
115
97
|
// returned non NULL. In that case the caller is responsible for destroying
|
@@ -154,14 +136,16 @@ struct grpc_channel_credentials
|
|
154
136
|
return cmp_impl(other);
|
155
137
|
}
|
156
138
|
|
157
|
-
|
139
|
+
// The pointer value \a type is used to uniquely identify a creds
|
140
|
+
// implementation for down-casting purposes. Every creds implementation should
|
141
|
+
// use a unique string instance, which should be returned by all instances of
|
142
|
+
// that creds implementation.
|
143
|
+
virtual const char* type() const = 0;
|
158
144
|
|
159
145
|
private:
|
160
146
|
// Implementation for `cmp` method intended to be overridden by subclasses.
|
161
|
-
// Only invoked if `type()` and `other->type()`
|
147
|
+
// Only invoked if `type()` and `other->type()` point to the same string.
|
162
148
|
virtual int cmp_impl(const grpc_channel_credentials* other) const = 0;
|
163
|
-
|
164
|
-
const char* type_;
|
165
149
|
};
|
166
150
|
|
167
151
|
// TODO(roth): Once we eliminate insecure builds, find a better way to
|
@@ -209,15 +193,14 @@ struct grpc_call_credentials
|
|
209
193
|
// use a unique string instance, which should be returned by all instances of
|
210
194
|
// that creds implementation.
|
211
195
|
explicit grpc_call_credentials(
|
212
|
-
const char* type,
|
213
196
|
grpc_security_level min_security_level = GRPC_PRIVACY_AND_INTEGRITY)
|
214
|
-
:
|
197
|
+
: min_security_level_(min_security_level) {}
|
215
198
|
|
216
199
|
~grpc_call_credentials() override = default;
|
217
200
|
|
218
201
|
virtual grpc_core::ArenaPromise<
|
219
|
-
absl::StatusOr<grpc_core::
|
220
|
-
GetRequestMetadata(grpc_core::
|
202
|
+
absl::StatusOr<grpc_core::ClientMetadataHandle>>
|
203
|
+
GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
|
221
204
|
const GetRequestMetadataArgs* args) = 0;
|
222
205
|
|
223
206
|
virtual grpc_security_level min_security_level() const {
|
@@ -240,14 +223,17 @@ struct grpc_call_credentials
|
|
240
223
|
return "grpc_call_credentials did not provide debug string";
|
241
224
|
}
|
242
225
|
|
243
|
-
|
226
|
+
// The pointer value \a type is used to uniquely identify a creds
|
227
|
+
// implementation for down-casting purposes. Every creds implementation should
|
228
|
+
// use a unique string instance, which should be returned by all instances of
|
229
|
+
// that creds implementation.
|
230
|
+
virtual const char* type() const = 0;
|
244
231
|
|
245
232
|
private:
|
246
233
|
// Implementation for `cmp` method intended to be overridden by subclasses.
|
247
|
-
// Only invoked if `type()` and `other->type()`
|
234
|
+
// Only invoked if `type()` and `other->type()` point to the same string.
|
248
235
|
virtual int cmp_impl(const grpc_call_credentials* other) const = 0;
|
249
236
|
|
250
|
-
const char* type_;
|
251
237
|
const grpc_security_level min_security_level_;
|
252
238
|
};
|
253
239
|
|
@@ -264,15 +250,13 @@ grpc_call_credentials* grpc_md_only_test_credentials_create(
|
|
264
250
|
struct grpc_server_credentials
|
265
251
|
: public grpc_core::RefCounted<grpc_server_credentials> {
|
266
252
|
public:
|
267
|
-
explicit grpc_server_credentials(const char* type) : type_(type) {}
|
268
|
-
|
269
253
|
~grpc_server_credentials() override { DestroyProcessor(); }
|
270
254
|
|
271
255
|
// Ownership of \a args is not passed.
|
272
256
|
virtual grpc_core::RefCountedPtr<grpc_server_security_connector>
|
273
257
|
create_security_connector(const grpc_channel_args* args) = 0;
|
274
258
|
|
275
|
-
const char* type() const
|
259
|
+
virtual const char* type() const = 0;
|
276
260
|
|
277
261
|
const grpc_auth_metadata_processor& auth_metadata_processor() const {
|
278
262
|
return processor_;
|
@@ -287,7 +271,6 @@ struct grpc_server_credentials
|
|
287
271
|
}
|
288
272
|
}
|
289
273
|
|
290
|
-
const char* type_;
|
291
274
|
grpc_auth_metadata_processor processor_ =
|
292
275
|
grpc_auth_metadata_processor(); // Zero-initialize the C struct.
|
293
276
|
};
|
@@ -37,11 +37,6 @@
|
|
37
37
|
namespace {
|
38
38
|
class grpc_fake_channel_credentials final : public grpc_channel_credentials {
|
39
39
|
public:
|
40
|
-
grpc_fake_channel_credentials()
|
41
|
-
: grpc_channel_credentials(
|
42
|
-
GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY) {}
|
43
|
-
~grpc_fake_channel_credentials() override = default;
|
44
|
-
|
45
40
|
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
46
41
|
create_security_connector(
|
47
42
|
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
@@ -51,6 +46,8 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
|
|
51
46
|
this->Ref(), std::move(call_creds), target, args);
|
52
47
|
}
|
53
48
|
|
49
|
+
const char* type() const override { return "Fake"; }
|
50
|
+
|
54
51
|
private:
|
55
52
|
int cmp_impl(const grpc_channel_credentials* other) const override {
|
56
53
|
// TODO(yashykt): Check if we can do something better here
|
@@ -61,15 +58,12 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
|
|
61
58
|
|
62
59
|
class grpc_fake_server_credentials final : public grpc_server_credentials {
|
63
60
|
public:
|
64
|
-
grpc_fake_server_credentials()
|
65
|
-
: grpc_server_credentials(
|
66
|
-
GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY) {}
|
67
|
-
~grpc_fake_server_credentials() override = default;
|
68
|
-
|
69
61
|
grpc_core::RefCountedPtr<grpc_server_security_connector>
|
70
62
|
create_security_connector(const grpc_channel_args* /*args*/) override {
|
71
63
|
return grpc_fake_server_security_connector_create(this->Ref());
|
72
64
|
}
|
65
|
+
|
66
|
+
const char* type() const override { return "Fake"; }
|
73
67
|
};
|
74
68
|
} // namespace
|
75
69
|
|
@@ -97,9 +91,9 @@ const char* grpc_fake_transport_get_expected_targets(
|
|
97
91
|
|
98
92
|
/* -- Metadata-only test credentials. -- */
|
99
93
|
|
100
|
-
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::
|
94
|
+
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
|
101
95
|
grpc_md_only_test_credentials::GetRequestMetadata(
|
102
|
-
grpc_core::
|
96
|
+
grpc_core::ClientMetadataHandle initial_metadata,
|
103
97
|
const grpc_call_credentials::GetRequestMetadataArgs*) {
|
104
98
|
initial_metadata->Append(
|
105
99
|
key_.as_string_view(), value_.Ref(),
|
@@ -107,6 +101,8 @@ grpc_md_only_test_credentials::GetRequestMetadata(
|
|
107
101
|
return grpc_core::Immediate(std::move(initial_metadata));
|
108
102
|
}
|
109
103
|
|
104
|
+
const char* grpc_md_only_test_credentials::Type() { return "MdOnlyTest"; }
|
105
|
+
|
110
106
|
grpc_call_credentials* grpc_md_only_test_credentials_create(
|
111
107
|
const char* md_key, const char* md_value) {
|
112
108
|
return new grpc_md_only_test_credentials(md_key, md_value);
|
@@ -60,16 +60,19 @@ const char* grpc_fake_transport_get_expected_targets(
|
|
60
60
|
class grpc_md_only_test_credentials : public grpc_call_credentials {
|
61
61
|
public:
|
62
62
|
grpc_md_only_test_credentials(const char* md_key, const char* md_value)
|
63
|
-
: grpc_call_credentials(
|
64
|
-
GRPC_SECURITY_NONE),
|
63
|
+
: grpc_call_credentials(GRPC_SECURITY_NONE),
|
65
64
|
key_(grpc_core::Slice::FromCopiedString(md_key)),
|
66
65
|
value_(grpc_core::Slice::FromCopiedString(md_value)) {}
|
67
66
|
|
68
|
-
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::
|
69
|
-
GetRequestMetadata(grpc_core::
|
67
|
+
grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
|
68
|
+
GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
|
70
69
|
const GetRequestMetadataArgs* args) override;
|
71
70
|
|
72
|
-
std::string debug_string() override { return "MD only Test Credentials"; }
|
71
|
+
std::string debug_string() override { return "MD only Test Credentials"; }
|
72
|
+
|
73
|
+
static const char* Type();
|
74
|
+
|
75
|
+
const char* type() const override { return Type(); }
|
73
76
|
|
74
77
|
private:
|
75
78
|
int cmp_impl(const grpc_call_credentials* other) const override {
|
@@ -138,6 +138,10 @@ grpc_channel_args* grpc_google_default_channel_credentials::update_arguments(
|
|
138
138
|
return updated;
|
139
139
|
}
|
140
140
|
|
141
|
+
const char* grpc_google_default_channel_credentials::type() const {
|
142
|
+
return "GoogleDefault";
|
143
|
+
}
|
144
|
+
|
141
145
|
static void on_metadata_server_detection_http_response(
|
142
146
|
void* user_data, grpc_error_handle error) {
|
143
147
|
metadata_server_detector* detector =
|
@@ -46,9 +46,7 @@ class grpc_google_default_channel_credentials
|
|
46
46
|
grpc_google_default_channel_credentials(
|
47
47
|
grpc_core::RefCountedPtr<grpc_channel_credentials> alts_creds,
|
48
48
|
grpc_core::RefCountedPtr<grpc_channel_credentials> ssl_creds)
|
49
|
-
:
|
50
|
-
alts_creds_(std::move(alts_creds)),
|
51
|
-
ssl_creds_(std::move(ssl_creds)) {}
|
49
|
+
: alts_creds_(std::move(alts_creds)), ssl_creds_(std::move(ssl_creds)) {}
|
52
50
|
|
53
51
|
~grpc_google_default_channel_credentials() override = default;
|
54
52
|
|
@@ -60,6 +58,8 @@ class grpc_google_default_channel_credentials
|
|
60
58
|
|
61
59
|
grpc_channel_args* update_arguments(grpc_channel_args* args) override;
|
62
60
|
|
61
|
+
const char* type() const override;
|
62
|
+
|
63
63
|
const grpc_channel_credentials* alts_creds() const {
|
64
64
|
return alts_creds_.get();
|
65
65
|
}
|