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
data/src/core/lib/surface/call.h
CHANGED
@@ -60,20 +60,6 @@ grpc_error_handle grpc_call_create(grpc_call_create_args* args,
|
|
60
60
|
|
61
61
|
void grpc_call_set_completion_queue(grpc_call* call, grpc_completion_queue* cq);
|
62
62
|
|
63
|
-
#ifndef NDEBUG
|
64
|
-
void grpc_call_internal_ref(grpc_call* call, const char* reason);
|
65
|
-
void grpc_call_internal_unref(grpc_call* call, const char* reason);
|
66
|
-
#define GRPC_CALL_INTERNAL_REF(call, reason) \
|
67
|
-
grpc_call_internal_ref(call, reason)
|
68
|
-
#define GRPC_CALL_INTERNAL_UNREF(call, reason) \
|
69
|
-
grpc_call_internal_unref(call, reason)
|
70
|
-
#else
|
71
|
-
void grpc_call_internal_ref(grpc_call* call);
|
72
|
-
void grpc_call_internal_unref(grpc_call* call);
|
73
|
-
#define GRPC_CALL_INTERNAL_REF(call, reason) grpc_call_internal_ref(call)
|
74
|
-
#define GRPC_CALL_INTERNAL_UNREF(call, reason) grpc_call_internal_unref(call)
|
75
|
-
#endif
|
76
|
-
|
77
63
|
grpc_core::Arena* grpc_call_get_arena(grpc_call* call);
|
78
64
|
|
79
65
|
grpc_call_stack* grpc_call_get_call_stack(grpc_call* call);
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include <grpc/support/string_util.h>
|
32
32
|
|
33
33
|
#include "src/core/lib/channel/channel_args.h"
|
34
|
+
#include "src/core/lib/channel/channel_stack_builder_impl.h"
|
34
35
|
#include "src/core/lib/channel/channel_trace.h"
|
35
36
|
#include "src/core/lib/channel/channelz.h"
|
36
37
|
#include "src/core/lib/channel/channelz_registry.h"
|
@@ -241,8 +242,8 @@ grpc_channel* grpc_channel_create_internal(
|
|
241
242
|
// grpc_shutdown() when the channel is actually destroyed, thus
|
242
243
|
// ensuring that shutdown is deferred until that point.
|
243
244
|
grpc_init();
|
244
|
-
grpc_core::
|
245
|
-
grpc_channel_stack_type_string(channel_stack_type));
|
245
|
+
grpc_core::ChannelStackBuilderImpl builder(
|
246
|
+
grpc_channel_stack_type_string(channel_stack_type), channel_stack_type);
|
246
247
|
const grpc_core::UniquePtr<char> default_authority =
|
247
248
|
get_default_authority(input_args);
|
248
249
|
grpc_channel_args* args =
|
@@ -258,7 +259,7 @@ grpc_channel* grpc_channel_create_internal(
|
|
258
259
|
optional_transport);
|
259
260
|
grpc_channel_args_destroy(args);
|
260
261
|
if (!grpc_core::CoreConfiguration::Get().channel_init().CreateStack(
|
261
|
-
&builder
|
262
|
+
&builder)) {
|
262
263
|
grpc_shutdown(); // Since we won't call destroy_channel().
|
263
264
|
return nullptr;
|
264
265
|
}
|
@@ -45,9 +45,8 @@ ChannelInit ChannelInit::Builder::Build() {
|
|
45
45
|
return result;
|
46
46
|
}
|
47
47
|
|
48
|
-
bool ChannelInit::CreateStack(ChannelStackBuilder* builder
|
49
|
-
|
50
|
-
for (const auto& stage : slots_[type]) {
|
48
|
+
bool ChannelInit::CreateStack(ChannelStackBuilder* builder) const {
|
49
|
+
for (const auto& stage : slots_[builder->channel_stack_type()]) {
|
51
50
|
if (!stage(builder)) return false;
|
52
51
|
}
|
53
52
|
return true;
|
@@ -24,7 +24,7 @@
|
|
24
24
|
#include <functional>
|
25
25
|
#include <vector>
|
26
26
|
|
27
|
-
#include "src/core/lib/
|
27
|
+
#include "src/core/lib/channel/channel_stack_builder.h"
|
28
28
|
|
29
29
|
#define GRPC_CHANNEL_INIT_BUILTIN_PRIORITY 10000
|
30
30
|
|
@@ -35,8 +35,6 @@
|
|
35
35
|
|
36
36
|
namespace grpc_core {
|
37
37
|
|
38
|
-
class ChannelStackBuilder;
|
39
|
-
|
40
38
|
class ChannelInit {
|
41
39
|
public:
|
42
40
|
/// One stage of mutation: call functions against \a builder to influence the
|
@@ -72,10 +70,8 @@ class ChannelInit {
|
|
72
70
|
};
|
73
71
|
|
74
72
|
/// Construct a channel stack of some sort: see channel_stack.h for details
|
75
|
-
/// \a type is the type of channel stack to create
|
76
73
|
/// \a builder is the channel stack builder to build into.
|
77
|
-
bool CreateStack(ChannelStackBuilder* builder
|
78
|
-
grpc_channel_stack_type type) const;
|
74
|
+
bool CreateStack(ChannelStackBuilder* builder) const;
|
79
75
|
|
80
76
|
private:
|
81
77
|
std::vector<Stage> slots_[GRPC_NUM_CHANNEL_STACK_TYPES];
|
@@ -86,7 +86,7 @@ static bool maybe_prepend_client_auth_filter(
|
|
86
86
|
if (args) {
|
87
87
|
for (size_t i = 0; i < args->num_args; i++) {
|
88
88
|
if (0 == strcmp(GRPC_ARG_SECURITY_CONNECTOR, args->args[i].key)) {
|
89
|
-
builder->PrependFilter(&
|
89
|
+
builder->PrependFilter(&grpc_core::ClientAuthFilter::kFilter, nullptr);
|
90
90
|
break;
|
91
91
|
}
|
92
92
|
}
|
@@ -479,7 +479,6 @@ class ChannelBroadcaster {
|
|
479
479
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"),
|
480
480
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
|
481
481
|
: GRPC_ERROR_NONE;
|
482
|
-
op->set_accept_stream = true;
|
483
482
|
sc->slice = grpc_slice_from_copied_string("Server shutdown");
|
484
483
|
op->disconnect_with_error = send_disconnect;
|
485
484
|
elem =
|
@@ -685,7 +684,7 @@ Server::RegisteredMethod* Server::RegisterMethod(
|
|
685
684
|
return nullptr;
|
686
685
|
}
|
687
686
|
}
|
688
|
-
if (
|
687
|
+
if (flags != 0) {
|
689
688
|
gpr_log(GPR_ERROR, "grpc_server_register_method invalid flags 0x%08x",
|
690
689
|
flags);
|
691
690
|
return nullptr;
|
@@ -1062,7 +1061,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
|
|
1062
1061
|
}
|
1063
1062
|
|
1064
1063
|
Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
|
1065
|
-
const grpc_slice& host, const grpc_slice& path
|
1064
|
+
const grpc_slice& host, const grpc_slice& path) {
|
1066
1065
|
if (registered_methods_ == nullptr) return nullptr;
|
1067
1066
|
/* TODO(ctiller): unify these two searches */
|
1068
1067
|
/* check for an exact match with host */
|
@@ -1075,10 +1074,6 @@ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
|
|
1075
1074
|
if (!rm->has_host) continue;
|
1076
1075
|
if (rm->host != host) continue;
|
1077
1076
|
if (rm->method != path) continue;
|
1078
|
-
if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
|
1079
|
-
!is_idempotent) {
|
1080
|
-
continue;
|
1081
|
-
}
|
1082
1077
|
return rm;
|
1083
1078
|
}
|
1084
1079
|
/* check for a wildcard method definition (no host set) */
|
@@ -1089,10 +1084,6 @@ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
|
|
1089
1084
|
if (rm->server_registered_method == nullptr) break;
|
1090
1085
|
if (rm->has_host) continue;
|
1091
1086
|
if (rm->method != path) continue;
|
1092
|
-
if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
|
1093
|
-
!is_idempotent) {
|
1094
|
-
continue;
|
1095
|
-
}
|
1096
1087
|
return rm;
|
1097
1088
|
}
|
1098
1089
|
return nullptr;
|
@@ -1299,9 +1290,7 @@ void Server::CallData::StartNewRpc(grpc_call_element* elem) {
|
|
1299
1290
|
GRPC_SRM_PAYLOAD_NONE;
|
1300
1291
|
if (path_.has_value() && host_.has_value()) {
|
1301
1292
|
ChannelRegisteredMethod* rm =
|
1302
|
-
chand->GetRegisteredMethod(host_->c_slice(), path_->c_slice()
|
1303
|
-
(recv_initial_metadata_flags_ &
|
1304
|
-
GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST));
|
1293
|
+
chand->GetRegisteredMethod(host_->c_slice(), path_->c_slice());
|
1305
1294
|
if (rm != nullptr) {
|
1306
1295
|
matcher_ = rm->server_registered_method->matcher.get();
|
1307
1296
|
payload_handling = rm->server_registered_method->payload_handling;
|
@@ -200,8 +200,7 @@ class Server : public InternallyRefCounted<Server>,
|
|
200
200
|
size_t cq_idx() const { return cq_idx_; }
|
201
201
|
|
202
202
|
ChannelRegisteredMethod* GetRegisteredMethod(const grpc_slice& host,
|
203
|
-
const grpc_slice& path
|
204
|
-
bool is_idempotent);
|
203
|
+
const grpc_slice& path);
|
205
204
|
|
206
205
|
// Filter vtable functions.
|
207
206
|
static grpc_error_handle InitChannelElement(
|
@@ -23,6 +23,6 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
-
const char* grpc_version_string(void) { return "
|
26
|
+
const char* grpc_version_string(void) { return "24.0.0"; }
|
27
27
|
|
28
|
-
const char* grpc_g_stands_for(void) { return "
|
28
|
+
const char* grpc_g_stands_for(void) { return "golazo"; }
|
@@ -51,6 +51,7 @@ SliceBufferByteStream::~SliceBufferByteStream() {}
|
|
51
51
|
void SliceBufferByteStream::Orphan() {
|
52
52
|
grpc_slice_buffer_destroy_internal(&backing_buffer_);
|
53
53
|
GRPC_ERROR_UNREF(shutdown_error_);
|
54
|
+
shutdown_error_ = GRPC_ERROR_NONE;
|
54
55
|
// Note: We do not actually delete the object here, since
|
55
56
|
// SliceBufferByteStream is usually allocated as part of a larger
|
56
57
|
// object and has an OrphanablePtr of itself passed down through the
|
@@ -107,6 +108,7 @@ ByteStreamCache::CachingByteStream::~CachingByteStream() {}
|
|
107
108
|
|
108
109
|
void ByteStreamCache::CachingByteStream::Orphan() {
|
109
110
|
GRPC_ERROR_UNREF(shutdown_error_);
|
111
|
+
shutdown_error_ = GRPC_ERROR_NONE;
|
110
112
|
// Note: We do not actually delete the object here, since
|
111
113
|
// CachingByteStream is usually allocated as part of a larger
|
112
114
|
// object and has an OrphanablePtr of itself passed down through the
|
@@ -45,6 +45,8 @@
|
|
45
45
|
#include "src/core/lib/transport/parsed_metadata.h"
|
46
46
|
#include "src/core/lib/transport/timeout_encoding.h"
|
47
47
|
|
48
|
+
struct grpc_call_final_info;
|
49
|
+
|
48
50
|
namespace grpc_core {
|
49
51
|
|
50
52
|
// grpc-timeout metadata trait.
|
@@ -224,7 +226,6 @@ struct HttpMethodMetadata {
|
|
224
226
|
static constexpr bool kRepeatable = false;
|
225
227
|
enum ValueType {
|
226
228
|
kPost,
|
227
|
-
kPut,
|
228
229
|
kGet,
|
229
230
|
kInvalid,
|
230
231
|
};
|
@@ -235,8 +236,6 @@ struct HttpMethodMetadata {
|
|
235
236
|
auto value_string = value.as_string_view();
|
236
237
|
if (value_string == "POST") {
|
237
238
|
out = kPost;
|
238
|
-
} else if (value_string == "PUT") {
|
239
|
-
out = kPut;
|
240
239
|
} else if (value_string == "GET") {
|
241
240
|
out = kGet;
|
242
241
|
} else {
|
@@ -251,8 +250,6 @@ struct HttpMethodMetadata {
|
|
251
250
|
switch (x) {
|
252
251
|
case kPost:
|
253
252
|
return StaticSlice::FromStaticString("POST");
|
254
|
-
case kPut:
|
255
|
-
return StaticSlice::FromStaticString("PUT");
|
256
253
|
case kGet:
|
257
254
|
return StaticSlice::FromStaticString("GET");
|
258
255
|
default:
|
@@ -263,8 +260,6 @@ struct HttpMethodMetadata {
|
|
263
260
|
switch (content_type) {
|
264
261
|
case kPost:
|
265
262
|
return "POST";
|
266
|
-
case kPut:
|
267
|
-
return "PUT";
|
268
263
|
case kGet:
|
269
264
|
return "GET";
|
270
265
|
default:
|
@@ -533,6 +528,14 @@ struct GrpcStreamNetworkState {
|
|
533
528
|
}
|
534
529
|
};
|
535
530
|
|
531
|
+
// Annotation added by a server transport to note the peer making a request.
|
532
|
+
struct PeerString {
|
533
|
+
static absl::string_view DebugKey() { return "PeerString"; }
|
534
|
+
static constexpr bool kRepeatable = false;
|
535
|
+
using ValueType = absl::string_view;
|
536
|
+
static std::string DisplayValue(ValueType x) { return std::string(x); }
|
537
|
+
};
|
538
|
+
|
536
539
|
// Annotation added by various systems to describe the reason for a failure.
|
537
540
|
struct GrpcStatusContext {
|
538
541
|
static absl::string_view DebugKey() { return "GrpcStatusContext"; }
|
@@ -1381,7 +1384,8 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
|
|
1381
1384
|
grpc_core::GrpcTagsBinMetadata, grpc_core::GrpcLbClientStatsMetadata,
|
1382
1385
|
grpc_core::LbCostBinMetadata, grpc_core::LbTokenMetadata,
|
1383
1386
|
// Non-encodable things
|
1384
|
-
grpc_core::GrpcStreamNetworkState, grpc_core::
|
1387
|
+
grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
|
1388
|
+
grpc_core::GrpcStatusContext>;
|
1385
1389
|
|
1386
1390
|
struct grpc_metadata_batch : public grpc_metadata_batch_base {
|
1387
1391
|
using grpc_metadata_batch_base::grpc_metadata_batch_base;
|
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "src/core/lib/iomgr/pollset.h"
|
32
32
|
#include "src/core/lib/iomgr/pollset_set.h"
|
33
33
|
#include "src/core/lib/promise/arena_promise.h"
|
34
|
+
#include "src/core/lib/promise/latch.h"
|
34
35
|
#include "src/core/lib/resource_quota/arena.h"
|
35
36
|
#include "src/core/lib/slice/slice_internal.h"
|
36
37
|
#include "src/core/lib/transport/byte_stream.h"
|
@@ -43,6 +44,8 @@
|
|
43
44
|
#define GRPC_PROTOCOL_VERSION_MIN_MAJOR 2
|
44
45
|
#define GRPC_PROTOCOL_VERSION_MIN_MINOR 1
|
45
46
|
|
47
|
+
#define GRPC_ARG_TRANSPORT "grpc.internal.transport"
|
48
|
+
|
46
49
|
namespace grpc_core {
|
47
50
|
// TODO(ctiller): eliminate once MetadataHandle is constructable directly.
|
48
51
|
namespace promise_filter_detail {
|
@@ -97,23 +100,35 @@ class MetadataHandle {
|
|
97
100
|
T* handle_ = nullptr;
|
98
101
|
};
|
99
102
|
|
100
|
-
//
|
103
|
+
// Server metadata type
|
101
104
|
// TODO(ctiller): This should be a bespoke instance of MetadataMap<>
|
102
|
-
using
|
105
|
+
using ServerMetadata = grpc_metadata_batch;
|
106
|
+
using ServerMetadataHandle = MetadataHandle<ServerMetadata>;
|
103
107
|
|
104
108
|
// Ok/not-ok check for trailing metadata, so that it can be used as result types
|
105
109
|
// for TrySeq.
|
106
|
-
inline bool IsStatusOk(const
|
110
|
+
inline bool IsStatusOk(const ServerMetadataHandle& m) {
|
107
111
|
return m->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN) ==
|
108
112
|
GRPC_STATUS_OK;
|
109
113
|
}
|
110
114
|
|
111
115
|
// Client initial metadata type
|
112
116
|
// TODO(ctiller): This should be a bespoke instance of MetadataMap<>
|
113
|
-
using
|
117
|
+
using ClientMetadata = grpc_metadata_batch;
|
118
|
+
using ClientMetadataHandle = MetadataHandle<ClientMetadata>;
|
119
|
+
|
120
|
+
// Server initial metadata type
|
121
|
+
// TODO(ctiller): This should be a bespoke instance of MetadataMap<>
|
122
|
+
using ServerMetadataHandle = MetadataHandle<grpc_metadata_batch>;
|
123
|
+
|
124
|
+
struct CallArgs {
|
125
|
+
ClientMetadataHandle client_initial_metadata;
|
126
|
+
Latch<ServerMetadata*>* server_initial_metadata;
|
127
|
+
};
|
114
128
|
|
115
129
|
using NextPromiseFactory =
|
116
|
-
std::function<ArenaPromise<
|
130
|
+
std::function<ArenaPromise<ServerMetadataHandle>(CallArgs)>;
|
131
|
+
|
117
132
|
} // namespace grpc_core
|
118
133
|
|
119
134
|
/* forward declarations */
|
@@ -45,9 +45,8 @@ typedef struct grpc_transport_vtable {
|
|
45
45
|
- allocation of memory for call data (sizeof_stream may be ignored)
|
46
46
|
There is an on-going migration to move all filters to providing this, and
|
47
47
|
then to drop perform_stream_op. */
|
48
|
-
grpc_core::ArenaPromise<grpc_core::
|
49
|
-
grpc_transport* self, grpc_core::
|
50
|
-
grpc_core::NextPromiseFactory next_promise_factory);
|
48
|
+
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> (*make_call_promise)(
|
49
|
+
grpc_transport* self, grpc_core::ClientMetadataHandle initial_metadata);
|
51
50
|
|
52
51
|
/* implementation of grpc_transport_set_pollset */
|
53
52
|
void (*set_pollset)(grpc_transport* self, grpc_stream* stream,
|
@@ -77,6 +76,8 @@ typedef struct grpc_transport_vtable {
|
|
77
76
|
|
78
77
|
/* an instance of a grpc transport */
|
79
78
|
struct grpc_transport {
|
79
|
+
struct RawPointerChannelArgTag {};
|
80
|
+
static absl::string_view ChannelArgName() { return GRPC_ARG_TRANSPORT; }
|
80
81
|
/* pointer to a vtable defining operations on this transport */
|
81
82
|
const grpc_transport_vtable* vtable;
|
82
83
|
};
|
@@ -80,12 +80,11 @@ extern void BuildClientChannelConfiguration(
|
|
80
80
|
extern void SecurityRegisterHandshakerFactories(
|
81
81
|
CoreConfiguration::Builder* builder);
|
82
82
|
extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
|
83
|
-
extern void
|
83
|
+
extern void RegisterChannelIdleFilters(CoreConfiguration::Builder* builder);
|
84
84
|
extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
|
85
85
|
extern void RegisterGrpcLbLoadReportingFilter(
|
86
86
|
CoreConfiguration::Builder* builder);
|
87
87
|
extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
|
88
|
-
extern void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder);
|
89
88
|
extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
|
90
89
|
extern void RegisterSecurityFilters(CoreConfiguration::Builder* builder);
|
91
90
|
extern void RegisterServiceConfigChannelArgFilter(
|
@@ -105,10 +104,9 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
|
|
105
104
|
BuildClientChannelConfiguration(builder);
|
106
105
|
SecurityRegisterHandshakerFactories(builder);
|
107
106
|
RegisterClientAuthorityFilter(builder);
|
108
|
-
|
107
|
+
RegisterChannelIdleFilters(builder);
|
109
108
|
RegisterGrpcLbLoadReportingFilter(builder);
|
110
109
|
RegisterHttpFilters(builder);
|
111
|
-
RegisterMaxAgeFilter(builder);
|
112
110
|
RegisterDeadlineFilter(builder);
|
113
111
|
RegisterMessageSizeFilter(builder);
|
114
112
|
RegisterServiceConfigChannelArgFilter(builder);
|
@@ -447,7 +447,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
|
|
447
447
|
GPR_ASSERT(handshaker->client == nullptr);
|
448
448
|
handshaker->client = client;
|
449
449
|
if (handshaker->shutdown) {
|
450
|
-
gpr_log(
|
450
|
+
gpr_log(GPR_INFO, "TSI handshake shutdown");
|
451
451
|
return TSI_HANDSHAKE_SHUTDOWN;
|
452
452
|
}
|
453
453
|
}
|
@@ -532,7 +532,7 @@ static tsi_result handshaker_next(
|
|
532
532
|
{
|
533
533
|
grpc_core::MutexLock lock(&handshaker->mu);
|
534
534
|
if (handshaker->shutdown) {
|
535
|
-
gpr_log(
|
535
|
+
gpr_log(GPR_INFO, "TSI handshake shutdown");
|
536
536
|
return TSI_HANDSHAKE_SHUTDOWN;
|
537
537
|
}
|
538
538
|
}
|
@@ -1441,8 +1441,7 @@ static tsi_result ssl_handshaker_result_create(
|
|
1441
1441
|
static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(
|
1442
1442
|
tsi_ssl_handshaker* impl, unsigned char* bytes, size_t* bytes_size) {
|
1443
1443
|
int bytes_read_from_ssl = 0;
|
1444
|
-
if (bytes == nullptr || bytes_size == nullptr || *bytes_size
|
1445
|
-
*bytes_size > INT_MAX) {
|
1444
|
+
if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
|
1446
1445
|
return TSI_INVALID_ARGUMENT;
|
1447
1446
|
}
|
1448
1447
|
GPR_ASSERT(*bytes_size <= INT_MAX);
|
@@ -1469,22 +1468,7 @@ static tsi_result ssl_handshaker_get_result(tsi_ssl_handshaker* impl) {
|
|
1469
1468
|
return impl->result;
|
1470
1469
|
}
|
1471
1470
|
|
1472
|
-
static tsi_result
|
1473
|
-
tsi_ssl_handshaker* impl, const unsigned char* bytes, size_t* bytes_size) {
|
1474
|
-
int bytes_written_into_ssl_size = 0;
|
1475
|
-
if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
|
1476
|
-
return TSI_INVALID_ARGUMENT;
|
1477
|
-
}
|
1478
|
-
GPR_ASSERT(*bytes_size <= INT_MAX);
|
1479
|
-
bytes_written_into_ssl_size =
|
1480
|
-
BIO_write(impl->network_io, bytes, static_cast<int>(*bytes_size));
|
1481
|
-
if (bytes_written_into_ssl_size < 0) {
|
1482
|
-
gpr_log(GPR_ERROR, "Could not write to memory BIO.");
|
1483
|
-
impl->result = TSI_INTERNAL_ERROR;
|
1484
|
-
return impl->result;
|
1485
|
-
}
|
1486
|
-
*bytes_size = static_cast<size_t>(bytes_written_into_ssl_size);
|
1487
|
-
|
1471
|
+
static tsi_result ssl_handshaker_do_handshake(tsi_ssl_handshaker* impl) {
|
1488
1472
|
if (ssl_handshaker_get_result(impl) != TSI_HANDSHAKE_IN_PROGRESS) {
|
1489
1473
|
impl->result = TSI_OK;
|
1490
1474
|
return impl->result;
|
@@ -1503,6 +1487,8 @@ static tsi_result ssl_handshaker_process_bytes_from_peer(
|
|
1503
1487
|
}
|
1504
1488
|
case SSL_ERROR_NONE:
|
1505
1489
|
return TSI_OK;
|
1490
|
+
case SSL_ERROR_WANT_WRITE:
|
1491
|
+
return TSI_DRAIN_BUFFER;
|
1506
1492
|
default: {
|
1507
1493
|
char err_str[256];
|
1508
1494
|
ERR_error_string_n(ERR_get_error(), err_str, sizeof(err_str));
|
@@ -1515,6 +1501,24 @@ static tsi_result ssl_handshaker_process_bytes_from_peer(
|
|
1515
1501
|
}
|
1516
1502
|
}
|
1517
1503
|
|
1504
|
+
static tsi_result ssl_handshaker_process_bytes_from_peer(
|
1505
|
+
tsi_ssl_handshaker* impl, const unsigned char* bytes, size_t* bytes_size) {
|
1506
|
+
int bytes_written_into_ssl_size = 0;
|
1507
|
+
if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
|
1508
|
+
return TSI_INVALID_ARGUMENT;
|
1509
|
+
}
|
1510
|
+
GPR_ASSERT(*bytes_size <= INT_MAX);
|
1511
|
+
bytes_written_into_ssl_size =
|
1512
|
+
BIO_write(impl->network_io, bytes, static_cast<int>(*bytes_size));
|
1513
|
+
if (bytes_written_into_ssl_size < 0) {
|
1514
|
+
gpr_log(GPR_ERROR, "Could not write to memory BIO.");
|
1515
|
+
impl->result = TSI_INTERNAL_ERROR;
|
1516
|
+
return impl->result;
|
1517
|
+
}
|
1518
|
+
*bytes_size = static_cast<size_t>(bytes_written_into_ssl_size);
|
1519
|
+
return ssl_handshaker_do_handshake(impl);
|
1520
|
+
}
|
1521
|
+
|
1518
1522
|
static void ssl_handshaker_destroy(tsi_handshaker* self) {
|
1519
1523
|
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1520
1524
|
SSL_free(impl->ssl);
|
@@ -1554,6 +1558,30 @@ static tsi_result ssl_bytes_remaining(tsi_ssl_handshaker* impl,
|
|
1554
1558
|
return TSI_OK;
|
1555
1559
|
}
|
1556
1560
|
|
1561
|
+
// Write handshake data received from SSL to an unbound output buffer.
|
1562
|
+
// By doing that, we drain SSL bio buffer used to hold handshake data.
|
1563
|
+
// This API needs to be repeatedly called until all handshake data are
|
1564
|
+
// received from SSL.
|
1565
|
+
static tsi_result ssl_handshaker_write_output_buffer(tsi_handshaker* self,
|
1566
|
+
size_t* bytes_written) {
|
1567
|
+
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1568
|
+
tsi_result status = TSI_OK;
|
1569
|
+
int offset = *bytes_written;
|
1570
|
+
do {
|
1571
|
+
size_t to_send_size = impl->outgoing_bytes_buffer_size - offset;
|
1572
|
+
status = ssl_handshaker_get_bytes_to_send_to_peer(
|
1573
|
+
impl, impl->outgoing_bytes_buffer + offset, &to_send_size);
|
1574
|
+
offset += to_send_size;
|
1575
|
+
if (status == TSI_INCOMPLETE_DATA) {
|
1576
|
+
impl->outgoing_bytes_buffer_size *= 2;
|
1577
|
+
impl->outgoing_bytes_buffer = static_cast<unsigned char*>(gpr_realloc(
|
1578
|
+
impl->outgoing_bytes_buffer, impl->outgoing_bytes_buffer_size));
|
1579
|
+
}
|
1580
|
+
} while (status == TSI_INCOMPLETE_DATA);
|
1581
|
+
*bytes_written = offset;
|
1582
|
+
return status;
|
1583
|
+
}
|
1584
|
+
|
1557
1585
|
static tsi_result ssl_handshaker_next(
|
1558
1586
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
1559
1587
|
size_t received_bytes_size, const unsigned char** bytes_to_send,
|
@@ -1569,27 +1597,22 @@ static tsi_result ssl_handshaker_next(
|
|
1569
1597
|
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
|
1570
1598
|
tsi_result status = TSI_OK;
|
1571
1599
|
size_t bytes_consumed = received_bytes_size;
|
1600
|
+
size_t bytes_written = 0;
|
1572
1601
|
if (received_bytes_size > 0) {
|
1573
1602
|
status = ssl_handshaker_process_bytes_from_peer(impl, received_bytes,
|
1574
1603
|
&bytes_consumed);
|
1575
|
-
|
1604
|
+
while (status == TSI_DRAIN_BUFFER) {
|
1605
|
+
status = ssl_handshaker_write_output_buffer(self, &bytes_written);
|
1606
|
+
if (status != TSI_OK) return status;
|
1607
|
+
status = ssl_handshaker_do_handshake(impl);
|
1608
|
+
}
|
1576
1609
|
}
|
1610
|
+
if (status != TSI_OK) return status;
|
1577
1611
|
/* Get bytes to send to the peer, if available. */
|
1578
|
-
|
1579
|
-
do {
|
1580
|
-
size_t to_send_size = impl->outgoing_bytes_buffer_size - offset;
|
1581
|
-
status = ssl_handshaker_get_bytes_to_send_to_peer(
|
1582
|
-
impl, impl->outgoing_bytes_buffer + offset, &to_send_size);
|
1583
|
-
offset += to_send_size;
|
1584
|
-
if (status == TSI_INCOMPLETE_DATA) {
|
1585
|
-
impl->outgoing_bytes_buffer_size *= 2;
|
1586
|
-
impl->outgoing_bytes_buffer = static_cast<unsigned char*>(gpr_realloc(
|
1587
|
-
impl->outgoing_bytes_buffer, impl->outgoing_bytes_buffer_size));
|
1588
|
-
}
|
1589
|
-
} while (status == TSI_INCOMPLETE_DATA);
|
1612
|
+
status = ssl_handshaker_write_output_buffer(self, &bytes_written);
|
1590
1613
|
if (status != TSI_OK) return status;
|
1591
1614
|
*bytes_to_send = impl->outgoing_bytes_buffer;
|
1592
|
-
*bytes_to_send_size =
|
1615
|
+
*bytes_to_send_size = bytes_written;
|
1593
1616
|
/* If handshake completes, create tsi_handshaker_result. */
|
1594
1617
|
if (ssl_handshaker_get_result(impl) == TSI_HANDSHAKE_IN_PROGRESS) {
|
1595
1618
|
*handshaker_result = nullptr;
|
@@ -1646,6 +1669,8 @@ static void tsi_ssl_handshaker_resume_session(
|
|
1646
1669
|
|
1647
1670
|
static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
|
1648
1671
|
const char* server_name_indication,
|
1672
|
+
size_t network_bio_buf_size,
|
1673
|
+
size_t ssl_bio_buf_size,
|
1649
1674
|
tsi_ssl_handshaker_factory* factory,
|
1650
1675
|
tsi_handshaker** handshaker) {
|
1651
1676
|
SSL* ssl = SSL_new(ctx);
|
@@ -1662,7 +1687,8 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
|
|
1662
1687
|
}
|
1663
1688
|
SSL_set_info_callback(ssl, ssl_info_callback);
|
1664
1689
|
|
1665
|
-
if (!BIO_new_bio_pair(&network_io,
|
1690
|
+
if (!BIO_new_bio_pair(&network_io, network_bio_buf_size, &ssl_io,
|
1691
|
+
ssl_bio_buf_size)) {
|
1666
1692
|
gpr_log(GPR_ERROR, "BIO_new_bio_pair failed.");
|
1667
1693
|
SSL_free(ssl);
|
1668
1694
|
return TSI_OUT_OF_RESOURCES;
|
@@ -1747,10 +1773,11 @@ static int select_protocol_list(const unsigned char** out,
|
|
1747
1773
|
|
1748
1774
|
tsi_result tsi_ssl_client_handshaker_factory_create_handshaker(
|
1749
1775
|
tsi_ssl_client_handshaker_factory* factory,
|
1750
|
-
const char* server_name_indication,
|
1751
|
-
|
1752
|
-
|
1753
|
-
|
1776
|
+
const char* server_name_indication, size_t network_bio_buf_size,
|
1777
|
+
size_t ssl_bio_buf_size, tsi_handshaker** handshaker) {
|
1778
|
+
return create_tsi_ssl_handshaker(
|
1779
|
+
factory->ssl_context, 1, server_name_indication, network_bio_buf_size,
|
1780
|
+
ssl_bio_buf_size, &factory->base, handshaker);
|
1754
1781
|
}
|
1755
1782
|
|
1756
1783
|
void tsi_ssl_client_handshaker_factory_unref(
|
@@ -1784,11 +1811,13 @@ static int client_handshaker_factory_npn_callback(
|
|
1784
1811
|
/* --- tsi_ssl_server_handshaker_factory methods implementation. --- */
|
1785
1812
|
|
1786
1813
|
tsi_result tsi_ssl_server_handshaker_factory_create_handshaker(
|
1787
|
-
tsi_ssl_server_handshaker_factory* factory,
|
1814
|
+
tsi_ssl_server_handshaker_factory* factory, size_t network_bio_buf_size,
|
1815
|
+
size_t ssl_bio_buf_size, tsi_handshaker** handshaker) {
|
1788
1816
|
if (factory->ssl_context_count == 0) return TSI_INVALID_ARGUMENT;
|
1789
1817
|
/* Create the handshaker with the first context. We will switch if needed
|
1790
1818
|
because of SNI in ssl_server_handshaker_factory_servername_callback. */
|
1791
1819
|
return create_tsi_ssl_handshaker(factory->ssl_contexts[0], 0, nullptr,
|
1820
|
+
network_bio_buf_size, ssl_bio_buf_size,
|
1792
1821
|
&factory->base, handshaker);
|
1793
1822
|
}
|
1794
1823
|
|
@@ -1939,8 +1968,16 @@ static void ssl_keylogging_callback(const SSL* ssl, const char* info) {
|
|
1939
1968
|
factory->key_logger->LogSessionKeys(ssl_context, info);
|
1940
1969
|
}
|
1941
1970
|
|
1971
|
+
// This callback is invoked when the CRL has been verified and will soft-fail
|
1972
|
+
// errors in verification depending on certain error types.
|
1942
1973
|
static int verify_cb(int ok, X509_STORE_CTX* ctx) {
|
1943
1974
|
int cert_error = X509_STORE_CTX_get_error(ctx);
|
1975
|
+
if (cert_error == X509_V_ERR_UNABLE_TO_GET_CRL) {
|
1976
|
+
gpr_log(
|
1977
|
+
GPR_INFO,
|
1978
|
+
"Certificate verification failed to get CRL files. Ignoring error.");
|
1979
|
+
return 1;
|
1980
|
+
}
|
1944
1981
|
if (cert_error != 0) {
|
1945
1982
|
gpr_log(GPR_ERROR, "Certificate verify failed with code %d", cert_error);
|
1946
1983
|
}
|
@@ -209,13 +209,16 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options(
|
|
209
209
|
- server_name_indication indicates the name of the server the client is
|
210
210
|
trying to connect to which will be relayed to the server using the SNI
|
211
211
|
extension.
|
212
|
+
- network_bio_buf_size and ssl_bio_buf_size represent BIO pair buffers used in
|
213
|
+
SSL. The buffer size being 0 translates to 17KB in boringSSL.
|
212
214
|
- handshaker is the address of the handshaker pointer to be created.
|
213
215
|
|
214
216
|
- This method returns TSI_OK on success or TSI_INVALID_PARAMETER in the case
|
215
217
|
where a parameter is invalid. */
|
216
218
|
tsi_result tsi_ssl_client_handshaker_factory_create_handshaker(
|
217
219
|
tsi_ssl_client_handshaker_factory* factory,
|
218
|
-
const char* server_name_indication,
|
220
|
+
const char* server_name_indication, size_t network_bio_buf_size,
|
221
|
+
size_t ssl_bio_buf_size, tsi_handshaker** handshaker);
|
219
222
|
|
220
223
|
/* Decrements reference count of the handshaker factory. Handshaker factory will
|
221
224
|
* be destroyed once no references exist. */
|
@@ -347,12 +350,15 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options(
|
|
347
350
|
|
348
351
|
/* Creates a server handshaker.
|
349
352
|
- factory is the factory from which the handshaker will be created.
|
353
|
+
- network_bio_buf_size and ssl_bio_buf_size represent BIO pair buffers used in
|
354
|
+
SSL. The buffer size being 0 translates to 17KB in boringSSL.
|
350
355
|
- handshaker is the address of the handshaker pointer to be created.
|
351
356
|
|
352
357
|
- This method returns TSI_OK on success or TSI_INVALID_PARAMETER in the case
|
353
358
|
where a parameter is invalid. */
|
354
359
|
tsi_result tsi_ssl_server_handshaker_factory_create_handshaker(
|
355
|
-
tsi_ssl_server_handshaker_factory* factory,
|
360
|
+
tsi_ssl_server_handshaker_factory* factory, size_t network_bio_buf_size,
|
361
|
+
size_t ssl_bio_buf_size, tsi_handshaker** handshaker);
|
356
362
|
|
357
363
|
/* Decrements reference count of the handshaker factory. Handshaker factory will
|
358
364
|
* be destroyed once no references exist. */
|
@@ -45,6 +45,8 @@ typedef enum {
|
|
45
45
|
TSI_ASYNC = 13,
|
46
46
|
TSI_HANDSHAKE_SHUTDOWN = 14,
|
47
47
|
TSI_CLOSE_NOTIFY = 15, // Indicates that the connection should be closed.
|
48
|
+
TSI_DRAIN_BUFFER = 16, // Indicates that the buffer used to store handshake
|
49
|
+
// data should be drained.
|
48
50
|
} tsi_result;
|
49
51
|
|
50
52
|
typedef enum {
|
@@ -60,7 +60,7 @@ end
|
|
60
60
|
|
61
61
|
ENV['CPPFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
|
62
62
|
ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="\"RUBY\"" '
|
63
|
-
ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.
|
63
|
+
ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.46.2\"" '
|
64
64
|
|
65
65
|
output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
|
66
66
|
grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
|
@@ -164,7 +164,13 @@ module GRPC
|
|
164
164
|
end
|
165
165
|
|
166
166
|
def receive_and_check_status
|
167
|
-
|
167
|
+
ops = { RECV_STATUS_ON_CLIENT => nil }
|
168
|
+
ops[RECV_INITIAL_METADATA] = nil unless @metadata_received
|
169
|
+
batch_result = @call.run_batch(ops)
|
170
|
+
unless @metadata_received
|
171
|
+
@call.metadata = batch_result.metadata
|
172
|
+
@metadata_received = true
|
173
|
+
end
|
168
174
|
set_input_stream_done
|
169
175
|
attach_status_results_and_complete_call(batch_result)
|
170
176
|
end
|