grpc 1.45.0 → 1.46.3
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_bootstrap.cc +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +2 -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 +87 -95
- data/src/core/ext/xds/xds_client.h +13 -5
- 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
@@ -33,13 +33,14 @@ namespace grpc_core {
|
|
33
33
|
|
34
34
|
class ClientAuthorityFilter final : public ChannelFilter {
|
35
35
|
public:
|
36
|
-
static
|
37
|
-
|
36
|
+
static const grpc_channel_filter kFilter;
|
37
|
+
|
38
|
+
static absl::StatusOr<ClientAuthorityFilter> Create(ChannelArgs args,
|
39
|
+
ChannelFilter::Args);
|
38
40
|
|
39
41
|
// Construct a promise for one call.
|
40
|
-
ArenaPromise<
|
41
|
-
|
42
|
-
NextPromiseFactory next_promise_factory) override;
|
42
|
+
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
43
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
43
44
|
|
44
45
|
private:
|
45
46
|
explicit ClientAuthorityFilter(Slice default_authority)
|
@@ -66,6 +66,9 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
|
|
66
66
|
return true;
|
67
67
|
});
|
68
68
|
};
|
69
|
+
// TODO(ctiller): return this flag to true once the promise conversion is
|
70
|
+
// complete.
|
71
|
+
static constexpr bool kMinimalStackHasDecompression = false;
|
69
72
|
optional(GRPC_CLIENT_SUBCHANNEL, false,
|
70
73
|
GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION,
|
71
74
|
&grpc_message_compress_filter);
|
@@ -74,14 +77,14 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
|
|
74
77
|
&grpc_message_compress_filter);
|
75
78
|
optional(GRPC_SERVER_CHANNEL, false, GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION,
|
76
79
|
&grpc_message_compress_filter);
|
77
|
-
optional(GRPC_CLIENT_SUBCHANNEL,
|
80
|
+
optional(GRPC_CLIENT_SUBCHANNEL, kMinimalStackHasDecompression,
|
78
81
|
GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
|
79
|
-
optional(GRPC_CLIENT_DIRECT_CHANNEL,
|
82
|
+
optional(GRPC_CLIENT_DIRECT_CHANNEL, kMinimalStackHasDecompression,
|
80
83
|
GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
|
81
|
-
optional(GRPC_SERVER_CHANNEL,
|
82
|
-
&MessageDecompressFilter);
|
83
|
-
required(GRPC_CLIENT_SUBCHANNEL, &
|
84
|
-
required(GRPC_CLIENT_DIRECT_CHANNEL, &
|
84
|
+
optional(GRPC_SERVER_CHANNEL, kMinimalStackHasDecompression,
|
85
|
+
GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
|
86
|
+
required(GRPC_CLIENT_SUBCHANNEL, &HttpClientFilter::kFilter);
|
87
|
+
required(GRPC_CLIENT_DIRECT_CHANNEL, &HttpClientFilter::kFilter);
|
85
88
|
required(GRPC_SERVER_CHANNEL, &grpc_http_server_filter);
|
86
89
|
}
|
87
90
|
} // namespace grpc_core
|
@@ -37,7 +37,6 @@ static void hs_recv_initial_metadata_ready(void* user_data,
|
|
37
37
|
grpc_error_handle err);
|
38
38
|
static void hs_recv_trailing_metadata_ready(void* user_data,
|
39
39
|
grpc_error_handle err);
|
40
|
-
static void hs_recv_message_ready(void* user_data, grpc_error_handle err);
|
41
40
|
|
42
41
|
namespace {
|
43
42
|
|
@@ -47,27 +46,15 @@ struct call_data {
|
|
47
46
|
GRPC_CLOSURE_INIT(&recv_initial_metadata_ready,
|
48
47
|
hs_recv_initial_metadata_ready, elem,
|
49
48
|
grpc_schedule_on_exec_ctx);
|
50
|
-
GRPC_CLOSURE_INIT(&recv_message_ready, hs_recv_message_ready, elem,
|
51
|
-
grpc_schedule_on_exec_ctx);
|
52
49
|
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready,
|
53
50
|
hs_recv_trailing_metadata_ready, elem,
|
54
51
|
grpc_schedule_on_exec_ctx);
|
55
52
|
}
|
56
53
|
|
57
|
-
~call_data() {
|
58
|
-
GRPC_ERROR_UNREF(recv_initial_metadata_ready_error);
|
59
|
-
if (have_read_stream) {
|
60
|
-
read_stream->Orphan();
|
61
|
-
}
|
62
|
-
}
|
54
|
+
~call_data() { GRPC_ERROR_UNREF(recv_initial_metadata_ready_error); }
|
63
55
|
|
64
56
|
grpc_core::CallCombiner* call_combiner;
|
65
57
|
|
66
|
-
// If we see the recv_message contents in the GET query string, we
|
67
|
-
// store it here.
|
68
|
-
grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> read_stream;
|
69
|
-
bool have_read_stream = false;
|
70
|
-
|
71
58
|
// State for intercepting recv_initial_metadata.
|
72
59
|
grpc_closure recv_initial_metadata_ready;
|
73
60
|
grpc_error_handle recv_initial_metadata_ready_error = GRPC_ERROR_NONE;
|
@@ -76,12 +63,6 @@ struct call_data {
|
|
76
63
|
uint32_t* recv_initial_metadata_flags;
|
77
64
|
bool seen_recv_initial_metadata_ready = false;
|
78
65
|
|
79
|
-
// State for intercepting recv_message.
|
80
|
-
grpc_closure* original_recv_message_ready;
|
81
|
-
grpc_closure recv_message_ready;
|
82
|
-
grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message;
|
83
|
-
bool seen_recv_message_ready = false;
|
84
|
-
|
85
66
|
// State for intercepting recv_trailing_metadata
|
86
67
|
grpc_closure recv_trailing_metadata_ready;
|
87
68
|
grpc_closure* original_recv_trailing_metadata_ready;
|
@@ -115,7 +96,6 @@ static void hs_add_error(const char* error_name, grpc_error_handle* cumulative,
|
|
115
96
|
|
116
97
|
static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
117
98
|
grpc_metadata_batch* b) {
|
118
|
-
call_data* calld = static_cast<call_data*>(elem->call_data);
|
119
99
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
120
100
|
static const char* error_name = "Failed processing incoming headers";
|
121
101
|
|
@@ -123,23 +103,9 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
123
103
|
if (method.has_value()) {
|
124
104
|
switch (*method) {
|
125
105
|
case grpc_core::HttpMethodMetadata::kPost:
|
126
|
-
*calld->recv_initial_metadata_flags &=
|
127
|
-
~(GRPC_INITIAL_METADATA_CACHEABLE_REQUEST |
|
128
|
-
GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST);
|
129
|
-
break;
|
130
|
-
case grpc_core::HttpMethodMetadata::kPut:
|
131
|
-
*calld->recv_initial_metadata_flags &=
|
132
|
-
~GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
|
133
|
-
*calld->recv_initial_metadata_flags |=
|
134
|
-
GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
|
135
|
-
break;
|
136
|
-
case grpc_core::HttpMethodMetadata::kGet:
|
137
|
-
*calld->recv_initial_metadata_flags |=
|
138
|
-
GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
|
139
|
-
*calld->recv_initial_metadata_flags &=
|
140
|
-
~GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
|
141
106
|
break;
|
142
107
|
case grpc_core::HttpMethodMetadata::kInvalid:
|
108
|
+
case grpc_core::HttpMethodMetadata::kGet:
|
143
109
|
hs_add_error(error_name, &error,
|
144
110
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad method header"));
|
145
111
|
break;
|
@@ -185,38 +151,6 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
|
|
185
151
|
grpc_error_set_str(
|
186
152
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
|
187
153
|
GRPC_ERROR_STR_KEY, ":path"));
|
188
|
-
} else if (*calld->recv_initial_metadata_flags &
|
189
|
-
GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) {
|
190
|
-
/* We have a cacheable request made with GET verb. The path contains the
|
191
|
-
* query parameter which is base64 encoded request payload. */
|
192
|
-
static const char kQuerySeparator = '?';
|
193
|
-
/* offset of the character '?' */
|
194
|
-
auto it =
|
195
|
-
std::find(path_slice->begin(), path_slice->end(), kQuerySeparator);
|
196
|
-
if (it != path_slice->end()) {
|
197
|
-
const auto query_start = it - path_slice->begin() + 1;
|
198
|
-
auto query_slice = path_slice->RefSubSlice(
|
199
|
-
query_start, path_slice->size() - query_start);
|
200
|
-
|
201
|
-
/* substitute path metadata with just the path (not query) */
|
202
|
-
auto path_without_query = path_slice->TakeSubSlice(0, query_start - 1);
|
203
|
-
*path_slice = std::move(path_without_query);
|
204
|
-
|
205
|
-
/* decode payload from query and add to the slice buffer to be returned */
|
206
|
-
const int k_url_safe = 1;
|
207
|
-
grpc_slice_buffer read_slice_buffer;
|
208
|
-
grpc_slice_buffer_init(&read_slice_buffer);
|
209
|
-
grpc_slice_buffer_add(
|
210
|
-
&read_slice_buffer,
|
211
|
-
grpc_base64_decode_with_len(
|
212
|
-
reinterpret_cast<const char*>(query_slice.begin()),
|
213
|
-
query_slice.size(), k_url_safe));
|
214
|
-
calld->read_stream.Init(&read_slice_buffer, 0);
|
215
|
-
grpc_slice_buffer_destroy_internal(&read_slice_buffer);
|
216
|
-
calld->have_read_stream = true;
|
217
|
-
} else {
|
218
|
-
gpr_log(GPR_ERROR, "GET request without QUERY");
|
219
|
-
}
|
220
154
|
}
|
221
155
|
|
222
156
|
if (b->get_pointer(grpc_core::HttpAuthorityMetadata()) == nullptr) {
|
@@ -249,22 +183,6 @@ static void hs_recv_initial_metadata_ready(void* user_data,
|
|
249
183
|
if (err == GRPC_ERROR_NONE) {
|
250
184
|
err = hs_filter_incoming_metadata(elem, calld->recv_initial_metadata);
|
251
185
|
calld->recv_initial_metadata_ready_error = GRPC_ERROR_REF(err);
|
252
|
-
if (calld->seen_recv_message_ready) {
|
253
|
-
// We've already seen the recv_message callback, but we previously
|
254
|
-
// deferred it, so we need to return it here.
|
255
|
-
// Replace the recv_message byte stream if needed.
|
256
|
-
if (calld->have_read_stream) {
|
257
|
-
calld->recv_message->reset(calld->read_stream.get());
|
258
|
-
calld->have_read_stream = false;
|
259
|
-
}
|
260
|
-
// Re-enter call combiner for original_recv_message_ready, since the
|
261
|
-
// surface code will release the call combiner for each callback it
|
262
|
-
// receives.
|
263
|
-
GRPC_CALL_COMBINER_START(
|
264
|
-
calld->call_combiner, calld->original_recv_message_ready,
|
265
|
-
GRPC_ERROR_REF(err),
|
266
|
-
"resuming recv_message_ready from recv_initial_metadata_ready");
|
267
|
-
}
|
268
186
|
} else {
|
269
187
|
(void)GRPC_ERROR_REF(err);
|
270
188
|
}
|
@@ -279,31 +197,6 @@ static void hs_recv_initial_metadata_ready(void* user_data,
|
|
279
197
|
calld->original_recv_initial_metadata_ready, err);
|
280
198
|
}
|
281
199
|
|
282
|
-
static void hs_recv_message_ready(void* user_data, grpc_error_handle err) {
|
283
|
-
grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
|
284
|
-
call_data* calld = static_cast<call_data*>(elem->call_data);
|
285
|
-
calld->seen_recv_message_ready = true;
|
286
|
-
if (calld->seen_recv_initial_metadata_ready) {
|
287
|
-
// We've already seen the recv_initial_metadata callback, so
|
288
|
-
// replace the recv_message byte stream if needed and invoke the
|
289
|
-
// original recv_message callback immediately.
|
290
|
-
if (calld->have_read_stream) {
|
291
|
-
calld->recv_message->reset(calld->read_stream.get());
|
292
|
-
calld->have_read_stream = false;
|
293
|
-
}
|
294
|
-
grpc_core::Closure::Run(DEBUG_LOCATION, calld->original_recv_message_ready,
|
295
|
-
GRPC_ERROR_REF(err));
|
296
|
-
} else {
|
297
|
-
// We have not yet seen the recv_initial_metadata callback, so we
|
298
|
-
// need to wait to see if this is a GET request.
|
299
|
-
// Note that we release the call combiner here, so that other
|
300
|
-
// callbacks can run.
|
301
|
-
GRPC_CALL_COMBINER_STOP(
|
302
|
-
calld->call_combiner,
|
303
|
-
"pausing recv_message_ready until recv_initial_metadata_ready");
|
304
|
-
}
|
305
|
-
}
|
306
|
-
|
307
200
|
static void hs_recv_trailing_metadata_ready(void* user_data,
|
308
201
|
grpc_error_handle err) {
|
309
202
|
grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
|
@@ -355,13 +248,6 @@ static grpc_error_handle hs_mutate_op(grpc_call_element* elem,
|
|
355
248
|
&calld->recv_initial_metadata_ready;
|
356
249
|
}
|
357
250
|
|
358
|
-
if (op->recv_message) {
|
359
|
-
calld->recv_message = op->payload->recv_message.recv_message;
|
360
|
-
calld->original_recv_message_ready =
|
361
|
-
op->payload->recv_message.recv_message_ready;
|
362
|
-
op->payload->recv_message.recv_message_ready = &calld->recv_message_ready;
|
363
|
-
}
|
364
|
-
|
365
251
|
if (op->recv_trailing_metadata) {
|
366
252
|
calld->original_recv_trailing_metadata_ready =
|
367
253
|
op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
@@ -54,14 +54,8 @@ grpc_arg ServerConfigSelectorProvider::MakeChannelArg() const {
|
|
54
54
|
const_cast<ServerConfigSelectorProvider*>(this), &kChannelArgVtable);
|
55
55
|
}
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
const grpc_channel_args& args) {
|
60
|
-
ServerConfigSelectorProvider* config_selector_provider =
|
61
|
-
grpc_channel_args_find_pointer<ServerConfigSelectorProvider>(
|
62
|
-
&args, kServerConfigSelectorProviderChannelArgName);
|
63
|
-
return config_selector_provider != nullptr ? config_selector_provider->Ref()
|
64
|
-
: nullptr;
|
57
|
+
absl::string_view ServerConfigSelectorProvider::ChannelArgName() {
|
58
|
+
return kServerConfigSelectorProviderChannelArgName;
|
65
59
|
}
|
66
60
|
|
67
61
|
} // namespace grpc_core
|
@@ -61,9 +61,9 @@ class ServerConfigSelectorProvider
|
|
61
61
|
std::unique_ptr<ServerConfigSelectorWatcher> watcher) = 0;
|
62
62
|
virtual void CancelWatch() = 0;
|
63
63
|
|
64
|
+
static absl::string_view ChannelArgName();
|
65
|
+
|
64
66
|
grpc_arg MakeChannelArg() const;
|
65
|
-
static RefCountedPtr<ServerConfigSelectorProvider> GetFromChannelArgs(
|
66
|
-
const grpc_channel_args& args);
|
67
67
|
};
|
68
68
|
|
69
69
|
} // namespace grpc_core
|
@@ -1,5 +1,3 @@
|
|
1
|
-
//
|
2
|
-
//
|
3
1
|
// Copyright 2021 gRPC authors.
|
4
2
|
//
|
5
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -13,14 +11,16 @@
|
|
13
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
12
|
// See the License for the specific language governing permissions and
|
15
13
|
// limitations under the License.
|
16
|
-
//
|
17
|
-
//
|
18
14
|
|
19
15
|
#include <grpc/support/port_platform.h>
|
20
16
|
|
21
17
|
#include "src/core/ext/filters/server_config_selector/server_config_selector_filter.h"
|
22
18
|
|
23
19
|
#include "src/core/ext/filters/server_config_selector/server_config_selector.h"
|
20
|
+
#include "src/core/lib/channel/promise_based_filter.h"
|
21
|
+
#include "src/core/lib/iomgr/error.h"
|
22
|
+
#include "src/core/lib/promise/promise.h"
|
23
|
+
#include "src/core/lib/resource_quota/arena.h"
|
24
24
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
25
25
|
#include "src/core/lib/transport/error_utils.h"
|
26
26
|
|
@@ -28,244 +28,116 @@ namespace grpc_core {
|
|
28
28
|
|
29
29
|
namespace {
|
30
30
|
|
31
|
-
class
|
31
|
+
class ServerConfigSelectorFilter final : public ChannelFilter {
|
32
32
|
public:
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
~ServerConfigSelectorFilter() override;
|
34
|
+
|
35
|
+
ServerConfigSelectorFilter(const ServerConfigSelectorFilter&) = delete;
|
36
|
+
ServerConfigSelectorFilter& operator=(const ServerConfigSelectorFilter&) =
|
37
|
+
delete;
|
38
|
+
ServerConfigSelectorFilter(ServerConfigSelectorFilter&&) = default;
|
39
|
+
ServerConfigSelectorFilter& operator=(ServerConfigSelectorFilter&&) = default;
|
40
|
+
|
41
|
+
static absl::StatusOr<ServerConfigSelectorFilter> Create(ChannelArgs args,
|
42
|
+
ChannelFilter::Args);
|
43
|
+
|
44
|
+
ArenaPromise<ServerMetadataHandle> MakeCallPromise(
|
45
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) override;
|
36
46
|
|
37
47
|
absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector() {
|
38
|
-
MutexLock lock(&
|
39
|
-
return
|
48
|
+
MutexLock lock(&state_->mu);
|
49
|
+
return state_->config_selector.value();
|
40
50
|
}
|
41
51
|
|
42
52
|
private:
|
53
|
+
struct State {
|
54
|
+
Mutex mu;
|
55
|
+
absl::optional<absl::StatusOr<RefCountedPtr<ServerConfigSelector>>>
|
56
|
+
config_selector ABSL_GUARDED_BY(mu);
|
57
|
+
};
|
43
58
|
class ServerConfigSelectorWatcher
|
44
59
|
: public ServerConfigSelectorProvider::ServerConfigSelectorWatcher {
|
45
60
|
public:
|
46
|
-
explicit ServerConfigSelectorWatcher(
|
61
|
+
explicit ServerConfigSelectorWatcher(std::shared_ptr<State> state)
|
62
|
+
: state_(state) {}
|
47
63
|
void OnServerConfigSelectorUpdate(
|
48
64
|
absl::StatusOr<RefCountedPtr<ServerConfigSelector>> update) override {
|
49
|
-
MutexLock lock(&
|
50
|
-
|
65
|
+
MutexLock lock(&state_->mu);
|
66
|
+
state_->config_selector = std::move(update);
|
51
67
|
}
|
52
68
|
|
53
69
|
private:
|
54
|
-
|
70
|
+
std::shared_ptr<State> state_;
|
55
71
|
};
|
56
72
|
|
57
|
-
explicit
|
58
|
-
|
59
|
-
|
73
|
+
explicit ServerConfigSelectorFilter(
|
74
|
+
RefCountedPtr<ServerConfigSelectorProvider>
|
75
|
+
server_config_selector_provider);
|
60
76
|
|
61
77
|
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider_;
|
62
|
-
|
63
|
-
absl::optional<absl::StatusOr<RefCountedPtr<ServerConfigSelector>>>
|
64
|
-
config_selector_ ABSL_GUARDED_BY(mu_);
|
78
|
+
std::shared_ptr<State> state_;
|
65
79
|
};
|
66
80
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
static void Destroy(grpc_call_element* elem,
|
72
|
-
const grpc_call_final_info* /* final_info */,
|
73
|
-
grpc_closure* /* then_schedule_closure */);
|
74
|
-
static void StartTransportStreamOpBatch(grpc_call_element* elem,
|
75
|
-
grpc_transport_stream_op_batch* op);
|
76
|
-
|
77
|
-
private:
|
78
|
-
CallData(grpc_call_element* elem, const grpc_call_element_args& args);
|
79
|
-
~CallData();
|
80
|
-
static void RecvInitialMetadataReady(void* user_data,
|
81
|
-
grpc_error_handle error);
|
82
|
-
static void RecvTrailingMetadataReady(void* user_data,
|
83
|
-
grpc_error_handle error);
|
84
|
-
void MaybeResumeRecvTrailingMetadataReady();
|
85
|
-
|
86
|
-
grpc_call_context_element* call_context_;
|
87
|
-
CallCombiner* call_combiner_;
|
88
|
-
ServiceConfigCallData service_config_call_data_;
|
89
|
-
// Overall error for the call
|
90
|
-
grpc_error_handle error_ = GRPC_ERROR_NONE;
|
91
|
-
// State for keeping track of recv_initial_metadata
|
92
|
-
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
93
|
-
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
|
94
|
-
grpc_closure recv_initial_metadata_ready_;
|
95
|
-
// State for keeping of track of recv_trailing_metadata
|
96
|
-
grpc_closure* original_recv_trailing_metadata_ready_;
|
97
|
-
grpc_closure recv_trailing_metadata_ready_;
|
98
|
-
grpc_error_handle recv_trailing_metadata_ready_error_;
|
99
|
-
bool seen_recv_trailing_metadata_ready_ = false;
|
100
|
-
};
|
101
|
-
|
102
|
-
// ChannelData
|
103
|
-
|
104
|
-
grpc_error_handle ChannelData::Init(grpc_channel_element* elem,
|
105
|
-
grpc_channel_element_args* args) {
|
106
|
-
GPR_ASSERT(elem->filter == &kServerConfigSelectorFilter);
|
107
|
-
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider =
|
108
|
-
ServerConfigSelectorProvider::GetFromChannelArgs(*args->channel_args);
|
81
|
+
absl::StatusOr<ServerConfigSelectorFilter> ServerConfigSelectorFilter::Create(
|
82
|
+
ChannelArgs args, ChannelFilter::Args) {
|
83
|
+
ServerConfigSelectorProvider* server_config_selector_provider =
|
84
|
+
args.GetObject<ServerConfigSelectorProvider>();
|
109
85
|
if (server_config_selector_provider == nullptr) {
|
110
|
-
return
|
111
|
-
"No ServerConfigSelectorProvider object found");
|
86
|
+
return absl::UnknownError("No ServerConfigSelectorProvider object found");
|
112
87
|
}
|
113
|
-
|
114
|
-
ChannelData(std::move(server_config_selector_provider));
|
115
|
-
return GRPC_ERROR_NONE;
|
88
|
+
return ServerConfigSelectorFilter(server_config_selector_provider->Ref());
|
116
89
|
}
|
117
90
|
|
118
|
-
|
119
|
-
auto* chand = static_cast<ChannelData*>(elem->channel_data);
|
120
|
-
chand->~ChannelData();
|
121
|
-
}
|
122
|
-
|
123
|
-
ChannelData::ChannelData(
|
91
|
+
ServerConfigSelectorFilter::ServerConfigSelectorFilter(
|
124
92
|
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider)
|
125
93
|
: server_config_selector_provider_(
|
126
|
-
std::move(server_config_selector_provider))
|
94
|
+
std::move(server_config_selector_provider)),
|
95
|
+
state_(std::make_shared<State>()) {
|
127
96
|
GPR_ASSERT(server_config_selector_provider_ != nullptr);
|
128
97
|
auto server_config_selector_watcher =
|
129
|
-
absl::make_unique<ServerConfigSelectorWatcher>(
|
98
|
+
absl::make_unique<ServerConfigSelectorWatcher>(state_);
|
130
99
|
auto config_selector = server_config_selector_provider_->Watch(
|
131
100
|
std::move(server_config_selector_watcher));
|
132
|
-
MutexLock lock(&
|
101
|
+
MutexLock lock(&state_->mu);
|
133
102
|
// It's possible for the watcher to have already updated config_selector_
|
134
|
-
if (!
|
135
|
-
|
103
|
+
if (!state_->config_selector.has_value()) {
|
104
|
+
state_->config_selector = std::move(config_selector);
|
136
105
|
}
|
137
106
|
}
|
138
107
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
grpc_error_handle CallData::Init(grpc_call_element* elem,
|
144
|
-
const grpc_call_element_args* args) {
|
145
|
-
new (elem->call_data) CallData(elem, *args);
|
146
|
-
return GRPC_ERROR_NONE;
|
147
|
-
}
|
148
|
-
|
149
|
-
void CallData::Destroy(grpc_call_element* elem,
|
150
|
-
const grpc_call_final_info* /*final_info*/,
|
151
|
-
grpc_closure* /*then_schedule_closure*/) {
|
152
|
-
auto* calld = static_cast<CallData*>(elem->call_data);
|
153
|
-
calld->~CallData();
|
154
|
-
}
|
155
|
-
|
156
|
-
void CallData::StartTransportStreamOpBatch(grpc_call_element* elem,
|
157
|
-
grpc_transport_stream_op_batch* op) {
|
158
|
-
CallData* calld = static_cast<CallData*>(elem->call_data);
|
159
|
-
if (op->recv_initial_metadata) {
|
160
|
-
calld->recv_initial_metadata_ =
|
161
|
-
op->payload->recv_initial_metadata.recv_initial_metadata;
|
162
|
-
calld->original_recv_initial_metadata_ready_ =
|
163
|
-
op->payload->recv_initial_metadata.recv_initial_metadata_ready;
|
164
|
-
op->payload->recv_initial_metadata.recv_initial_metadata_ready =
|
165
|
-
&calld->recv_initial_metadata_ready_;
|
166
|
-
}
|
167
|
-
if (op->recv_trailing_metadata) {
|
168
|
-
// We might generate errors on receiving initial metadata which we need to
|
169
|
-
// bubble up through recv_trailing_metadata_ready
|
170
|
-
calld->original_recv_trailing_metadata_ready_ =
|
171
|
-
op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
172
|
-
op->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
|
173
|
-
&calld->recv_trailing_metadata_ready_;
|
174
|
-
}
|
175
|
-
// Chain to the next filter.
|
176
|
-
grpc_call_next_op(elem, op);
|
177
|
-
}
|
178
|
-
|
179
|
-
CallData::CallData(grpc_call_element* elem, const grpc_call_element_args& args)
|
180
|
-
: call_context_(args.context), call_combiner_(args.call_combiner) {
|
181
|
-
GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_, RecvInitialMetadataReady,
|
182
|
-
elem, grpc_schedule_on_exec_ctx);
|
183
|
-
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady,
|
184
|
-
elem, grpc_schedule_on_exec_ctx);
|
185
|
-
}
|
186
|
-
|
187
|
-
CallData::~CallData() {
|
188
|
-
// Remove the entry from call context, just in case anyone above us
|
189
|
-
// tries to look at it during call stack destruction.
|
190
|
-
call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = nullptr;
|
191
|
-
GRPC_ERROR_UNREF(error_);
|
192
|
-
}
|
193
|
-
|
194
|
-
void CallData::RecvInitialMetadataReady(void* user_data,
|
195
|
-
grpc_error_handle error) {
|
196
|
-
grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
|
197
|
-
CallData* calld = static_cast<CallData*>(elem->call_data);
|
198
|
-
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
199
|
-
if (error == GRPC_ERROR_NONE) {
|
200
|
-
auto config_selector = chand->config_selector();
|
201
|
-
if (config_selector.ok()) {
|
202
|
-
auto call_config =
|
203
|
-
config_selector.value()->GetCallConfig(calld->recv_initial_metadata_);
|
204
|
-
if (call_config.error != GRPC_ERROR_NONE) {
|
205
|
-
calld->error_ = call_config.error;
|
206
|
-
error = call_config.error; // Does not take a ref
|
207
|
-
} else {
|
208
|
-
calld->service_config_call_data_ =
|
209
|
-
ServiceConfigCallData(std::move(call_config.service_config),
|
210
|
-
call_config.method_configs, {});
|
211
|
-
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value =
|
212
|
-
&calld->service_config_call_data_;
|
213
|
-
}
|
214
|
-
} else {
|
215
|
-
calld->error_ = absl_status_to_grpc_error(config_selector.status());
|
216
|
-
error = calld->error_;
|
217
|
-
}
|
108
|
+
ServerConfigSelectorFilter::~ServerConfigSelectorFilter() {
|
109
|
+
if (server_config_selector_provider_ != nullptr) {
|
110
|
+
server_config_selector_provider_->CancelWatch();
|
218
111
|
}
|
219
|
-
calld->MaybeResumeRecvTrailingMetadataReady();
|
220
|
-
grpc_closure* closure = calld->original_recv_initial_metadata_ready_;
|
221
|
-
calld->original_recv_initial_metadata_ready_ = nullptr;
|
222
|
-
Closure::Run(DEBUG_LOCATION, closure, GRPC_ERROR_REF(error));
|
223
112
|
}
|
224
113
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
return;
|
236
|
-
}
|
237
|
-
error = grpc_error_add_child(GRPC_ERROR_REF(error), calld->error_);
|
238
|
-
calld->error_ = GRPC_ERROR_NONE;
|
239
|
-
grpc_closure* closure = calld->original_recv_trailing_metadata_ready_;
|
240
|
-
calld->original_recv_trailing_metadata_ready_ = nullptr;
|
241
|
-
Closure::Run(DEBUG_LOCATION, closure, error);
|
242
|
-
}
|
243
|
-
|
244
|
-
void CallData::MaybeResumeRecvTrailingMetadataReady() {
|
245
|
-
if (seen_recv_trailing_metadata_ready_) {
|
246
|
-
seen_recv_trailing_metadata_ready_ = false;
|
247
|
-
grpc_error_handle error = recv_trailing_metadata_ready_error_;
|
248
|
-
recv_trailing_metadata_ready_error_ = GRPC_ERROR_NONE;
|
249
|
-
GRPC_CALL_COMBINER_START(call_combiner_, &recv_trailing_metadata_ready_,
|
250
|
-
error, "Continuing RecvTrailingMetadataReady");
|
114
|
+
ArenaPromise<ServerMetadataHandle> ServerConfigSelectorFilter::MakeCallPromise(
|
115
|
+
CallArgs call_args, NextPromiseFactory next_promise_factory) {
|
116
|
+
auto sel = config_selector();
|
117
|
+
if (!sel.ok()) return Immediate(ServerMetadataHandle(sel.status()));
|
118
|
+
auto call_config =
|
119
|
+
sel.value()->GetCallConfig(call_args.client_initial_metadata.get());
|
120
|
+
if (call_config.error != GRPC_ERROR_NONE) {
|
121
|
+
auto r = Immediate(ServerMetadataHandle(
|
122
|
+
absl::UnavailableError(grpc_error_std_string(call_config.error))));
|
123
|
+
GRPC_ERROR_UNREF(call_config.error);
|
124
|
+
return std::move(r);
|
251
125
|
}
|
126
|
+
auto& ctx = GetContext<
|
127
|
+
grpc_call_context_element>()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA];
|
128
|
+
ctx.value = GetContext<Arena>()->New<ServiceConfigCallData>(
|
129
|
+
std::move(call_config.service_config), call_config.method_configs,
|
130
|
+
ServiceConfigCallData::CallAttributes{});
|
131
|
+
ctx.destroy = [](void* p) {
|
132
|
+
static_cast<ServiceConfigCallData*>(p)->~ServiceConfigCallData();
|
133
|
+
};
|
134
|
+
return next_promise_factory(std::move(call_args));
|
252
135
|
}
|
253
136
|
|
254
137
|
} // namespace
|
255
138
|
|
256
|
-
const grpc_channel_filter kServerConfigSelectorFilter =
|
257
|
-
|
258
|
-
|
259
|
-
grpc_channel_next_op,
|
260
|
-
sizeof(CallData),
|
261
|
-
CallData::Init,
|
262
|
-
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
263
|
-
CallData::Destroy,
|
264
|
-
sizeof(ChannelData),
|
265
|
-
ChannelData::Init,
|
266
|
-
ChannelData::Destroy,
|
267
|
-
grpc_channel_next_get_info,
|
268
|
-
"server_config_selector_filter",
|
269
|
-
};
|
139
|
+
const grpc_channel_filter kServerConfigSelectorFilter =
|
140
|
+
MakePromiseBasedFilter<ServerConfigSelectorFilter, FilterEndpoint::kServer>(
|
141
|
+
"server_config_selector_filter");
|
270
142
|
|
271
143
|
} // namespace grpc_core
|
@@ -41,6 +41,7 @@
|
|
41
41
|
#include "src/core/lib/resolver/resolver_registry.h"
|
42
42
|
#include "src/core/lib/resource_quota/api.h"
|
43
43
|
#include "src/core/lib/security/credentials/credentials.h"
|
44
|
+
#include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
|
44
45
|
#include "src/core/lib/security/security_connector/security_connector.h"
|
45
46
|
#include "src/core/lib/slice/slice_internal.h"
|
46
47
|
#include "src/core/lib/surface/api_trace.h"
|
@@ -438,7 +439,7 @@ grpc_channel* grpc_channel_create_from_fd(const char* target, int fd,
|
|
438
439
|
(target, fd, creds, args));
|
439
440
|
// For now, we only support insecure channel credentials.
|
440
441
|
if (creds == nullptr ||
|
441
|
-
|
442
|
+
creds->type() != grpc_core::InsecureServerCredentials::Type()) {
|
442
443
|
return grpc_lame_client_channel_create(
|
443
444
|
target, GRPC_STATUS_INTERNAL,
|
444
445
|
"Failed to create client channel due to invalid creds");
|
@@ -55,6 +55,7 @@
|
|
55
55
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
56
56
|
#include "src/core/lib/security/context/security_context.h"
|
57
57
|
#include "src/core/lib/security/credentials/credentials.h"
|
58
|
+
#include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
|
58
59
|
#include "src/core/lib/slice/slice_internal.h"
|
59
60
|
#include "src/core/lib/surface/api_trace.h"
|
60
61
|
#include "src/core/lib/surface/server.h"
|
@@ -940,9 +941,9 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
|
|
940
941
|
}
|
941
942
|
}
|
942
943
|
if (error_list.size() == resolved_or->size()) {
|
943
|
-
std::string msg =
|
944
|
-
|
945
|
-
|
944
|
+
std::string msg = absl::StrFormat(
|
945
|
+
"No address added out of total %" PRIuPTR " resolved for '%s'",
|
946
|
+
resolved_or->size(), addr);
|
946
947
|
return GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
|
947
948
|
msg.c_str(), error_list.data(), error_list.size());
|
948
949
|
} else if (!error_list.empty()) {
|
@@ -1059,7 +1060,7 @@ void grpc_server_add_channel_from_fd(grpc_server* server, int fd,
|
|
1059
1060
|
grpc_server_credentials* creds) {
|
1060
1061
|
// For now, we only support insecure server credentials
|
1061
1062
|
if (creds == nullptr ||
|
1062
|
-
|
1063
|
+
creds->type() != grpc_core::InsecureServerCredentials::Type()) {
|
1063
1064
|
gpr_log(GPR_ERROR, "Failed to create channel due to invalid creds");
|
1064
1065
|
return;
|
1065
1066
|
}
|