grpc 1.30.2 → 1.31.0.pre1
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 +560 -619
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -265
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +376 -68
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json_reader.cc +20 -21
- data/src/core/lib/security/credentials/credentials.h +5 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +102 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +40 -37
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
25
|
#include "absl/container/inlined_vector.h"
|
26
|
+
#include "absl/strings/str_cat.h"
|
26
27
|
|
27
28
|
#include <grpc/support/alloc.h>
|
28
29
|
#include <grpc/support/log.h>
|
@@ -65,22 +66,22 @@ class RegistryState {
|
|
65
66
|
// If \a default_prefix_ needs to be prepended, sets \a canonical_target
|
66
67
|
// to the canonical target string.
|
67
68
|
ResolverFactory* FindResolverFactory(const char* target, grpc_uri** uri,
|
68
|
-
|
69
|
+
std::string* canonical_target) const {
|
69
70
|
GPR_ASSERT(uri != nullptr);
|
70
71
|
*uri = grpc_uri_parse(target, 1);
|
71
72
|
ResolverFactory* factory =
|
72
73
|
*uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
|
73
74
|
if (factory == nullptr) {
|
74
75
|
grpc_uri_destroy(*uri);
|
75
|
-
|
76
|
-
*uri = grpc_uri_parse(
|
76
|
+
*canonical_target = absl::StrCat(default_prefix_.get(), target);
|
77
|
+
*uri = grpc_uri_parse(canonical_target->c_str(), 1);
|
77
78
|
factory =
|
78
79
|
*uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
|
79
80
|
if (factory == nullptr) {
|
80
81
|
grpc_uri_destroy(grpc_uri_parse(target, 0));
|
81
|
-
grpc_uri_destroy(grpc_uri_parse(
|
82
|
+
grpc_uri_destroy(grpc_uri_parse(canonical_target->c_str(), 0));
|
82
83
|
gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
|
83
|
-
|
84
|
+
canonical_target->c_str());
|
84
85
|
}
|
85
86
|
}
|
86
87
|
return factory;
|
@@ -136,12 +137,11 @@ ResolverFactory* ResolverRegistry::LookupResolverFactory(const char* scheme) {
|
|
136
137
|
|
137
138
|
bool ResolverRegistry::IsValidTarget(const char* target) {
|
138
139
|
grpc_uri* uri = nullptr;
|
139
|
-
|
140
|
+
std::string canonical_target;
|
140
141
|
ResolverFactory* factory =
|
141
142
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
142
143
|
bool result = factory == nullptr ? false : factory->IsValidUri(uri);
|
143
144
|
grpc_uri_destroy(uri);
|
144
|
-
gpr_free(canonical_target);
|
145
145
|
return result;
|
146
146
|
}
|
147
147
|
|
@@ -152,7 +152,7 @@ OrphanablePtr
|
|
152
152
|
std::unique_ptr<Resolver::ResultHandler> result_handler) {
|
153
153
|
GPR_ASSERT(g_state != nullptr);
|
154
154
|
grpc_uri* uri = nullptr;
|
155
|
-
|
155
|
+
std::string canonical_target;
|
156
156
|
ResolverFactory* factory =
|
157
157
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
158
158
|
ResolverArgs resolver_args;
|
@@ -165,7 +165,6 @@ OrphanablePtr
|
|
165
165
|
factory == nullptr ? nullptr
|
166
166
|
: factory->CreateResolver(std::move(resolver_args));
|
167
167
|
grpc_uri_destroy(uri);
|
168
|
-
gpr_free(canonical_target);
|
169
168
|
return resolver;
|
170
169
|
}
|
171
170
|
|
@@ -173,13 +172,12 @@ grpc_core::UniquePtr
|
|
173
172
|
const char* target) {
|
174
173
|
GPR_ASSERT(g_state != nullptr);
|
175
174
|
grpc_uri* uri = nullptr;
|
176
|
-
|
175
|
+
std::string canonical_target;
|
177
176
|
ResolverFactory* factory =
|
178
177
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
179
178
|
grpc_core::UniquePtr<char> authority =
|
180
179
|
factory == nullptr ? nullptr : factory->GetDefaultAuthority(uri);
|
181
180
|
grpc_uri_destroy(uri);
|
182
|
-
gpr_free(canonical_target);
|
183
181
|
return authority;
|
184
182
|
}
|
185
183
|
|
@@ -187,11 +185,12 @@ grpc_core::UniquePtr
|
|
187
185
|
const char* target) {
|
188
186
|
GPR_ASSERT(g_state != nullptr);
|
189
187
|
grpc_uri* uri = nullptr;
|
190
|
-
|
188
|
+
std::string canonical_target;
|
191
189
|
g_state->FindResolverFactory(target, &uri, &canonical_target);
|
192
190
|
grpc_uri_destroy(uri);
|
193
|
-
return grpc_core::UniquePtr<char>(
|
194
|
-
|
191
|
+
return grpc_core::UniquePtr<char>(canonical_target.empty()
|
192
|
+
? gpr_strdup(target)
|
193
|
+
: gpr_strdup(canonical_target.c_str()));
|
195
194
|
}
|
196
195
|
|
197
196
|
} // namespace grpc_core
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <stdio.h>
|
25
25
|
#include <string.h>
|
26
26
|
|
27
|
+
#include "absl/strings/str_cat.h"
|
27
28
|
#include "absl/types/optional.h"
|
28
29
|
|
29
30
|
#include <grpc/support/alloc.h>
|
@@ -353,13 +354,11 @@ ClientChannelServiceConfigParser::ParseGlobalParams(const Json& json,
|
|
353
354
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
354
355
|
"field:loadBalancingPolicy error:Unknown lb policy"));
|
355
356
|
} else if (requires_config) {
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg));
|
362
|
-
gpr_free(error_msg);
|
357
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
358
|
+
absl::StrCat("field:loadBalancingPolicy error:", lb_policy_name,
|
359
|
+
" requires a config. Please use loadBalancingConfig "
|
360
|
+
"instead.")
|
361
|
+
.c_str()));
|
363
362
|
}
|
364
363
|
}
|
365
364
|
}
|
@@ -145,14 +145,12 @@ class ResolvingLoadBalancingPolicy::ResolvingControlHelper
|
|
145
145
|
|
146
146
|
ResolvingLoadBalancingPolicy::ResolvingLoadBalancingPolicy(
|
147
147
|
Args args, TraceFlag* tracer, grpc_core::UniquePtr<char> target_uri,
|
148
|
-
|
149
|
-
void* process_resolver_result_user_data)
|
148
|
+
ChannelConfigHelper* helper)
|
150
149
|
: LoadBalancingPolicy(std::move(args)),
|
151
150
|
tracer_(tracer),
|
152
151
|
target_uri_(std::move(target_uri)),
|
153
|
-
|
154
|
-
|
155
|
-
GPR_ASSERT(process_resolver_result != nullptr);
|
152
|
+
helper_(helper) {
|
153
|
+
GPR_ASSERT(helper_ != nullptr);
|
156
154
|
resolver_ = ResolverRegistry::CreateResolver(
|
157
155
|
target_uri_.get(), args.args, interested_parties(), work_serializer(),
|
158
156
|
absl::make_unique<ResolverResultHandler>(Ref()));
|
@@ -214,6 +212,7 @@ void ResolvingLoadBalancingPolicy::OnResolverError(grpc_error* error) {
|
|
214
212
|
if (lb_policy_ == nullptr) {
|
215
213
|
grpc_error* state_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
216
214
|
"Resolver transient failure", &error, 1);
|
215
|
+
helper_->ResolverTransientFailure(GRPC_ERROR_REF(state_error));
|
217
216
|
channel_control_helper()->UpdateState(
|
218
217
|
GRPC_CHANNEL_TRANSIENT_FAILURE,
|
219
218
|
absl::make_unique<TransientFailurePicker>(state_error));
|
@@ -304,45 +303,51 @@ void ResolvingLoadBalancingPolicy::OnResolverResultChangedLocked(
|
|
304
303
|
TraceStringVector trace_strings;
|
305
304
|
const bool resolution_contains_addresses = result.addresses.size() > 0;
|
306
305
|
// Process the resolver result.
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
bool no_valid_service_config = false;
|
313
|
-
service_config_changed = process_resolver_result_(
|
314
|
-
process_resolver_result_user_data_, result, &lb_policy_config,
|
315
|
-
&service_config_error, &no_valid_service_config);
|
316
|
-
if (service_config_error != GRPC_ERROR_NONE) {
|
317
|
-
service_config_error_string = grpc_error_string(service_config_error);
|
318
|
-
if (no_valid_service_config) {
|
306
|
+
ChannelConfigHelper::ApplyServiceConfigResult service_config_result;
|
307
|
+
if (helper_ != nullptr) {
|
308
|
+
service_config_result = helper_->ApplyServiceConfig(result);
|
309
|
+
if (service_config_result.service_config_error != GRPC_ERROR_NONE) {
|
310
|
+
if (service_config_result.no_valid_service_config) {
|
319
311
|
// We received an invalid service config and we don't have a
|
320
312
|
// fallback service config.
|
321
|
-
OnResolverError(service_config_error);
|
322
|
-
|
323
|
-
GRPC_ERROR_UNREF(service_config_error);
|
313
|
+
OnResolverError(service_config_result.service_config_error);
|
314
|
+
service_config_result.service_config_error = GRPC_ERROR_NONE;
|
324
315
|
}
|
325
316
|
}
|
326
317
|
} else {
|
327
|
-
lb_policy_config = child_lb_config_;
|
318
|
+
service_config_result.lb_policy_config = child_lb_config_;
|
328
319
|
}
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
320
|
+
// Before we send the args to the LB policy, grab the ConfigSelector for
|
321
|
+
// later use.
|
322
|
+
RefCountedPtr<ConfigSelector> config_selector =
|
323
|
+
ConfigSelector::GetFromChannelArgs(*result.args);
|
324
|
+
// Create or update LB policy, as needed.
|
325
|
+
if (service_config_result.lb_policy_config != nullptr) {
|
326
|
+
CreateOrUpdateLbPolicyLocked(
|
327
|
+
std::move(service_config_result.lb_policy_config), std::move(result));
|
328
|
+
}
|
329
|
+
// Apply ConfigSelector to channel.
|
330
|
+
// This needs to happen after the LB policy has been updated, since
|
331
|
+
// the ConfigSelector may need the LB policy to know about new
|
332
|
+
// destinations before it can send RPCs to those destinations.
|
333
|
+
if (helper_ != nullptr) {
|
334
|
+
helper_->ApplyConfigSelector(service_config_result.service_config_changed,
|
335
|
+
std::move(config_selector));
|
333
336
|
}
|
334
337
|
// Add channel trace event.
|
335
|
-
if (service_config_changed) {
|
338
|
+
if (service_config_result.service_config_changed) {
|
336
339
|
// TODO(ncteisen): might be worth somehow including a snippet of the
|
337
340
|
// config in the trace, at the risk of bloating the trace logs.
|
338
341
|
trace_strings.push_back("Service config changed");
|
339
342
|
}
|
340
|
-
if (
|
341
|
-
trace_strings.push_back(
|
343
|
+
if (service_config_result.service_config_error != GRPC_ERROR_NONE) {
|
344
|
+
trace_strings.push_back(
|
345
|
+
grpc_error_string(service_config_result.service_config_error));
|
342
346
|
}
|
343
347
|
MaybeAddTraceMessagesForAddressChangesLocked(resolution_contains_addresses,
|
344
348
|
&trace_strings);
|
345
349
|
ConcatenateAndAddChannelTraceLocked(trace_strings);
|
350
|
+
GRPC_ERROR_UNREF(service_config_result.service_config_error);
|
346
351
|
}
|
347
352
|
|
348
353
|
} // namespace grpc_core
|
@@ -23,6 +23,7 @@
|
|
23
23
|
|
24
24
|
#include "absl/container/inlined_vector.h"
|
25
25
|
|
26
|
+
#include "src/core/ext/filters/client_channel/config_selector.h"
|
26
27
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
27
28
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
28
29
|
#include "src/core/ext/filters/client_channel/resolver.h"
|
@@ -52,22 +53,39 @@ namespace grpc_core {
|
|
52
53
|
// child LB policy and config to use.
|
53
54
|
class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
54
55
|
public:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
56
|
+
class ChannelConfigHelper {
|
57
|
+
public:
|
58
|
+
struct ApplyServiceConfigResult {
|
59
|
+
// Set to true if the service config has changed since the last result.
|
60
|
+
bool service_config_changed = false;
|
61
|
+
// Set to true if we don't have a valid service config to use.
|
62
|
+
// This tells the ResolvingLoadBalancingPolicy to put the channel
|
63
|
+
// into TRANSIENT_FAILURE.
|
64
|
+
bool no_valid_service_config = false;
|
65
|
+
// A service config parsing error occurred.
|
66
|
+
grpc_error* service_config_error = GRPC_ERROR_NONE;
|
67
|
+
// The LB policy config to use.
|
68
|
+
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config;
|
69
|
+
};
|
70
|
+
|
71
|
+
virtual ~ChannelConfigHelper() = default;
|
72
|
+
|
73
|
+
// Applies the service config to the channel.
|
74
|
+
virtual ApplyServiceConfigResult ApplyServiceConfig(
|
75
|
+
const Resolver::Result& result) = 0;
|
76
|
+
|
77
|
+
// Applies the ConfigSelector to the channel.
|
78
|
+
virtual void ApplyConfigSelector(
|
79
|
+
bool service_config_changed,
|
80
|
+
RefCountedPtr<ConfigSelector> config_selector) = 0;
|
81
|
+
|
82
|
+
// Indicates a resolver transient failure.
|
83
|
+
virtual void ResolverTransientFailure(grpc_error* error) = 0;
|
84
|
+
};
|
85
|
+
|
86
|
+
ResolvingLoadBalancingPolicy(Args args, TraceFlag* tracer,
|
87
|
+
grpc_core::UniquePtr<char> target_uri,
|
88
|
+
ChannelConfigHelper* helper);
|
71
89
|
|
72
90
|
virtual const char* name() const override { return "resolving_lb"; }
|
73
91
|
|
@@ -105,15 +123,16 @@ class ResolvingLoadBalancingPolicy : public LoadBalancingPolicy {
|
|
105
123
|
// Passed in from caller at construction time.
|
106
124
|
TraceFlag* tracer_;
|
107
125
|
grpc_core::UniquePtr<char> target_uri_;
|
108
|
-
|
109
|
-
void* process_resolver_result_user_data_ = nullptr;
|
110
|
-
grpc_core::UniquePtr<char> child_policy_name_;
|
111
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_lb_config_;
|
126
|
+
ChannelConfigHelper* helper_;
|
112
127
|
|
113
128
|
// Resolver and associated state.
|
114
129
|
OrphanablePtr<Resolver> resolver_;
|
115
130
|
bool previous_resolution_contained_addresses_ = false;
|
116
131
|
|
132
|
+
// Determined by resolver results.
|
133
|
+
grpc_core::UniquePtr<char> child_policy_name_;
|
134
|
+
RefCountedPtr<LoadBalancingPolicy::Config> child_lb_config_;
|
135
|
+
|
117
136
|
// Child LB policy.
|
118
137
|
OrphanablePtr<LoadBalancingPolicy> lb_policy_;
|
119
138
|
};
|
@@ -0,0 +1,142 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
// This filter reads GRPC_ARG_SERVICE_CONFIG and populates ServiceConfigCallData
|
18
|
+
// in the call context per call for direct channels.
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include "src/core/ext/filters/client_channel/service_config_call_data.h"
|
23
|
+
#include "src/core/lib/channel/channel_args.h"
|
24
|
+
#include "src/core/lib/channel/channel_stack.h"
|
25
|
+
#include "src/core/lib/channel/channel_stack_builder.h"
|
26
|
+
#include "src/core/lib/surface/channel_init.h"
|
27
|
+
|
28
|
+
namespace grpc_core {
|
29
|
+
|
30
|
+
namespace {
|
31
|
+
|
32
|
+
class ServiceConfigChannelArgChannelData {
|
33
|
+
public:
|
34
|
+
explicit ServiceConfigChannelArgChannelData(
|
35
|
+
const grpc_channel_element_args* args) {
|
36
|
+
const char* service_config_str = grpc_channel_args_find_string(
|
37
|
+
args->channel_args, GRPC_ARG_SERVICE_CONFIG);
|
38
|
+
if (service_config_str != nullptr) {
|
39
|
+
grpc_error* service_config_error = GRPC_ERROR_NONE;
|
40
|
+
auto service_config =
|
41
|
+
ServiceConfig::Create(service_config_str, &service_config_error);
|
42
|
+
if (service_config_error == GRPC_ERROR_NONE) {
|
43
|
+
service_config_ = std::move(service_config);
|
44
|
+
} else {
|
45
|
+
gpr_log(GPR_ERROR, "%s", grpc_error_string(service_config_error));
|
46
|
+
}
|
47
|
+
GRPC_ERROR_UNREF(service_config_error);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
RefCountedPtr<ServiceConfig> service_config() const {
|
52
|
+
return service_config_;
|
53
|
+
}
|
54
|
+
|
55
|
+
private:
|
56
|
+
RefCountedPtr<ServiceConfig> service_config_;
|
57
|
+
};
|
58
|
+
|
59
|
+
class ServiceConfigChannelArgCallData {
|
60
|
+
public:
|
61
|
+
ServiceConfigChannelArgCallData(grpc_call_element* elem,
|
62
|
+
const grpc_call_element_args* args) {
|
63
|
+
ServiceConfigChannelArgChannelData* chand =
|
64
|
+
static_cast<ServiceConfigChannelArgChannelData*>(elem->channel_data);
|
65
|
+
RefCountedPtr<ServiceConfig> service_config = chand->service_config();
|
66
|
+
if (service_config != nullptr) {
|
67
|
+
GPR_DEBUG_ASSERT(args->context != nullptr);
|
68
|
+
const auto* method_params_vector =
|
69
|
+
service_config->GetMethodParsedConfigVector(args->path);
|
70
|
+
args->arena->New<ServiceConfigCallData>(
|
71
|
+
std::move(service_config), method_params_vector, args->context);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
};
|
75
|
+
|
76
|
+
grpc_error* ServiceConfigChannelArgInitCallElem(
|
77
|
+
grpc_call_element* elem, const grpc_call_element_args* args) {
|
78
|
+
ServiceConfigChannelArgCallData* calld =
|
79
|
+
static_cast<ServiceConfigChannelArgCallData*>(elem->call_data);
|
80
|
+
new (calld) ServiceConfigChannelArgCallData(elem, args);
|
81
|
+
return GRPC_ERROR_NONE;
|
82
|
+
}
|
83
|
+
|
84
|
+
void ServiceConfigChannelArgDestroyCallElem(
|
85
|
+
grpc_call_element* elem, const grpc_call_final_info* /* final_info */,
|
86
|
+
grpc_closure* /* then_schedule_closure */) {
|
87
|
+
ServiceConfigChannelArgCallData* calld =
|
88
|
+
static_cast<ServiceConfigChannelArgCallData*>(elem->call_data);
|
89
|
+
calld->~ServiceConfigChannelArgCallData();
|
90
|
+
}
|
91
|
+
|
92
|
+
grpc_error* ServiceConfigChannelArgInitChannelElem(
|
93
|
+
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
94
|
+
ServiceConfigChannelArgChannelData* chand =
|
95
|
+
static_cast<ServiceConfigChannelArgChannelData*>(elem->channel_data);
|
96
|
+
new (chand) ServiceConfigChannelArgChannelData(args);
|
97
|
+
return GRPC_ERROR_NONE;
|
98
|
+
}
|
99
|
+
|
100
|
+
void ServiceConfigChannelArgDestroyChannelElem(grpc_channel_element* elem) {
|
101
|
+
ServiceConfigChannelArgChannelData* chand =
|
102
|
+
static_cast<ServiceConfigChannelArgChannelData*>(elem->channel_data);
|
103
|
+
chand->~ServiceConfigChannelArgChannelData();
|
104
|
+
}
|
105
|
+
|
106
|
+
const grpc_channel_filter ServiceConfigChannelArgFilter = {
|
107
|
+
grpc_call_next_op,
|
108
|
+
grpc_channel_next_op,
|
109
|
+
sizeof(ServiceConfigChannelArgCallData),
|
110
|
+
ServiceConfigChannelArgInitCallElem,
|
111
|
+
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
112
|
+
ServiceConfigChannelArgDestroyCallElem,
|
113
|
+
sizeof(ServiceConfigChannelArgChannelData),
|
114
|
+
ServiceConfigChannelArgInitChannelElem,
|
115
|
+
ServiceConfigChannelArgDestroyChannelElem,
|
116
|
+
grpc_channel_next_get_info,
|
117
|
+
"service_config_channel_arg"};
|
118
|
+
|
119
|
+
bool maybe_add_service_config_channel_arg_filter(
|
120
|
+
grpc_channel_stack_builder* builder, void* /* arg */) {
|
121
|
+
const grpc_channel_args* channel_args =
|
122
|
+
grpc_channel_stack_builder_get_channel_arguments(builder);
|
123
|
+
if (grpc_channel_args_want_minimal_stack(channel_args) ||
|
124
|
+
grpc_channel_args_find_string(channel_args, GRPC_ARG_SERVICE_CONFIG) ==
|
125
|
+
nullptr) {
|
126
|
+
return true;
|
127
|
+
}
|
128
|
+
return grpc_channel_stack_builder_prepend_filter(
|
129
|
+
builder, &ServiceConfigChannelArgFilter, nullptr, nullptr);
|
130
|
+
}
|
131
|
+
|
132
|
+
} // namespace
|
133
|
+
|
134
|
+
} // namespace grpc_core
|
135
|
+
|
136
|
+
void grpc_service_config_channel_arg_filter_init(void) {
|
137
|
+
grpc_channel_init_register_stage(
|
138
|
+
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
139
|
+
grpc_core::maybe_add_service_config_channel_arg_filter, nullptr);
|
140
|
+
}
|
141
|
+
|
142
|
+
void grpc_service_config_channel_arg_filter_shutdown(void) {}
|
@@ -872,7 +872,7 @@ grpc_arg Subchannel::CreateSubchannelAddressArg(
|
|
872
872
|
const grpc_resolved_address* addr) {
|
873
873
|
return grpc_channel_arg_string_create(
|
874
874
|
(char*)GRPC_ARG_SUBCHANNEL_ADDRESS,
|
875
|
-
addr->len > 0 ? grpc_sockaddr_to_uri(addr) :
|
875
|
+
gpr_strdup(addr->len > 0 ? grpc_sockaddr_to_uri(addr).c_str() : ""));
|
876
876
|
}
|
877
877
|
|
878
878
|
const char* Subchannel::GetUriFromSubchannelAddressArg(
|