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
@@ -0,0 +1,87 @@
|
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_CORE_LIB_GPRPP_SINGLE_SET_PTR_H
|
16
|
+
#define GRPC_CORE_LIB_GPRPP_SINGLE_SET_PTR_H
|
17
|
+
|
18
|
+
#include <grpc/support/port_platform.h>
|
19
|
+
|
20
|
+
#include <atomic>
|
21
|
+
#include <memory>
|
22
|
+
|
23
|
+
#include <grpc/support/log.h>
|
24
|
+
|
25
|
+
namespace grpc_core {
|
26
|
+
|
27
|
+
template <class T, class Deleter = std::default_delete<T>>
|
28
|
+
class SingleSetPtr {
|
29
|
+
public:
|
30
|
+
SingleSetPtr() = default;
|
31
|
+
explicit SingleSetPtr(T* p) : p_{p} {}
|
32
|
+
explicit SingleSetPtr(std::unique_ptr<T, Deleter> p) : p_{p.release()} {}
|
33
|
+
~SingleSetPtr() { Delete(p_.load(std::memory_order_relaxed)); }
|
34
|
+
|
35
|
+
SingleSetPtr(const SingleSetPtr&) = delete;
|
36
|
+
SingleSetPtr& operator=(const SingleSetPtr&) = delete;
|
37
|
+
SingleSetPtr(SingleSetPtr&& other) noexcept
|
38
|
+
: p_(other.p_.exchange(nullptr)) {}
|
39
|
+
SingleSetPtr& operator=(SingleSetPtr&& other) noexcept {
|
40
|
+
Set(other.p_.exchange(nullptr, std::memory_order_acq_rel));
|
41
|
+
return *this;
|
42
|
+
}
|
43
|
+
|
44
|
+
// Set the pointer;
|
45
|
+
// if already set, return the pre-set value and delete ptr;
|
46
|
+
// if deleted, return nullptr and delete ptr.
|
47
|
+
T* Set(T* ptr) {
|
48
|
+
T* expected = nullptr;
|
49
|
+
if (!p_.compare_exchange_strong(expected, ptr, std::memory_order_acq_rel,
|
50
|
+
std::memory_order_acquire)) {
|
51
|
+
Delete(ptr);
|
52
|
+
return expected;
|
53
|
+
}
|
54
|
+
return ptr;
|
55
|
+
}
|
56
|
+
|
57
|
+
// Set the pointer from a compatible unique_ptr - with the same caveats as
|
58
|
+
// above.
|
59
|
+
T* Set(std::unique_ptr<T, Deleter> ptr) { return Set(ptr.release()); }
|
60
|
+
|
61
|
+
// Clear the pointer.
|
62
|
+
void Reset() { Delete(p_.exchange(nullptr, std::memory_order_acq_rel)); }
|
63
|
+
|
64
|
+
bool is_set() const {
|
65
|
+
T* p = p_.load(std::memory_order_acquire);
|
66
|
+
return p != nullptr;
|
67
|
+
}
|
68
|
+
|
69
|
+
T* operator->() const {
|
70
|
+
T* p = p_.load(std::memory_order_acquire);
|
71
|
+
GPR_DEBUG_ASSERT(p != nullptr);
|
72
|
+
return p;
|
73
|
+
}
|
74
|
+
|
75
|
+
T& operator*() const { return *operator->(); }
|
76
|
+
|
77
|
+
private:
|
78
|
+
static void Delete(T* p) {
|
79
|
+
if (p == nullptr) return;
|
80
|
+
Deleter()(p);
|
81
|
+
}
|
82
|
+
std::atomic<T*> p_{nullptr};
|
83
|
+
};
|
84
|
+
|
85
|
+
} // namespace grpc_core
|
86
|
+
|
87
|
+
#endif // GRPC_CORE_LIB_GPRPP_SINGLE_SET_PTR_H
|
@@ -20,6 +20,8 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/gprpp/status_helper.h"
|
22
22
|
|
23
|
+
#include <type_traits>
|
24
|
+
|
23
25
|
#include "absl/strings/cord.h"
|
24
26
|
#include "absl/strings/escaping.h"
|
25
27
|
#include "absl/strings/match.h"
|
@@ -218,9 +220,23 @@ absl::optional<std::string> StatusGetStr(const absl::Status& status,
|
|
218
220
|
|
219
221
|
void StatusSetTime(absl::Status* status, StatusTimeProperty key,
|
220
222
|
absl::Time time) {
|
223
|
+
#if !defined(__clang__) && defined(_MSC_VER) && _MSC_VER < 1910
|
224
|
+
// Abseil has a workaround for MSVC 2015 which prevents absl::Time
|
225
|
+
// from being is_trivially_copyable but it's still safe to be
|
226
|
+
// memcopied.
|
227
|
+
#elif defined(__GNUG__) && __GNUC__ < 5
|
228
|
+
// GCC versions < 5 do not support std::is_trivially_copyable
|
229
|
+
#else
|
230
|
+
static_assert(std::is_trivially_copyable<absl::Time>::value,
|
231
|
+
"absl::Time needs to be able to be memcopied");
|
232
|
+
#endif
|
233
|
+
// This is required not to get uninitialized padding of absl::Time.
|
234
|
+
alignas(absl::Time) char buf[sizeof(time)] = {
|
235
|
+
0,
|
236
|
+
};
|
237
|
+
new (buf) absl::Time(time);
|
221
238
|
status->SetPayload(GetStatusTimePropertyUrl(key),
|
222
|
-
absl::Cord(absl::string_view(
|
223
|
-
reinterpret_cast<const char*>(&time), sizeof(time))));
|
239
|
+
absl::Cord(absl::string_view(buf, sizeof(time))));
|
224
240
|
}
|
225
241
|
|
226
242
|
absl::optional<absl::Time> StatusGetTime(const absl::Status& status,
|
data/src/core/lib/gprpp/time.cc
CHANGED
@@ -155,6 +155,12 @@ gpr_timespec Timestamp::as_timespec(gpr_clock_type clock_type) const {
|
|
155
155
|
}
|
156
156
|
|
157
157
|
std::string Timestamp::ToString() const {
|
158
|
+
if (millis_ == std::numeric_limits<int64_t>::max()) {
|
159
|
+
return "@∞";
|
160
|
+
}
|
161
|
+
if (millis_ == std::numeric_limits<int64_t>::min()) {
|
162
|
+
return "@-∞";
|
163
|
+
}
|
158
164
|
return "@" + std::to_string(millis_) + "ms";
|
159
165
|
}
|
160
166
|
|
@@ -167,6 +173,12 @@ Duration Duration::FromTimespec(gpr_timespec t) {
|
|
167
173
|
}
|
168
174
|
|
169
175
|
std::string Duration::ToString() const {
|
176
|
+
if (millis_ == std::numeric_limits<int64_t>::max()) {
|
177
|
+
return "∞";
|
178
|
+
}
|
179
|
+
if (millis_ == std::numeric_limits<int64_t>::min()) {
|
180
|
+
return "-∞";
|
181
|
+
}
|
170
182
|
return std::to_string(millis_) + "ms";
|
171
183
|
}
|
172
184
|
|
data/src/core/lib/gprpp/time.h
CHANGED
@@ -120,7 +120,7 @@ class Timestamp {
|
|
120
120
|
// Duration represents a span of time.
|
121
121
|
class Duration {
|
122
122
|
public:
|
123
|
-
constexpr Duration() : millis_(0) {}
|
123
|
+
constexpr Duration() noexcept : millis_(0) {}
|
124
124
|
|
125
125
|
static Duration FromTimespec(gpr_timespec t);
|
126
126
|
static Duration FromSecondsAndNanoseconds(int64_t seconds, int32_t nanos);
|
@@ -40,8 +40,7 @@ static void fill_common_header(const grpc_http_request* request,
|
|
40
40
|
bool connection_close,
|
41
41
|
std::vector<std::string>* buf) {
|
42
42
|
buf->push_back(path);
|
43
|
-
buf->push_back(" HTTP/1.
|
44
|
-
/* just in case some crazy server really expects HTTP/1.1 */
|
43
|
+
buf->push_back(" HTTP/1.1\r\n");
|
45
44
|
buf->push_back("Host: ");
|
46
45
|
buf->push_back(host);
|
47
46
|
buf->push_back("\r\n");
|
@@ -48,7 +48,7 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
48
48
|
public:
|
49
49
|
explicit grpc_httpcli_ssl_channel_security_connector(char* secure_peer_name)
|
50
50
|
: grpc_channel_security_connector(
|
51
|
-
/*url_scheme=*/
|
51
|
+
/*url_scheme=*/{},
|
52
52
|
/*channel_creds=*/nullptr,
|
53
53
|
/*request_metadata_creds=*/nullptr),
|
54
54
|
secure_peer_name_(secure_peer_name) {}
|
@@ -77,7 +77,8 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
77
77
|
tsi_handshaker* handshaker = nullptr;
|
78
78
|
if (handshaker_factory_ != nullptr) {
|
79
79
|
tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
|
80
|
-
handshaker_factory_, secure_peer_name_,
|
80
|
+
handshaker_factory_, secure_peer_name_, /*network_bio_buf_size=*/0,
|
81
|
+
/*ssl_bio_buf_size=*/0, &handshaker);
|
81
82
|
if (result != TSI_OK) {
|
82
83
|
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
|
83
84
|
tsi_result_to_string(result));
|
@@ -152,9 +153,6 @@ httpcli_ssl_channel_security_connector_create(
|
|
152
153
|
|
153
154
|
class HttpRequestSSLCredentials : public grpc_channel_credentials {
|
154
155
|
public:
|
155
|
-
HttpRequestSSLCredentials() : grpc_channel_credentials("HttpRequestSSL") {}
|
156
|
-
~HttpRequestSSLCredentials() override {}
|
157
|
-
|
158
156
|
RefCountedPtr<grpc_channel_security_connector> create_security_connector(
|
159
157
|
RefCountedPtr<grpc_call_credentials> /*call_creds*/, const char* target,
|
160
158
|
const grpc_channel_args* args,
|
@@ -184,6 +182,8 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials {
|
|
184
182
|
return args;
|
185
183
|
}
|
186
184
|
|
185
|
+
const char* type() const override { return "HttpRequestSSL"; }
|
186
|
+
|
187
187
|
private:
|
188
188
|
int cmp_impl(const grpc_channel_credentials* /* other */) const override {
|
189
189
|
// There's no differentiating factor between two HttpRequestSSLCredentials
|
data/src/core/lib/http/parser.cc
CHANGED
@@ -177,6 +177,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
177
177
|
uint8_t* cur = beg;
|
178
178
|
uint8_t* end = beg + parser->cur_line_length;
|
179
179
|
size_t* hdr_count = nullptr;
|
180
|
+
size_t size = 0;
|
180
181
|
grpc_http_header** hdrs = nullptr;
|
181
182
|
grpc_http_header hdr = {nullptr, nullptr};
|
182
183
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
@@ -205,13 +206,20 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
|
|
205
206
|
cur++;
|
206
207
|
}
|
207
208
|
GPR_ASSERT((size_t)(end - cur) >= parser->cur_line_end_length);
|
208
|
-
|
209
|
-
|
209
|
+
size = static_cast<size_t>(end - cur) - parser->cur_line_end_length;
|
210
|
+
if ((size != 0) && (cur[size - 1] == '\r')) {
|
211
|
+
size--;
|
212
|
+
}
|
213
|
+
hdr.value = buf2str(cur, size);
|
210
214
|
|
211
215
|
switch (parser->type) {
|
212
216
|
case GRPC_HTTP_RESPONSE:
|
213
217
|
hdr_count = &parser->http.response->hdr_count;
|
214
218
|
hdrs = &parser->http.response->hdrs;
|
219
|
+
if ((strcmp(hdr.key, "Transfer-Encoding") == 0) &&
|
220
|
+
(strcmp(hdr.value, "chunked") == 0)) {
|
221
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
|
222
|
+
}
|
215
223
|
break;
|
216
224
|
case GRPC_HTTP_REQUEST:
|
217
225
|
hdr_count = &parser->http.request->hdr_count;
|
@@ -245,17 +253,24 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
|
|
245
253
|
parser->state = GRPC_HTTP_HEADERS;
|
246
254
|
break;
|
247
255
|
case GRPC_HTTP_HEADERS:
|
256
|
+
case GRPC_HTTP_TRAILERS:
|
248
257
|
if (parser->cur_line_length == parser->cur_line_end_length) {
|
249
|
-
parser->state
|
250
|
-
|
258
|
+
if (parser->state == GRPC_HTTP_HEADERS) {
|
259
|
+
parser->state = GRPC_HTTP_BODY;
|
260
|
+
*found_body_start = true;
|
261
|
+
} else {
|
262
|
+
parser->state = GRPC_HTTP_END;
|
263
|
+
}
|
251
264
|
break;
|
252
|
-
}
|
253
|
-
|
254
|
-
|
255
|
-
|
265
|
+
} else {
|
266
|
+
err = add_header(parser);
|
267
|
+
if (err != GRPC_ERROR_NONE) {
|
268
|
+
return err;
|
269
|
+
}
|
256
270
|
}
|
257
271
|
break;
|
258
272
|
case GRPC_HTTP_BODY:
|
273
|
+
case GRPC_HTTP_END:
|
259
274
|
GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
260
275
|
"Should never reach here"));
|
261
276
|
}
|
@@ -269,6 +284,59 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
|
|
269
284
|
char** body = nullptr;
|
270
285
|
|
271
286
|
if (parser->type == GRPC_HTTP_RESPONSE) {
|
287
|
+
switch (parser->http.response->chunked_state) {
|
288
|
+
case GRPC_HTTP_CHUNKED_LENGTH:
|
289
|
+
if ((byte == '\r') || (byte == ';')) {
|
290
|
+
parser->http.response->chunked_state =
|
291
|
+
GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF;
|
292
|
+
} else if ((byte >= '0') && (byte <= '9')) {
|
293
|
+
parser->http.response->chunk_length *= 16;
|
294
|
+
parser->http.response->chunk_length += byte - '0';
|
295
|
+
} else if ((byte >= 'a') && (byte <= 'f')) {
|
296
|
+
parser->http.response->chunk_length *= 16;
|
297
|
+
parser->http.response->chunk_length += byte - 'a' + 10;
|
298
|
+
} else if ((byte >= 'A') && (byte <= 'F')) {
|
299
|
+
parser->http.response->chunk_length *= 16;
|
300
|
+
parser->http.response->chunk_length += byte - 'A' + 10;
|
301
|
+
} else {
|
302
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
303
|
+
"Expected chunk size in hexadecimal");
|
304
|
+
}
|
305
|
+
return GRPC_ERROR_NONE;
|
306
|
+
case GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF:
|
307
|
+
if (byte == '\n') {
|
308
|
+
if (parser->http.response->chunk_length == 0) {
|
309
|
+
parser->state = GRPC_HTTP_TRAILERS;
|
310
|
+
} else {
|
311
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_BODY;
|
312
|
+
}
|
313
|
+
}
|
314
|
+
return GRPC_ERROR_NONE;
|
315
|
+
case GRPC_HTTP_CHUNKED_BODY:
|
316
|
+
if (parser->http.response->chunk_length == 0) {
|
317
|
+
if (byte != '\r') {
|
318
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
319
|
+
"Expected '\\r\\n' after chunk body");
|
320
|
+
}
|
321
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_CONSUME_LF;
|
322
|
+
parser->http.response->chunk_length = 0;
|
323
|
+
return GRPC_ERROR_NONE;
|
324
|
+
} else {
|
325
|
+
parser->http.response->chunk_length--;
|
326
|
+
/* fallback to the normal body appending code below */
|
327
|
+
}
|
328
|
+
break;
|
329
|
+
case GRPC_HTTP_CHUNKED_CONSUME_LF:
|
330
|
+
if (byte != '\n') {
|
331
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
332
|
+
"Expected '\\r\\n' after chunk body");
|
333
|
+
}
|
334
|
+
parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
|
335
|
+
return GRPC_ERROR_NONE;
|
336
|
+
case GRPC_HTTP_CHUNKED_PLAIN:
|
337
|
+
/* avoiding warning; just fallback to normal codepath */
|
338
|
+
break;
|
339
|
+
}
|
272
340
|
body_length = &parser->http.response->body_length;
|
273
341
|
body = &parser->http.response->body;
|
274
342
|
} else if (parser->type == GRPC_HTTP_REQUEST) {
|
@@ -318,6 +386,7 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
|
|
318
386
|
switch (parser->state) {
|
319
387
|
case GRPC_HTTP_FIRST_LINE:
|
320
388
|
case GRPC_HTTP_HEADERS:
|
389
|
+
case GRPC_HTTP_TRAILERS:
|
321
390
|
if (parser->cur_line_length >= GRPC_HTTP_PARSER_MAX_HEADER_LENGTH) {
|
322
391
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_http1_trace)) {
|
323
392
|
gpr_log(GPR_ERROR, "HTTP header max line length (%d) exceeded",
|
@@ -334,6 +403,8 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
|
|
334
403
|
return GRPC_ERROR_NONE;
|
335
404
|
case GRPC_HTTP_BODY:
|
336
405
|
return addbyte_body(parser, byte);
|
406
|
+
case GRPC_HTTP_END:
|
407
|
+
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unexpected byte after end");
|
337
408
|
}
|
338
409
|
GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
|
339
410
|
}
|
@@ -385,7 +456,7 @@ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
|
|
385
456
|
}
|
386
457
|
|
387
458
|
grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser) {
|
388
|
-
if (parser->state != GRPC_HTTP_BODY) {
|
459
|
+
if ((parser->state != GRPC_HTTP_BODY) && (parser->state != GRPC_HTTP_END)) {
|
389
460
|
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Did not finish headers");
|
390
461
|
}
|
391
462
|
return GRPC_ERROR_NONE;
|
data/src/core/lib/http/parser.h
CHANGED
@@ -38,9 +38,19 @@ typedef struct grpc_http_header {
|
|
38
38
|
typedef enum {
|
39
39
|
GRPC_HTTP_FIRST_LINE,
|
40
40
|
GRPC_HTTP_HEADERS,
|
41
|
-
GRPC_HTTP_BODY
|
41
|
+
GRPC_HTTP_BODY,
|
42
|
+
GRPC_HTTP_TRAILERS,
|
43
|
+
GRPC_HTTP_END,
|
42
44
|
} grpc_http_parser_state;
|
43
45
|
|
46
|
+
typedef enum {
|
47
|
+
GRPC_HTTP_CHUNKED_PLAIN,
|
48
|
+
GRPC_HTTP_CHUNKED_LENGTH,
|
49
|
+
GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF,
|
50
|
+
GRPC_HTTP_CHUNKED_BODY,
|
51
|
+
GRPC_HTTP_CHUNKED_CONSUME_LF,
|
52
|
+
} grpc_http_parser_chunked_state;
|
53
|
+
|
44
54
|
typedef enum {
|
45
55
|
GRPC_HTTP_HTTP10,
|
46
56
|
GRPC_HTTP_HTTP11,
|
@@ -77,6 +87,9 @@ typedef struct grpc_http_response {
|
|
77
87
|
grpc_http_header* hdrs = nullptr;
|
78
88
|
/* Body: length and contents; contents are NOT null-terminated */
|
79
89
|
size_t body_length = 0;
|
90
|
+
/* State of the chunked parser. Only valid for the response. */
|
91
|
+
grpc_http_parser_chunked_state chunked_state = GRPC_HTTP_CHUNKED_PLAIN;
|
92
|
+
size_t chunk_length = 0;
|
80
93
|
char* body = nullptr;
|
81
94
|
} grpc_http_response;
|
82
95
|
|
@@ -32,7 +32,6 @@
|
|
32
32
|
#include "src/core/lib/gpr/useful.h"
|
33
33
|
#include "src/core/lib/gprpp/global_config.h"
|
34
34
|
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
|
35
|
-
#include "src/core/lib/iomgr/ev_epollex_linux.h"
|
36
35
|
#include "src/core/lib/iomgr/ev_poll_posix.h"
|
37
36
|
#include "src/core/lib/iomgr/ev_posix.h"
|
38
37
|
#include "src/core/lib/iomgr/internal_errqueue.h"
|
@@ -126,12 +125,12 @@ const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
|
|
126
125
|
// environment variable if that variable is set (which should be a
|
127
126
|
// comma-separated list of one or more event engine names)
|
128
127
|
static event_engine_factory g_factories[] = {
|
129
|
-
{ENGINE_HEAD_CUSTOM, nullptr},
|
130
|
-
{ENGINE_HEAD_CUSTOM, nullptr},
|
131
|
-
{"
|
132
|
-
{"
|
133
|
-
{ENGINE_TAIL_CUSTOM, nullptr},
|
134
|
-
{ENGINE_TAIL_CUSTOM, nullptr},
|
128
|
+
{ENGINE_HEAD_CUSTOM, nullptr}, {ENGINE_HEAD_CUSTOM, nullptr},
|
129
|
+
{ENGINE_HEAD_CUSTOM, nullptr}, {ENGINE_HEAD_CUSTOM, nullptr},
|
130
|
+
{"epoll1", grpc_init_epoll1_linux}, {"poll", grpc_init_poll_posix},
|
131
|
+
{"none", init_non_polling}, {ENGINE_TAIL_CUSTOM, nullptr},
|
132
|
+
{ENGINE_TAIL_CUSTOM, nullptr}, {ENGINE_TAIL_CUSTOM, nullptr},
|
133
|
+
{ENGINE_TAIL_CUSTOM, nullptr},
|
135
134
|
};
|
136
135
|
|
137
136
|
static void add(const char* beg, const char* end, char*** ss, size_t* ns) {
|
@@ -67,7 +67,7 @@ void grpc_prefork() {
|
|
67
67
|
if (poll_strategy_name == nullptr ||
|
68
68
|
(strcmp(poll_strategy_name, "epoll1") != 0 &&
|
69
69
|
strcmp(poll_strategy_name, "poll") != 0)) {
|
70
|
-
gpr_log(
|
70
|
+
gpr_log(GPR_INFO,
|
71
71
|
"Fork support is only compatible with the epoll1 and poll polling "
|
72
72
|
"strategies");
|
73
73
|
return;
|
data/src/core/lib/iomgr/port.h
CHANGED
@@ -107,7 +107,6 @@
|
|
107
107
|
#define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
|
108
108
|
#define GRPC_POSIX_SOCKET_EV 1
|
109
109
|
#define GRPC_POSIX_SOCKET_EV_EPOLL1 1
|
110
|
-
#define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
|
111
110
|
#define GRPC_POSIX_SOCKET_EV_POLL 1
|
112
111
|
#define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
|
113
112
|
#define GRPC_POSIX_SOCKET_RESOLVE_ADDRESS 1
|
@@ -192,7 +191,6 @@
|
|
192
191
|
#ifdef GRPC_POSIX_SOCKET
|
193
192
|
#define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
|
194
193
|
#define GRPC_POSIX_SOCKET_EV 1
|
195
|
-
#define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
|
196
194
|
#define GRPC_POSIX_SOCKET_EV_POLL 1
|
197
195
|
#define GRPC_POSIX_SOCKET_EV_EPOLL1 1
|
198
196
|
#define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
|
@@ -136,6 +136,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
136
136
|
int done;
|
137
137
|
grpc_endpoint** ep = ac->ep;
|
138
138
|
grpc_closure* closure = ac->closure;
|
139
|
+
std::string addr_str = ac->addr_str;
|
139
140
|
grpc_fd* fd;
|
140
141
|
|
141
142
|
(void)GRPC_ERROR_REF(error);
|
@@ -221,8 +222,7 @@ finish:
|
|
221
222
|
std::string description =
|
222
223
|
absl::StrCat("Failed to connect to remote host: ", str);
|
223
224
|
error = grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION, description);
|
224
|
-
error =
|
225
|
-
grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, ac->addr_str);
|
225
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, addr_str);
|
226
226
|
}
|
227
227
|
if (done) {
|
228
228
|
// This is safe even outside the lock, because "done", the sentinel, is
|