grpc 1.27.0.pre1 → 1.30.1
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 +8023 -11437
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +30 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +24 -21
- data/include/grpc/impl/codegen/port_platform.h +13 -2
- data/include/grpc/impl/codegen/sync.h +5 -3
- data/include/grpc/impl/codegen/sync_abseil.h +36 -0
- data/include/grpc/module.modulemap +25 -37
- data/include/grpc/support/sync_abseil.h +26 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +282 -249
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +271 -465
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +148 -98
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +49 -77
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +120 -132
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +17 -21
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +167 -121
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +3 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +42 -45
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +94 -103
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +61 -10
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +242 -300
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +21 -18
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +56 -206
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +11 -14
- data/src/core/ext/filters/client_channel/server_address.h +3 -2
- data/src/core/ext/filters/client_channel/service_config.cc +144 -253
- data/src/core/ext/filters/client_channel/service_config.h +32 -109
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +1381 -301
- data/src/core/ext/filters/client_channel/xds/xds_api.h +211 -152
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +214 -359
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +28 -44
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +16 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1118 -472
- data/src/core/ext/filters/client_channel/xds/xds_client.h +116 -45
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -135
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +122 -137
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +38 -44
- data/src/core/ext/filters/message_size/message_size_filter.h +5 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -10
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +26 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +16 -9
- data/src/core/ext/transport/inproc/inproc_transport.cc +41 -42
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +5 -205
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -788
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +5 -362
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +30 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +87 -23
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +262 -62
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +20 -15
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +27 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +46 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +98 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +77 -21
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +201 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +8 -68
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +2 -71
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +2 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +12 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +44 -39
- data/src/core/ext/upb-generated/validate/validate.upb.h +155 -119
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channel_trace.cc +32 -41
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.cc +163 -254
- data/src/core/lib/channel/channelz.h +15 -17
- data/src/core/lib/channel/channelz_registry.cc +52 -77
- data/src/core/lib/channel/channelz_registry.h +4 -4
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +116 -0
- data/src/core/lib/gpr/sync_posix.cc +8 -5
- data/src/core/lib/gpr/sync_windows.cc +4 -2
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +30 -36
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/memory.h +2 -6
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/gprpp/sync.h +9 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.cc +36 -35
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +4 -5
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +14 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/load_file.cc +1 -0
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/iomgr/pollset_uv.h +32 -0
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +25 -22
- data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/iomgr/timer_generic.h +39 -0
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/iomgr/work_serializer.cc +155 -0
- data/src/core/lib/iomgr/work_serializer.h +65 -0
- data/src/core/lib/json/json.h +210 -79
- data/src/core/lib/json/json_reader.cc +469 -455
- data/src/core/lib/json/json_writer.cc +174 -169
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -12
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
- data/src/core/lib/security/credentials/jwt/json_token.h +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +151 -168
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +91 -60
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +40 -12
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +6 -8
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -37
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +62 -13
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -11
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -52
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +32 -6
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/security/util/json_util.cc +22 -15
- data/src/core/lib/security/util/json_util.h +2 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +9 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +54 -40
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/base/attributes.h +13 -1
- data/third_party/abseil-cpp/absl/base/config.h +55 -6
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +9 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +5 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +15 -13
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +12 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
- data/third_party/abseil-cpp/absl/base/options.h +9 -12
- data/third_party/abseil-cpp/absl/numeric/int128.cc +2 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +1 -1
- data/third_party/abseil-cpp/absl/strings/ascii.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +54 -5
- data/third_party/abseil-cpp/absl/strings/numbers.h +6 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +31 -24
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +329 -297
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +7 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +13 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +11 -0
- data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519.c +18 -26
- data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/internal.h +14 -22
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +16 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +10 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +39 -38
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +14 -28
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +58 -39
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +72 -49
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +99 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +41 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +16 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +4 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +16 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +5 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +4 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +5 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +9 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +20 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +1 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +16 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +6 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +13 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +14 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +3 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +31 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +26 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +182 -97
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +1 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +5 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +1 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +13 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +237 -51
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +19 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +51 -32
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +12 -8
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +94 -71
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +10 -10
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +4 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +21 -22
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +30 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +4 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +19 -15
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +13 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +66 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +6 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +6 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +53 -219
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +101 -31
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +28 -76
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +111 -104
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +64 -26
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +512 -503
- metadata +648 -503
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1917
- data/src/core/lib/gprpp/inlined_vector.h +0 -246
- data/src/core/lib/gprpp/optional.h +0 -74
- data/src/core/lib/gprpp/string_view.h +0 -169
- data/src/core/lib/iomgr/logical_thread.cc +0 -103
- data/src/core/lib/iomgr/logical_thread.h +0 -52
- data/src/core/lib/json/json.cc +0 -94
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3297
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
- data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
- data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
@@ -28,11 +28,16 @@
|
|
28
28
|
|
29
29
|
#include <set>
|
30
30
|
|
31
|
+
#include "absl/strings/string_view.h"
|
32
|
+
|
31
33
|
#include <grpc/support/alloc.h>
|
32
34
|
#include <grpc/support/log.h>
|
33
35
|
#include <grpc/support/string_util.h>
|
34
36
|
#include <grpc/support/sync.h>
|
35
37
|
|
38
|
+
#include "absl/container/inlined_vector.h"
|
39
|
+
#include "absl/types/optional.h"
|
40
|
+
|
36
41
|
#include "src/core/ext/filters/client_channel/backend_metric.h"
|
37
42
|
#include "src/core/ext/filters/client_channel/backup_poller.h"
|
38
43
|
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
|
@@ -45,6 +50,7 @@
|
|
45
50
|
#include "src/core/ext/filters/client_channel/resolving_lb_policy.h"
|
46
51
|
#include "src/core/ext/filters/client_channel/retry_throttle.h"
|
47
52
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
53
|
+
#include "src/core/ext/filters/client_channel/service_config_call_data.h"
|
48
54
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
49
55
|
#include "src/core/ext/filters/deadline/deadline_filter.h"
|
50
56
|
#include "src/core/lib/backoff/backoff.h"
|
@@ -52,13 +58,12 @@
|
|
52
58
|
#include "src/core/lib/channel/connected_channel.h"
|
53
59
|
#include "src/core/lib/channel/status_util.h"
|
54
60
|
#include "src/core/lib/gpr/string.h"
|
55
|
-
#include "src/core/lib/gprpp/inlined_vector.h"
|
56
61
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
57
62
|
#include "src/core/lib/gprpp/map.h"
|
58
63
|
#include "src/core/lib/gprpp/sync.h"
|
59
|
-
#include "src/core/lib/iomgr/combiner.h"
|
60
64
|
#include "src/core/lib/iomgr/iomgr.h"
|
61
65
|
#include "src/core/lib/iomgr/polling_entity.h"
|
66
|
+
#include "src/core/lib/iomgr/work_serializer.h"
|
62
67
|
#include "src/core/lib/profiling/timers.h"
|
63
68
|
#include "src/core/lib/slice/slice_internal.h"
|
64
69
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
@@ -126,6 +131,7 @@ class ChannelData {
|
|
126
131
|
size_t per_rpc_retry_buffer_size() const {
|
127
132
|
return per_rpc_retry_buffer_size_;
|
128
133
|
}
|
134
|
+
grpc_channel_stack* owning_stack() const { return owning_stack_; }
|
129
135
|
|
130
136
|
// Note: Does NOT return a new ref.
|
131
137
|
grpc_error* disconnect_error() const {
|
@@ -149,6 +155,7 @@ class ChannelData {
|
|
149
155
|
RefCountedPtr<ServiceConfig> service_config() const {
|
150
156
|
return service_config_;
|
151
157
|
}
|
158
|
+
WorkSerializer* work_serializer() const { return work_serializer_.get(); }
|
152
159
|
|
153
160
|
RefCountedPtr<ConnectedSubchannel> GetConnectedSubchannelInDataPlane(
|
154
161
|
SubchannelInterface* subchannel) const;
|
@@ -159,21 +166,29 @@ class ChannelData {
|
|
159
166
|
grpc_connectivity_state* state,
|
160
167
|
grpc_closure* on_complete,
|
161
168
|
grpc_closure* watcher_timer_init) {
|
162
|
-
|
163
|
-
// Will be deleted when the watch is complete.
|
164
|
-
GPR_ASSERT(external_watchers_[on_complete] == nullptr);
|
165
|
-
external_watchers_[on_complete] = new ExternalConnectivityWatcher(
|
169
|
+
auto* watcher = new ExternalConnectivityWatcher(
|
166
170
|
this, pollent, state, on_complete, watcher_timer_init);
|
171
|
+
{
|
172
|
+
MutexLock lock(&external_watchers_mu_);
|
173
|
+
// Will be deleted when the watch is complete.
|
174
|
+
GPR_ASSERT(external_watchers_[on_complete] == nullptr);
|
175
|
+
external_watchers_[on_complete] = watcher;
|
176
|
+
}
|
177
|
+
watcher->Start();
|
167
178
|
}
|
168
179
|
|
169
180
|
void RemoveExternalConnectivityWatcher(grpc_closure* on_complete,
|
170
181
|
bool cancel) {
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
external_watchers_.
|
182
|
+
ExternalConnectivityWatcher* watcher = nullptr;
|
183
|
+
{
|
184
|
+
MutexLock lock(&external_watchers_mu_);
|
185
|
+
auto it = external_watchers_.find(on_complete);
|
186
|
+
if (it != external_watchers_.end()) {
|
187
|
+
watcher = it->second;
|
188
|
+
external_watchers_.erase(it);
|
189
|
+
}
|
176
190
|
}
|
191
|
+
if (watcher != nullptr && cancel) watcher->Cancel();
|
177
192
|
}
|
178
193
|
|
179
194
|
int NumExternalConnectivityWatchers() const {
|
@@ -204,13 +219,15 @@ class ChannelData {
|
|
204
219
|
|
205
220
|
~ExternalConnectivityWatcher();
|
206
221
|
|
222
|
+
void Start();
|
223
|
+
|
207
224
|
void Notify(grpc_connectivity_state state) override;
|
208
225
|
|
209
226
|
void Cancel();
|
210
227
|
|
211
228
|
private:
|
212
|
-
|
213
|
-
|
229
|
+
void AddWatcherLocked();
|
230
|
+
void RemoveWatcherLocked();
|
214
231
|
|
215
232
|
ChannelData* chand_;
|
216
233
|
grpc_polling_entity pollent_;
|
@@ -218,8 +235,6 @@ class ChannelData {
|
|
218
235
|
grpc_connectivity_state* state_;
|
219
236
|
grpc_closure* on_complete_;
|
220
237
|
grpc_closure* watcher_timer_init_;
|
221
|
-
grpc_closure add_closure_;
|
222
|
-
grpc_closure remove_closure_;
|
223
238
|
Atomic<bool> done_{false};
|
224
239
|
};
|
225
240
|
|
@@ -239,20 +254,19 @@ class ChannelData {
|
|
239
254
|
void DestroyResolvingLoadBalancingPolicyLocked();
|
240
255
|
|
241
256
|
static bool ProcessResolverResultLocked(
|
242
|
-
void* arg, const Resolver::Result& result,
|
257
|
+
void* arg, const Resolver::Result& result,
|
243
258
|
RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config,
|
244
|
-
grpc_error** service_config_error);
|
259
|
+
grpc_error** service_config_error, bool* no_valid_service_config);
|
245
260
|
|
246
261
|
grpc_error* DoPingLocked(grpc_transport_op* op);
|
247
262
|
|
248
|
-
|
263
|
+
void StartTransportOpLocked(grpc_transport_op* op);
|
249
264
|
|
250
|
-
|
265
|
+
void TryToConnectLocked();
|
251
266
|
|
252
267
|
void ProcessLbPolicy(
|
253
268
|
const Resolver::Result& resolver_result,
|
254
269
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
|
255
|
-
grpc_core::UniquePtr<char>* lb_policy_name,
|
256
270
|
RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config);
|
257
271
|
|
258
272
|
//
|
@@ -281,9 +295,9 @@ class ChannelData {
|
|
281
295
|
RefCountedPtr<ServiceConfig> service_config_;
|
282
296
|
|
283
297
|
//
|
284
|
-
// Fields used in the control plane. Guarded by
|
298
|
+
// Fields used in the control plane. Guarded by work_serializer.
|
285
299
|
//
|
286
|
-
|
300
|
+
std::shared_ptr<WorkSerializer> work_serializer_;
|
287
301
|
grpc_pollset_set* interested_parties_;
|
288
302
|
RefCountedPtr<SubchannelPoolInterface> subchannel_pool_;
|
289
303
|
OrphanablePtr<ResolvingLoadBalancingPolicy> resolving_lb_policy_;
|
@@ -295,17 +309,17 @@ class ChannelData {
|
|
295
309
|
std::map<Subchannel*, int> subchannel_refcount_map_;
|
296
310
|
// The set of SubchannelWrappers that currently exist.
|
297
311
|
// No need to hold a ref, since the map is updated in the control-plane
|
298
|
-
//
|
312
|
+
// work_serializer when the SubchannelWrappers are created and destroyed.
|
299
313
|
std::set<SubchannelWrapper*> subchannel_wrappers_;
|
300
314
|
// Pending ConnectedSubchannel updates for each SubchannelWrapper.
|
301
|
-
// Updates are queued here in the control plane
|
302
|
-
// in the data plane mutex when the picker is updated.
|
303
|
-
std::map<RefCountedPtr<SubchannelWrapper>, RefCountedPtr<ConnectedSubchannel
|
304
|
-
RefCountedPtrLess<SubchannelWrapper>>
|
315
|
+
// Updates are queued here in the control plane work_serializer and then
|
316
|
+
// applied in the data plane mutex when the picker is updated.
|
317
|
+
std::map<RefCountedPtr<SubchannelWrapper>, RefCountedPtr<ConnectedSubchannel>>
|
305
318
|
pending_subchannel_updates_;
|
306
319
|
|
307
320
|
//
|
308
|
-
// Fields accessed from both data plane mutex and control plane
|
321
|
+
// Fields accessed from both data plane mutex and control plane
|
322
|
+
// work_serializer.
|
309
323
|
//
|
310
324
|
Atomic<grpc_error*> disconnect_error_;
|
311
325
|
|
@@ -365,7 +379,7 @@ class CallData {
|
|
365
379
|
Metadata(CallData* calld, grpc_metadata_batch* batch)
|
366
380
|
: calld_(calld), batch_(batch) {}
|
367
381
|
|
368
|
-
void Add(
|
382
|
+
void Add(absl::string_view key, absl::string_view value) override {
|
369
383
|
grpc_linked_mdelem* linked_mdelem = static_cast<grpc_linked_mdelem*>(
|
370
384
|
calld_->arena_->Alloc(sizeof(grpc_linked_mdelem)));
|
371
385
|
linked_mdelem->md = grpc_mdelem_from_slices(
|
@@ -400,7 +414,7 @@ class CallData {
|
|
400
414
|
reinterpret_cast<grpc_linked_mdelem*>(handle);
|
401
415
|
return reinterpret_cast<intptr_t>(linked_mdelem->next);
|
402
416
|
}
|
403
|
-
std::pair<
|
417
|
+
std::pair<absl::string_view, absl::string_view> IteratorHandleGet(
|
404
418
|
intptr_t handle) const override {
|
405
419
|
grpc_linked_mdelem* linked_mdelem =
|
406
420
|
reinterpret_cast<grpc_linked_mdelem*>(handle);
|
@@ -432,6 +446,12 @@ class CallData {
|
|
432
446
|
return calld_->backend_metric_data_;
|
433
447
|
}
|
434
448
|
|
449
|
+
absl::string_view ExperimentalGetCallAttribute(const char* key) override {
|
450
|
+
auto it = calld_->call_attributes_.find(key);
|
451
|
+
if (it == calld_->call_attributes_.end()) return absl::string_view();
|
452
|
+
return it->second;
|
453
|
+
}
|
454
|
+
|
435
455
|
private:
|
436
456
|
CallData* calld_;
|
437
457
|
};
|
@@ -751,8 +771,8 @@ class CallData {
|
|
751
771
|
grpc_call_context_element* call_context_;
|
752
772
|
|
753
773
|
RefCountedPtr<ServerRetryThrottleData> retry_throttle_data_;
|
754
|
-
ServiceConfig::CallData service_config_call_data_;
|
755
774
|
const ClientChannelMethodParsedConfig* method_params_ = nullptr;
|
775
|
+
std::map<const char*, absl::string_view> call_attributes_;
|
756
776
|
|
757
777
|
RefCountedPtr<SubchannelCall> subchannel_call_;
|
758
778
|
|
@@ -821,7 +841,7 @@ class CallData {
|
|
821
841
|
// Note: We inline the cache for the first 3 send_message ops and use
|
822
842
|
// dynamic allocation after that. This number was essentially picked
|
823
843
|
// at random; it could be changed in the future to tune performance.
|
824
|
-
InlinedVector<ByteStreamCache*, 3> send_messages_;
|
844
|
+
absl::InlinedVector<ByteStreamCache*, 3> send_messages_;
|
825
845
|
// send_trailing_metadata
|
826
846
|
bool seen_send_trailing_metadata_ = false;
|
827
847
|
grpc_linked_mdelem* send_trailing_metadata_storage_ = nullptr;
|
@@ -839,7 +859,7 @@ class CallData {
|
|
839
859
|
// Note that no synchronization is needed here, because even if the
|
840
860
|
// underlying subchannel is shared between channels, this wrapper will only
|
841
861
|
// be used within one channel, so it will always be synchronized by the
|
842
|
-
// control plane
|
862
|
+
// control plane work_serializer.
|
843
863
|
class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
844
864
|
public:
|
845
865
|
SubchannelWrapper(ChannelData* chand, Subchannel* subchannel,
|
@@ -908,7 +928,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
908
928
|
initial_state,
|
909
929
|
grpc_core::UniquePtr<char>(
|
910
930
|
gpr_strdup(health_check_service_name_.get())),
|
911
|
-
|
931
|
+
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
912
932
|
watcher_wrapper));
|
913
933
|
}
|
914
934
|
|
@@ -958,14 +978,14 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
958
978
|
replacement->last_seen_state(),
|
959
979
|
grpc_core::UniquePtr<char>(
|
960
980
|
gpr_strdup(health_check_service_name.get())),
|
961
|
-
|
981
|
+
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
962
982
|
replacement));
|
963
983
|
}
|
964
984
|
// Save the new health check service name.
|
965
985
|
health_check_service_name_ = std::move(health_check_service_name);
|
966
986
|
}
|
967
987
|
|
968
|
-
// Caller must be holding the control-plane
|
988
|
+
// Caller must be holding the control-plane work_serializer.
|
969
989
|
ConnectedSubchannel* connected_subchannel() const {
|
970
990
|
return connected_subchannel_.get();
|
971
991
|
}
|
@@ -1005,23 +1025,27 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
1005
1025
|
parent_(std::move(parent)),
|
1006
1026
|
last_seen_state_(initial_state) {}
|
1007
1027
|
|
1008
|
-
~WatcherWrapper() {
|
1009
|
-
|
1010
|
-
|
1028
|
+
~WatcherWrapper() {
|
1029
|
+
auto* parent = parent_.release(); // ref owned by lambda
|
1030
|
+
parent->chand_->work_serializer_->Run(
|
1031
|
+
[parent]() { parent->Unref(DEBUG_LOCATION, "WatcherWrapper"); },
|
1032
|
+
DEBUG_LOCATION);
|
1033
|
+
}
|
1011
1034
|
|
1012
|
-
void OnConnectivityStateChange(
|
1013
|
-
grpc_connectivity_state new_state,
|
1014
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel) override {
|
1035
|
+
void OnConnectivityStateChange() override {
|
1015
1036
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1016
1037
|
gpr_log(GPR_INFO,
|
1017
1038
|
"chand=%p: connectivity change for subchannel wrapper %p "
|
1018
|
-
"subchannel %p
|
1019
|
-
|
1020
|
-
parent_->chand_, parent_.get(), parent_->subchannel_,
|
1021
|
-
connected_subchannel.get(), ConnectivityStateName(new_state));
|
1039
|
+
"subchannel %p; hopping into work_serializer",
|
1040
|
+
parent_->chand_, parent_.get(), parent_->subchannel_);
|
1022
1041
|
}
|
1023
|
-
//
|
1024
|
-
|
1042
|
+
Ref().release(); // ref owned by lambda
|
1043
|
+
parent_->chand_->work_serializer_->Run(
|
1044
|
+
[this]() {
|
1045
|
+
ApplyUpdateInControlPlaneWorkSerializer();
|
1046
|
+
Unref();
|
1047
|
+
},
|
1048
|
+
DEBUG_LOCATION);
|
1025
1049
|
}
|
1026
1050
|
|
1027
1051
|
grpc_pollset_set* interested_parties() override {
|
@@ -1041,50 +1065,25 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
1041
1065
|
grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
|
1042
1066
|
|
1043
1067
|
private:
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
parent_->parent_->chand_->combiner_->Run(
|
1053
|
-
GRPC_CLOSURE_INIT(&closure_, ApplyUpdateInControlPlaneCombiner,
|
1054
|
-
this, nullptr),
|
1055
|
-
GRPC_ERROR_NONE);
|
1068
|
+
void ApplyUpdateInControlPlaneWorkSerializer() {
|
1069
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1070
|
+
gpr_log(GPR_INFO,
|
1071
|
+
"chand=%p: processing connectivity change in work serializer "
|
1072
|
+
"for subchannel wrapper %p subchannel %p "
|
1073
|
+
"watcher=%p",
|
1074
|
+
parent_->chand_, parent_.get(), parent_->subchannel_,
|
1075
|
+
watcher_.get());
|
1056
1076
|
}
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
"for subchannel wrapper %p subchannel %p "
|
1066
|
-
"(connected_subchannel=%p state=%s): watcher=%p",
|
1067
|
-
self->parent_->parent_->chand_, self->parent_->parent_.get(),
|
1068
|
-
self->parent_->parent_->subchannel_,
|
1069
|
-
self->connected_subchannel_.get(),
|
1070
|
-
ConnectivityStateName(self->state_),
|
1071
|
-
self->parent_->watcher_.get());
|
1072
|
-
}
|
1073
|
-
// Ignore update if the parent WatcherWrapper has been replaced
|
1074
|
-
// since this callback was scheduled.
|
1075
|
-
if (self->parent_->watcher_ == nullptr) return;
|
1076
|
-
self->parent_->last_seen_state_ = self->state_;
|
1077
|
-
self->parent_->parent_->MaybeUpdateConnectedSubchannel(
|
1078
|
-
std::move(self->connected_subchannel_));
|
1079
|
-
self->parent_->watcher_->OnConnectivityStateChange(self->state_);
|
1080
|
-
delete self;
|
1077
|
+
ConnectivityStateChange state_change = PopConnectivityStateChange();
|
1078
|
+
// Ignore update if the parent WatcherWrapper has been replaced
|
1079
|
+
// since this callback was scheduled.
|
1080
|
+
if (watcher_ != nullptr) {
|
1081
|
+
last_seen_state_ = state_change.state;
|
1082
|
+
parent_->MaybeUpdateConnectedSubchannel(
|
1083
|
+
std::move(state_change.connected_subchannel));
|
1084
|
+
watcher_->OnConnectivityStateChange(state_change.state);
|
1081
1085
|
}
|
1082
|
-
|
1083
|
-
RefCountedPtr<WatcherWrapper> parent_;
|
1084
|
-
grpc_connectivity_state state_;
|
1085
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
1086
|
-
grpc_closure closure_;
|
1087
|
-
};
|
1086
|
+
}
|
1088
1087
|
|
1089
1088
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
1090
1089
|
watcher_;
|
@@ -1123,7 +1122,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
|
|
1123
1122
|
// CancelConnectivityStateWatch() with its watcher, we know the
|
1124
1123
|
// corresponding WrapperWatcher to cancel on the underlying subchannel.
|
1125
1124
|
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_;
|
1126
|
-
// To be accessed only in the control plane
|
1125
|
+
// To be accessed only in the control plane work_serializer.
|
1127
1126
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
1128
1127
|
// To be accessed only in the data plane mutex.
|
1129
1128
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel_in_data_plane_;
|
@@ -1146,9 +1145,6 @@ ChannelData::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
1146
1145
|
grpc_polling_entity_add_to_pollset_set(&pollent_,
|
1147
1146
|
chand_->interested_parties_);
|
1148
1147
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ExternalConnectivityWatcher");
|
1149
|
-
chand_->combiner_->Run(
|
1150
|
-
GRPC_CLOSURE_INIT(&add_closure_, AddWatcherLocked, this, nullptr),
|
1151
|
-
GRPC_ERROR_NONE);
|
1152
1148
|
}
|
1153
1149
|
|
1154
1150
|
ChannelData::ExternalConnectivityWatcher::~ExternalConnectivityWatcher() {
|
@@ -1158,6 +1154,11 @@ ChannelData::ExternalConnectivityWatcher::~ExternalConnectivityWatcher() {
|
|
1158
1154
|
"ExternalConnectivityWatcher");
|
1159
1155
|
}
|
1160
1156
|
|
1157
|
+
void ChannelData::ExternalConnectivityWatcher::Start() {
|
1158
|
+
chand_->work_serializer_->Run([this]() { AddWatcherLocked(); },
|
1159
|
+
DEBUG_LOCATION);
|
1160
|
+
}
|
1161
|
+
|
1161
1162
|
void ChannelData::ExternalConnectivityWatcher::Notify(
|
1162
1163
|
grpc_connectivity_state state) {
|
1163
1164
|
bool done = false;
|
@@ -1170,13 +1171,12 @@ void ChannelData::ExternalConnectivityWatcher::Notify(
|
|
1170
1171
|
// Report new state to the user.
|
1171
1172
|
*state_ = state;
|
1172
1173
|
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_NONE);
|
1173
|
-
// Hop back into the
|
1174
|
+
// Hop back into the work_serializer to clean up.
|
1174
1175
|
// Not needed in state SHUTDOWN, because the tracker will
|
1175
1176
|
// automatically remove all watchers in that case.
|
1176
1177
|
if (state != GRPC_CHANNEL_SHUTDOWN) {
|
1177
|
-
chand_->
|
1178
|
-
|
1179
|
-
GRPC_ERROR_NONE);
|
1178
|
+
chand_->work_serializer_->Run([this]() { RemoveWatcherLocked(); },
|
1179
|
+
DEBUG_LOCATION);
|
1180
1180
|
}
|
1181
1181
|
}
|
1182
1182
|
|
@@ -1187,28 +1187,20 @@ void ChannelData::ExternalConnectivityWatcher::Cancel() {
|
|
1187
1187
|
return; // Already done.
|
1188
1188
|
}
|
1189
1189
|
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
|
1190
|
-
// Hop back into the
|
1191
|
-
chand_->
|
1192
|
-
|
1193
|
-
GRPC_ERROR_NONE);
|
1190
|
+
// Hop back into the work_serializer to clean up.
|
1191
|
+
chand_->work_serializer_->Run([this]() { RemoveWatcherLocked(); },
|
1192
|
+
DEBUG_LOCATION);
|
1194
1193
|
}
|
1195
1194
|
|
1196
|
-
void ChannelData::ExternalConnectivityWatcher::AddWatcherLocked(
|
1197
|
-
|
1198
|
-
ExternalConnectivityWatcher* self =
|
1199
|
-
static_cast<ExternalConnectivityWatcher*>(arg);
|
1200
|
-
Closure::Run(DEBUG_LOCATION, self->watcher_timer_init_, GRPC_ERROR_NONE);
|
1195
|
+
void ChannelData::ExternalConnectivityWatcher::AddWatcherLocked() {
|
1196
|
+
Closure::Run(DEBUG_LOCATION, watcher_timer_init_, GRPC_ERROR_NONE);
|
1201
1197
|
// Add new watcher.
|
1202
|
-
|
1203
|
-
|
1204
|
-
OrphanablePtr<ConnectivityStateWatcherInterface>(self));
|
1198
|
+
chand_->state_tracker_.AddWatcher(
|
1199
|
+
initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
|
1205
1200
|
}
|
1206
1201
|
|
1207
|
-
void ChannelData::ExternalConnectivityWatcher::RemoveWatcherLocked(
|
1208
|
-
|
1209
|
-
ExternalConnectivityWatcher* self =
|
1210
|
-
static_cast<ExternalConnectivityWatcher*>(arg);
|
1211
|
-
self->chand_->state_tracker_.RemoveWatcher(self);
|
1202
|
+
void ChannelData::ExternalConnectivityWatcher::RemoveWatcherLocked() {
|
1203
|
+
chand_->state_tracker_.RemoveWatcher(this);
|
1212
1204
|
}
|
1213
1205
|
|
1214
1206
|
//
|
@@ -1224,28 +1216,20 @@ class ChannelData::ConnectivityWatcherAdder {
|
|
1224
1216
|
initial_state_(initial_state),
|
1225
1217
|
watcher_(std::move(watcher)) {
|
1226
1218
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
1227
|
-
chand_->
|
1228
|
-
|
1229
|
-
&ConnectivityWatcherAdder::AddWatcherLocked, this,
|
1230
|
-
nullptr),
|
1231
|
-
GRPC_ERROR_NONE);
|
1219
|
+
chand_->work_serializer_->Run([this]() { AddWatcherLocked(); },
|
1220
|
+
DEBUG_LOCATION);
|
1232
1221
|
}
|
1233
1222
|
|
1234
1223
|
private:
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
std::move(self->watcher_));
|
1240
|
-
GRPC_CHANNEL_STACK_UNREF(self->chand_->owning_stack_,
|
1241
|
-
"ConnectivityWatcherAdder");
|
1242
|
-
delete self;
|
1224
|
+
void AddWatcherLocked() {
|
1225
|
+
chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
|
1226
|
+
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
|
1227
|
+
delete this;
|
1243
1228
|
}
|
1244
1229
|
|
1245
1230
|
ChannelData* chand_;
|
1246
1231
|
grpc_connectivity_state initial_state_;
|
1247
1232
|
OrphanablePtr<AsyncConnectivityStateWatcherInterface> watcher_;
|
1248
|
-
grpc_closure closure_;
|
1249
1233
|
};
|
1250
1234
|
|
1251
1235
|
//
|
@@ -1258,26 +1242,20 @@ class ChannelData::ConnectivityWatcherRemover {
|
|
1258
1242
|
AsyncConnectivityStateWatcherInterface* watcher)
|
1259
1243
|
: chand_(chand), watcher_(watcher) {
|
1260
1244
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
|
1261
|
-
chand_->
|
1262
|
-
|
1263
|
-
&ConnectivityWatcherRemover::RemoveWatcherLocked,
|
1264
|
-
this, nullptr),
|
1265
|
-
GRPC_ERROR_NONE);
|
1245
|
+
chand_->work_serializer_->Run([this]() { RemoveWatcherLocked(); },
|
1246
|
+
DEBUG_LOCATION);
|
1266
1247
|
}
|
1267
1248
|
|
1268
1249
|
private:
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
self->chand_->state_tracker_.RemoveWatcher(self->watcher_);
|
1273
|
-
GRPC_CHANNEL_STACK_UNREF(self->chand_->owning_stack_,
|
1250
|
+
void RemoveWatcherLocked() {
|
1251
|
+
chand_->state_tracker_.RemoveWatcher(watcher_);
|
1252
|
+
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
|
1274
1253
|
"ConnectivityWatcherRemover");
|
1275
|
-
delete
|
1254
|
+
delete this;
|
1276
1255
|
}
|
1277
1256
|
|
1278
1257
|
ChannelData* chand_;
|
1279
1258
|
AsyncConnectivityStateWatcherInterface* watcher_;
|
1280
|
-
grpc_closure closure_;
|
1281
1259
|
};
|
1282
1260
|
|
1283
1261
|
//
|
@@ -1341,7 +1319,8 @@ class ChannelData::ClientChannelControlHelper
|
|
1341
1319
|
// No-op -- we should never get this from ResolvingLoadBalancingPolicy.
|
1342
1320
|
void RequestReresolution() override {}
|
1343
1321
|
|
1344
|
-
void AddTraceEvent(TraceSeverity severity,
|
1322
|
+
void AddTraceEvent(TraceSeverity severity,
|
1323
|
+
absl::string_view message) override {
|
1345
1324
|
if (chand_->channelz_node_ != nullptr) {
|
1346
1325
|
chand_->channelz_node_->AddTraceEvent(
|
1347
1326
|
ConvertSeverityEnum(severity),
|
@@ -1418,7 +1397,7 @@ ChannelData::ChannelData(grpc_channel_element_args* args, grpc_error** error)
|
|
1418
1397
|
client_channel_factory_(
|
1419
1398
|
ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
|
1420
1399
|
channelz_node_(GetChannelzNode(args->channel_args)),
|
1421
|
-
|
1400
|
+
work_serializer_(std::make_shared<WorkSerializer>()),
|
1422
1401
|
interested_parties_(grpc_pollset_set_create()),
|
1423
1402
|
subchannel_pool_(GetSubchannelPool(args->channel_args)),
|
1424
1403
|
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
|
@@ -1489,7 +1468,6 @@ ChannelData::~ChannelData() {
|
|
1489
1468
|
// Stop backup polling.
|
1490
1469
|
grpc_client_channel_stop_backup_polling(interested_parties_);
|
1491
1470
|
grpc_pollset_set_destroy(interested_parties_);
|
1492
|
-
GRPC_COMBINER_UNREF(combiner_, "client_channel");
|
1493
1471
|
GRPC_ERROR_UNREF(disconnect_error_.Load(MemoryOrder::RELAXED));
|
1494
1472
|
gpr_mu_destroy(&info_mu_);
|
1495
1473
|
}
|
@@ -1593,8 +1571,9 @@ void ChannelData::UpdateServiceConfigLocked(
|
|
1593
1571
|
void ChannelData::CreateResolvingLoadBalancingPolicyLocked() {
|
1594
1572
|
// Instantiate resolving LB policy.
|
1595
1573
|
LoadBalancingPolicy::Args lb_args;
|
1596
|
-
lb_args.
|
1597
|
-
lb_args.channel_control_helper =
|
1574
|
+
lb_args.work_serializer = work_serializer_;
|
1575
|
+
lb_args.channel_control_helper =
|
1576
|
+
absl::make_unique<ClientChannelControlHelper>(this);
|
1598
1577
|
lb_args.args = channel_args_;
|
1599
1578
|
grpc_core::UniquePtr<char> target_uri(gpr_strdup(target_uri_.get()));
|
1600
1579
|
resolving_lb_policy_.reset(new ResolvingLoadBalancingPolicy(
|
@@ -1619,37 +1598,56 @@ void ChannelData::DestroyResolvingLoadBalancingPolicyLocked() {
|
|
1619
1598
|
void ChannelData::ProcessLbPolicy(
|
1620
1599
|
const Resolver::Result& resolver_result,
|
1621
1600
|
const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
|
1622
|
-
grpc_core::UniquePtr<char>* lb_policy_name,
|
1623
1601
|
RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config) {
|
1624
|
-
// Prefer the LB policy
|
1602
|
+
// Prefer the LB policy config found in the service config.
|
1625
1603
|
if (parsed_service_config != nullptr &&
|
1626
1604
|
parsed_service_config->parsed_lb_config() != nullptr) {
|
1627
|
-
lb_policy_name->reset(
|
1628
|
-
gpr_strdup(parsed_service_config->parsed_lb_config()->name()));
|
1629
1605
|
*lb_policy_config = parsed_service_config->parsed_lb_config();
|
1630
1606
|
return;
|
1631
1607
|
}
|
1632
|
-
|
1608
|
+
// Try the deprecated LB policy name from the service config.
|
1609
|
+
// If not, try the setting from channel args.
|
1610
|
+
const char* policy_name = nullptr;
|
1633
1611
|
if (parsed_service_config != nullptr &&
|
1634
|
-
parsed_service_config->parsed_deprecated_lb_policy()
|
1635
|
-
|
1612
|
+
!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
|
1613
|
+
policy_name = parsed_service_config->parsed_deprecated_lb_policy().c_str();
|
1636
1614
|
} else {
|
1637
1615
|
const grpc_arg* channel_arg =
|
1638
1616
|
grpc_channel_args_find(resolver_result.args, GRPC_ARG_LB_POLICY_NAME);
|
1639
|
-
|
1617
|
+
policy_name = grpc_channel_arg_get_string(channel_arg);
|
1640
1618
|
}
|
1641
1619
|
// Use pick_first if nothing was specified and we didn't select grpclb
|
1642
1620
|
// above.
|
1643
|
-
|
1644
|
-
|
1621
|
+
if (policy_name == nullptr) policy_name = "pick_first";
|
1622
|
+
// Now that we have the policy name, construct an empty config for it.
|
1623
|
+
Json config_json = Json::Array{Json::Object{
|
1624
|
+
{policy_name, Json::Object{}},
|
1625
|
+
}};
|
1626
|
+
grpc_error* parse_error = GRPC_ERROR_NONE;
|
1627
|
+
*lb_policy_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1628
|
+
config_json, &parse_error);
|
1629
|
+
// The policy name came from one of three places:
|
1630
|
+
// - The deprecated loadBalancingPolicy field in the service config,
|
1631
|
+
// in which case the code in ClientChannelServiceConfigParser
|
1632
|
+
// already verified that the policy does not require a config.
|
1633
|
+
// - One of the hard-coded values here, all of which are known to not
|
1634
|
+
// require a config.
|
1635
|
+
// - A channel arg, in which case the application did something that
|
1636
|
+
// is a misuse of our API.
|
1637
|
+
// In the first two cases, these assertions will always be true. In
|
1638
|
+
// the last case, this is probably fine for now.
|
1639
|
+
// TODO(roth): If the last case becomes a problem, add better error
|
1640
|
+
// handling here.
|
1641
|
+
GPR_ASSERT(*lb_policy_config != nullptr);
|
1642
|
+
GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
|
1645
1643
|
}
|
1646
1644
|
|
1647
1645
|
// Synchronous callback from ResolvingLoadBalancingPolicy to process a
|
1648
1646
|
// resolver result update.
|
1649
1647
|
bool ChannelData::ProcessResolverResultLocked(
|
1650
|
-
void* arg, const Resolver::Result& result,
|
1648
|
+
void* arg, const Resolver::Result& result,
|
1651
1649
|
RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config,
|
1652
|
-
grpc_error** service_config_error) {
|
1650
|
+
grpc_error** service_config_error, bool* no_valid_service_config) {
|
1653
1651
|
ChannelData* chand = static_cast<ChannelData*>(arg);
|
1654
1652
|
RefCountedPtr<ServiceConfig> service_config;
|
1655
1653
|
// If resolver did not return a service config or returned an invalid service
|
@@ -1659,13 +1657,13 @@ bool ChannelData::ProcessResolverResultLocked(
|
|
1659
1657
|
// config. If there is no saved config either, use the default service
|
1660
1658
|
// config.
|
1661
1659
|
if (chand->saved_service_config_ != nullptr) {
|
1662
|
-
service_config = chand->saved_service_config_;
|
1663
1660
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1664
1661
|
gpr_log(GPR_INFO,
|
1665
1662
|
"chand=%p: resolver returned invalid service config. "
|
1666
1663
|
"Continuing to use previous service config.",
|
1667
1664
|
chand);
|
1668
1665
|
}
|
1666
|
+
service_config = chand->saved_service_config_;
|
1669
1667
|
} else if (chand->default_service_config_ != nullptr) {
|
1670
1668
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1671
1669
|
gpr_log(GPR_INFO,
|
@@ -1691,6 +1689,7 @@ bool ChannelData::ProcessResolverResultLocked(
|
|
1691
1689
|
*service_config_error = GRPC_ERROR_REF(result.service_config_error);
|
1692
1690
|
if (service_config == nullptr &&
|
1693
1691
|
result.service_config_error != GRPC_ERROR_NONE) {
|
1692
|
+
*no_valid_service_config = true;
|
1694
1693
|
return false;
|
1695
1694
|
}
|
1696
1695
|
// Process service config.
|
@@ -1708,11 +1707,11 @@ bool ChannelData::ProcessResolverResultLocked(
|
|
1708
1707
|
((service_config == nullptr) !=
|
1709
1708
|
(chand->saved_service_config_ == nullptr)) ||
|
1710
1709
|
(service_config != nullptr &&
|
1711
|
-
|
1712
|
-
|
1710
|
+
service_config->json_string() !=
|
1711
|
+
chand->saved_service_config_->json_string());
|
1713
1712
|
if (service_config_changed) {
|
1714
1713
|
service_config_json.reset(gpr_strdup(
|
1715
|
-
service_config != nullptr ? service_config->
|
1714
|
+
service_config != nullptr ? service_config->json_string().c_str()
|
1716
1715
|
: ""));
|
1717
1716
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
|
1718
1717
|
gpr_log(GPR_INFO,
|
@@ -1742,7 +1741,7 @@ bool ChannelData::ProcessResolverResultLocked(
|
|
1742
1741
|
chand->received_first_resolver_result_ = true;
|
1743
1742
|
RefCountedPtr<ServerRetryThrottleData> retry_throttle_data;
|
1744
1743
|
if (parsed_service_config != nullptr) {
|
1745
|
-
|
1744
|
+
absl::optional<internal::ClientChannelGlobalParsedConfig::RetryThrottling>
|
1746
1745
|
retry_throttle_config = parsed_service_config->retry_throttling();
|
1747
1746
|
if (retry_throttle_config.has_value()) {
|
1748
1747
|
retry_throttle_data =
|
@@ -1755,19 +1754,18 @@ bool ChannelData::ProcessResolverResultLocked(
|
|
1755
1754
|
chand->UpdateServiceConfigLocked(std::move(retry_throttle_data),
|
1756
1755
|
chand->saved_service_config_);
|
1757
1756
|
}
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1757
|
+
chand->ProcessLbPolicy(result, parsed_service_config, lb_policy_config);
|
1758
|
+
grpc_core::UniquePtr<char> lb_policy_name(
|
1759
|
+
gpr_strdup((*lb_policy_config)->name()));
|
1761
1760
|
// Swap out the data used by GetChannelInfo().
|
1762
1761
|
{
|
1763
1762
|
MutexLock lock(&chand->info_mu_);
|
1764
|
-
chand->info_lb_policy_name_ = std::move(
|
1763
|
+
chand->info_lb_policy_name_ = std::move(lb_policy_name);
|
1765
1764
|
if (service_config_json != nullptr) {
|
1766
1765
|
chand->info_service_config_json_ = std::move(service_config_json);
|
1767
1766
|
}
|
1768
1767
|
}
|
1769
1768
|
// Return results.
|
1770
|
-
*lb_policy_name = chand->info_lb_policy_name_.get();
|
1771
1769
|
return service_config_changed;
|
1772
1770
|
}
|
1773
1771
|
|
@@ -1794,22 +1792,18 @@ grpc_error* ChannelData::DoPingLocked(grpc_transport_op* op) {
|
|
1794
1792
|
return result.error;
|
1795
1793
|
}
|
1796
1794
|
|
1797
|
-
void ChannelData::StartTransportOpLocked(
|
1798
|
-
grpc_transport_op* op = static_cast<grpc_transport_op*>(arg);
|
1799
|
-
grpc_channel_element* elem =
|
1800
|
-
static_cast<grpc_channel_element*>(op->handler_private.extra_arg);
|
1801
|
-
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
1795
|
+
void ChannelData::StartTransportOpLocked(grpc_transport_op* op) {
|
1802
1796
|
// Connectivity watch.
|
1803
1797
|
if (op->start_connectivity_watch != nullptr) {
|
1804
|
-
|
1805
|
-
|
1798
|
+
state_tracker_.AddWatcher(op->start_connectivity_watch_state,
|
1799
|
+
std::move(op->start_connectivity_watch));
|
1806
1800
|
}
|
1807
1801
|
if (op->stop_connectivity_watch != nullptr) {
|
1808
|
-
|
1802
|
+
state_tracker_.RemoveWatcher(op->stop_connectivity_watch);
|
1809
1803
|
}
|
1810
1804
|
// Ping.
|
1811
1805
|
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
|
1812
|
-
grpc_error* error =
|
1806
|
+
grpc_error* error = DoPingLocked(op);
|
1813
1807
|
if (error != GRPC_ERROR_NONE) {
|
1814
1808
|
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
|
1815
1809
|
GRPC_ERROR_REF(error));
|
@@ -1821,40 +1815,39 @@ void ChannelData::StartTransportOpLocked(void* arg, grpc_error* /*ignored*/) {
|
|
1821
1815
|
}
|
1822
1816
|
// Reset backoff.
|
1823
1817
|
if (op->reset_connect_backoff) {
|
1824
|
-
if (
|
1825
|
-
|
1818
|
+
if (resolving_lb_policy_ != nullptr) {
|
1819
|
+
resolving_lb_policy_->ResetBackoffLocked();
|
1826
1820
|
}
|
1827
1821
|
}
|
1828
1822
|
// Disconnect or enter IDLE.
|
1829
1823
|
if (op->disconnect_with_error != GRPC_ERROR_NONE) {
|
1830
1824
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
1831
|
-
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s",
|
1825
|
+
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
|
1832
1826
|
grpc_error_string(op->disconnect_with_error));
|
1833
1827
|
}
|
1834
|
-
|
1828
|
+
DestroyResolvingLoadBalancingPolicyLocked();
|
1835
1829
|
intptr_t value;
|
1836
1830
|
if (grpc_error_get_int(op->disconnect_with_error,
|
1837
1831
|
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
|
1838
1832
|
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
1839
|
-
if (
|
1833
|
+
if (disconnect_error() == GRPC_ERROR_NONE) {
|
1840
1834
|
// Enter IDLE state.
|
1841
|
-
|
1842
|
-
|
1835
|
+
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, "channel entering IDLE",
|
1836
|
+
nullptr);
|
1843
1837
|
}
|
1844
1838
|
GRPC_ERROR_UNREF(op->disconnect_with_error);
|
1845
1839
|
} else {
|
1846
1840
|
// Disconnect.
|
1847
|
-
GPR_ASSERT(
|
1841
|
+
GPR_ASSERT(disconnect_error_.Load(MemoryOrder::RELAXED) ==
|
1848
1842
|
GRPC_ERROR_NONE);
|
1849
|
-
|
1850
|
-
|
1851
|
-
chand->UpdateStateAndPickerLocked(
|
1843
|
+
disconnect_error_.Store(op->disconnect_with_error, MemoryOrder::RELEASE);
|
1844
|
+
UpdateStateAndPickerLocked(
|
1852
1845
|
GRPC_CHANNEL_SHUTDOWN, "shutdown from API",
|
1853
|
-
|
1846
|
+
absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(
|
1854
1847
|
GRPC_ERROR_REF(op->disconnect_with_error)));
|
1855
1848
|
}
|
1856
1849
|
}
|
1857
|
-
GRPC_CHANNEL_STACK_UNREF(
|
1850
|
+
GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
|
1858
1851
|
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
|
1859
1852
|
}
|
1860
1853
|
|
@@ -1866,13 +1859,10 @@ void ChannelData::StartTransportOp(grpc_channel_element* elem,
|
|
1866
1859
|
if (op->bind_pollset != nullptr) {
|
1867
1860
|
grpc_pollset_set_add_pollset(chand->interested_parties_, op->bind_pollset);
|
1868
1861
|
}
|
1869
|
-
// Pop into control plane
|
1870
|
-
op->handler_private.extra_arg = elem;
|
1862
|
+
// Pop into control plane work_serializer for remaining ops.
|
1871
1863
|
GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
|
1872
|
-
chand->
|
1873
|
-
|
1874
|
-
ChannelData::StartTransportOpLocked, op, nullptr),
|
1875
|
-
GRPC_ERROR_NONE);
|
1864
|
+
chand->work_serializer_->Run(
|
1865
|
+
[chand, op]() { chand->StartTransportOpLocked(op); }, DEBUG_LOCATION);
|
1876
1866
|
}
|
1877
1867
|
|
1878
1868
|
void ChannelData::GetChannelInfo(grpc_channel_element* elem,
|
@@ -1923,14 +1913,13 @@ ChannelData::GetConnectedSubchannelInDataPlane(
|
|
1923
1913
|
return connected_subchannel->Ref();
|
1924
1914
|
}
|
1925
1915
|
|
1926
|
-
void ChannelData::TryToConnectLocked(
|
1927
|
-
|
1928
|
-
|
1929
|
-
chand->resolving_lb_policy_->ExitIdleLocked();
|
1916
|
+
void ChannelData::TryToConnectLocked() {
|
1917
|
+
if (resolving_lb_policy_ != nullptr) {
|
1918
|
+
resolving_lb_policy_->ExitIdleLocked();
|
1930
1919
|
} else {
|
1931
|
-
|
1920
|
+
CreateResolvingLoadBalancingPolicyLocked();
|
1932
1921
|
}
|
1933
|
-
GRPC_CHANNEL_STACK_UNREF(
|
1922
|
+
GRPC_CHANNEL_STACK_UNREF(owning_stack_, "TryToConnect");
|
1934
1923
|
}
|
1935
1924
|
|
1936
1925
|
grpc_connectivity_state ChannelData::CheckConnectivityState(
|
@@ -1938,8 +1927,7 @@ grpc_connectivity_state ChannelData::CheckConnectivityState(
|
|
1938
1927
|
grpc_connectivity_state out = state_tracker_.state();
|
1939
1928
|
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
|
1940
1929
|
GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
|
1941
|
-
|
1942
|
-
GRPC_ERROR_NONE);
|
1930
|
+
work_serializer_->Run([this]() { TryToConnectLocked(); }, DEBUG_LOCATION);
|
1943
1931
|
}
|
1944
1932
|
return out;
|
1945
1933
|
}
|
@@ -2245,10 +2233,32 @@ void CallData::FreeCachedSendOpDataForCompletedBatch(
|
|
2245
2233
|
void CallData::RecvTrailingMetadataReadyForLoadBalancingPolicy(
|
2246
2234
|
void* arg, grpc_error* error) {
|
2247
2235
|
CallData* calld = static_cast<CallData*>(arg);
|
2236
|
+
// Set error if call did not succeed.
|
2237
|
+
grpc_error* error_for_lb = GRPC_ERROR_NONE;
|
2238
|
+
if (error != GRPC_ERROR_NONE) {
|
2239
|
+
error_for_lb = error;
|
2240
|
+
} else {
|
2241
|
+
const auto& fields = calld->recv_trailing_metadata_->idx.named;
|
2242
|
+
GPR_ASSERT(fields.grpc_status != nullptr);
|
2243
|
+
grpc_status_code status =
|
2244
|
+
grpc_get_status_code_from_metadata(fields.grpc_status->md);
|
2245
|
+
std::string msg;
|
2246
|
+
if (status != GRPC_STATUS_OK) {
|
2247
|
+
error_for_lb = grpc_error_set_int(
|
2248
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("call failed"),
|
2249
|
+
GRPC_ERROR_INT_GRPC_STATUS, status);
|
2250
|
+
if (fields.grpc_message != nullptr) {
|
2251
|
+
error_for_lb = grpc_error_set_str(
|
2252
|
+
error_for_lb, GRPC_ERROR_STR_GRPC_MESSAGE,
|
2253
|
+
grpc_slice_ref_internal(GRPC_MDVALUE(fields.grpc_message->md)));
|
2254
|
+
}
|
2255
|
+
}
|
2256
|
+
}
|
2248
2257
|
// Invoke callback to LB policy.
|
2249
2258
|
Metadata trailing_metadata(calld, calld->recv_trailing_metadata_);
|
2250
|
-
calld->lb_recv_trailing_metadata_ready_(
|
2259
|
+
calld->lb_recv_trailing_metadata_ready_(error_for_lb, &trailing_metadata,
|
2251
2260
|
&calld->lb_call_state_);
|
2261
|
+
if (error == GRPC_ERROR_NONE) GRPC_ERROR_UNREF(error_for_lb);
|
2252
2262
|
// Chain to original callback.
|
2253
2263
|
Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
|
2254
2264
|
GRPC_ERROR_REF(error));
|
@@ -3165,10 +3175,9 @@ void CallData::OnComplete(void* arg, grpc_error* error) {
|
|
3165
3175
|
ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
|
3166
3176
|
CallData* calld = static_cast<CallData*>(elem->call_data);
|
3167
3177
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
3168
|
-
char* batch_str = grpc_transport_stream_op_batch_string(&batch_data->batch);
|
3169
3178
|
gpr_log(GPR_INFO, "chand=%p calld=%p: got on_complete, error=%s, batch=%s",
|
3170
|
-
chand, calld, grpc_error_string(error),
|
3171
|
-
|
3179
|
+
chand, calld, grpc_error_string(error),
|
3180
|
+
grpc_transport_stream_op_batch_string(&batch_data->batch).c_str());
|
3172
3181
|
}
|
3173
3182
|
SubchannelCallRetryState* retry_state =
|
3174
3183
|
static_cast<SubchannelCallRetryState*>(
|
@@ -3241,10 +3250,8 @@ void CallData::AddClosureForSubchannelBatch(
|
|
3241
3250
|
GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
|
3242
3251
|
batch, grpc_schedule_on_exec_ctx);
|
3243
3252
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
|
3244
|
-
char* batch_str = grpc_transport_stream_op_batch_string(batch);
|
3245
3253
|
gpr_log(GPR_INFO, "chand=%p calld=%p: starting subchannel batch: %s", chand,
|
3246
|
-
this,
|
3247
|
-
gpr_free(batch_str);
|
3254
|
+
this, grpc_transport_stream_op_batch_string(batch).c_str());
|
3248
3255
|
}
|
3249
3256
|
closures->Add(&batch->handler_private.closure, GRPC_ERROR_NONE,
|
3250
3257
|
"start_subchannel_batch");
|
@@ -3757,45 +3764,52 @@ void CallData::ApplyServiceConfigToCallLocked(grpc_call_element* elem) {
|
|
3757
3764
|
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
|
3758
3765
|
chand, this);
|
3759
3766
|
}
|
3760
|
-
|
3761
|
-
|
3762
|
-
|
3763
|
-
|
3764
|
-
|
3765
|
-
|
3766
|
-
|
3767
|
-
|
3767
|
+
auto service_config = chand->service_config();
|
3768
|
+
if (service_config != nullptr) {
|
3769
|
+
// Create a ServiceConfigCallData for the call. This stores a ref to the
|
3770
|
+
// ServiceConfig and caches the right set of parsed configs to use for
|
3771
|
+
// the call. The MethodConfig will store itself in the call context,
|
3772
|
+
// so that it can be accessed by filters in the subchannel, and it
|
3773
|
+
// will be cleaned up when the call ends.
|
3774
|
+
const auto* method_params_vector =
|
3775
|
+
service_config->GetMethodParsedConfigVector(path_);
|
3776
|
+
auto* service_config_call_data = arena_->New<ServiceConfigCallData>(
|
3777
|
+
std::move(service_config), method_params_vector, call_context_);
|
3778
|
+
// Apply our own method params to the call.
|
3768
3779
|
method_params_ = static_cast<ClientChannelMethodParsedConfig*>(
|
3769
|
-
|
3780
|
+
service_config_call_data->GetMethodParsedConfig(
|
3770
3781
|
internal::ClientChannelServiceConfigParser::ParserIndex()));
|
3771
|
-
|
3772
|
-
|
3773
|
-
|
3774
|
-
|
3775
|
-
|
3776
|
-
|
3777
|
-
|
3778
|
-
|
3779
|
-
|
3780
|
-
|
3781
|
-
|
3782
|
-
|
3782
|
+
if (method_params_ != nullptr) {
|
3783
|
+
// If the deadline from the service config is shorter than the one
|
3784
|
+
// from the client API, reset the deadline timer.
|
3785
|
+
if (chand->deadline_checking_enabled() &&
|
3786
|
+
method_params_->timeout() != 0) {
|
3787
|
+
const grpc_millis per_method_deadline =
|
3788
|
+
grpc_cycle_counter_to_millis_round_up(call_start_time_) +
|
3789
|
+
method_params_->timeout();
|
3790
|
+
if (per_method_deadline < deadline_) {
|
3791
|
+
deadline_ = per_method_deadline;
|
3792
|
+
grpc_deadline_state_reset(elem, deadline_);
|
3793
|
+
}
|
3783
3794
|
}
|
3784
|
-
|
3785
|
-
|
3786
|
-
|
3787
|
-
|
3788
|
-
|
3789
|
-
|
3790
|
-
|
3791
|
-
|
3792
|
-
|
3793
|
-
|
3794
|
-
|
3795
|
-
|
3796
|
-
|
3795
|
+
// If the service config set wait_for_ready and the application
|
3796
|
+
// did not explicitly set it, use the value from the service config.
|
3797
|
+
uint32_t* send_initial_metadata_flags =
|
3798
|
+
&pending_batches_[0]
|
3799
|
+
.batch->payload->send_initial_metadata
|
3800
|
+
.send_initial_metadata_flags;
|
3801
|
+
if (method_params_->wait_for_ready().has_value() &&
|
3802
|
+
!(*send_initial_metadata_flags &
|
3803
|
+
GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET)) {
|
3804
|
+
if (method_params_->wait_for_ready().value()) {
|
3805
|
+
*send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
3806
|
+
} else {
|
3807
|
+
*send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
|
3808
|
+
}
|
3797
3809
|
}
|
3798
3810
|
}
|
3811
|
+
// Set retry throttle data for call.
|
3812
|
+
retry_throttle_data_ = chand->retry_throttle_data();
|
3799
3813
|
}
|
3800
3814
|
// If no retry policy, disable retries.
|
3801
3815
|
// TODO(roth): Remove this when adding support for transparent retries.
|
@@ -3851,8 +3865,25 @@ bool CallData::PickSubchannelLocked(grpc_call_element* elem,
|
|
3851
3865
|
// The picker being null means that the channel is currently in IDLE state.
|
3852
3866
|
// The incoming call will make the channel exit IDLE.
|
3853
3867
|
if (chand->picker() == nullptr) {
|
3854
|
-
|
3855
|
-
|
3868
|
+
GRPC_CHANNEL_STACK_REF(chand->owning_stack(), "PickSubchannelLocked");
|
3869
|
+
// Bounce into the control plane work serializer to exit IDLE. Since we are
|
3870
|
+
// holding on to the data plane mutex here, we offload it on the ExecCtx so
|
3871
|
+
// that we don't deadlock with ourselves.
|
3872
|
+
ExecCtx::Run(
|
3873
|
+
DEBUG_LOCATION,
|
3874
|
+
GRPC_CLOSURE_CREATE(
|
3875
|
+
[](void* arg, grpc_error* /*error*/) {
|
3876
|
+
auto* chand = static_cast<ChannelData*>(arg);
|
3877
|
+
chand->work_serializer()->Run(
|
3878
|
+
[chand]() {
|
3879
|
+
chand->CheckConnectivityState(/*try_to_connect=*/true);
|
3880
|
+
GRPC_CHANNEL_STACK_UNREF(chand->owning_stack(),
|
3881
|
+
"PickSubchannelLocked");
|
3882
|
+
},
|
3883
|
+
DEBUG_LOCATION);
|
3884
|
+
},
|
3885
|
+
chand, nullptr),
|
3886
|
+
GRPC_ERROR_NONE);
|
3856
3887
|
// Queue the pick, so that it will be attempted once the channel
|
3857
3888
|
// becomes connected.
|
3858
3889
|
AddCallToQueuedPicksLocked(elem);
|
@@ -3937,8 +3968,10 @@ bool CallData::PickSubchannelLocked(grpc_call_element* elem,
|
|
3937
3968
|
if (pick_queued_) RemoveCallFromQueuedPicksLocked(elem);
|
3938
3969
|
// Handle drops.
|
3939
3970
|
if (GPR_UNLIKELY(result.subchannel == nullptr)) {
|
3940
|
-
result.error =
|
3941
|
-
|
3971
|
+
result.error = grpc_error_set_int(
|
3972
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
3973
|
+
"Call dropped by load balancing policy"),
|
3974
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
3942
3975
|
} else {
|
3943
3976
|
// Grab a ref to the connected subchannel while we're still
|
3944
3977
|
// holding the data plane mutex.
|