grpc 1.24.0 → 1.25.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 +306 -243
- data/etc/roots.pem +0 -100
- data/include/grpc/grpc_security.h +44 -18
- data/include/grpc/impl/codegen/grpc_types.h +15 -0
- data/include/grpc/impl/codegen/port_platform.h +27 -11
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/src/boringssl/err_data.c +695 -650
- data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
- data/src/core/ext/filters/client_channel/client_channel.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
- data/src/core/ext/filters/client_channel/resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver.h +8 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
- data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
- data/src/core/ext/filters/client_channel/service_config.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
- data/src/core/ext/filters/client_channel/subchannel.h +7 -9
- data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
- data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
- data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
- data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
- data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
- data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
- data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
- data/src/core/lib/channel/channel_args.cc +16 -0
- data/src/core/lib/channel/channel_args.h +22 -0
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +20 -20
- data/src/core/lib/channel/handshaker.h +3 -4
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/inlined_vector.h +9 -0
- data/src/core/lib/gprpp/map.h +3 -501
- data/src/core/lib/gprpp/memory.h +45 -41
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +6 -11
- data/src/core/lib/gprpp/ref_counted.h +25 -19
- data/src/core/lib/gprpp/set.h +33 -0
- data/src/core/lib/gprpp/thd.h +2 -4
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli_security_connector.cc +15 -11
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/iomgr/buffer_list.cc +4 -5
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +4 -5
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.h +3 -5
- data/src/core/lib/iomgr/closure.h +8 -3
- data/src/core/lib/iomgr/combiner.cc +45 -82
- data/src/core/lib/iomgr/combiner.h +32 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
- data/src/core/lib/iomgr/exec_ctx.h +4 -3
- data/src/core/lib/iomgr/executor.cc +4 -2
- data/src/core/lib/iomgr/executor.h +3 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
- data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
- data/src/core/lib/iomgr/executor/threadpool.h +7 -11
- data/src/core/lib/iomgr/resource_quota.cc +55 -51
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
- data/src/core/lib/iomgr/tcp_custom.cc +9 -7
- data/src/core/lib/iomgr/tcp_posix.cc +20 -16
- data/src/core/lib/iomgr/tcp_server.h +1 -4
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +3 -2
- data/src/core/lib/iomgr/udp_server.h +6 -12
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_string.cc +2 -2
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +4 -20
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/security_connector.h +19 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.cc +29 -13
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
- data/src/core/lib/slice/slice.cc +2 -10
- data/src/core/lib/slice/slice_hash_table.h +4 -6
- data/src/core/lib/slice/slice_intern.cc +42 -39
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_utils.h +21 -4
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
- data/src/core/lib/surface/call.cc +3 -3
- data/src/core/lib/surface/channel.cc +7 -0
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/completion_queue.h +4 -2
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/lame_client.cc +33 -18
- data/src/core/lib/surface/server.cc +77 -76
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -7
- data/src/core/lib/transport/connectivity_state.cc +112 -98
- data/src/core/lib/transport/connectivity_state.h +100 -50
- data/src/core/lib/transport/static_metadata.cc +276 -288
- data/src/core/lib/transport/static_metadata.h +73 -76
- data/src/core/lib/transport/status_conversion.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +1 -1
- data/src/core/lib/transport/transport.cc +2 -2
- data/src/core/lib/transport/transport.h +12 -4
- data/src/core/lib/transport/transport_op_string.cc +14 -11
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +7 -5
- data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +12 -12
- data/src/core/tsi/ssl_transport_security.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +6 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
- data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
- data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
- data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
- data/third_party/boringssl/crypto/base64/base64.c +2 -2
- data/third_party/boringssl/crypto/bio/bio.c +73 -9
- data/third_party/boringssl/crypto/bio/connect.c +4 -0
- data/third_party/boringssl/crypto/bio/fd.c +4 -0
- data/third_party/boringssl/crypto/bio/file.c +5 -2
- data/third_party/boringssl/crypto/bio/socket.c +4 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
- data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
- data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
- data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
- data/third_party/boringssl/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
- data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
- data/third_party/boringssl/crypto/conf/conf.c +7 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
- data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
- data/third_party/boringssl/crypto/cpu-intel.c +45 -51
- data/third_party/boringssl/crypto/crypto.c +39 -22
- data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
- data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
- data/third_party/boringssl/crypto/engine/engine.c +2 -1
- data/third_party/boringssl/crypto/err/err.c +2 -0
- data/third_party/boringssl/crypto/err/internal.h +2 -2
- data/third_party/boringssl/crypto/evp/evp.c +89 -8
- data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
- data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
- data/third_party/boringssl/crypto/evp/internal.h +18 -1
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
- data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
- data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
- data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
- data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
- data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
- data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
- data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
- data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
- data/third_party/boringssl/crypto/hrss/internal.h +62 -0
- data/third_party/boringssl/crypto/internal.h +95 -20
- data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
- data/third_party/boringssl/crypto/mem.c +39 -2
- data/third_party/boringssl/crypto/obj/obj.c +4 -4
- data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
- data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
- data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
- data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
- data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
- data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
- data/third_party/boringssl/crypto/pool/internal.h +1 -1
- data/third_party/boringssl/crypto/pool/pool.c +21 -0
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
- data/third_party/boringssl/crypto/stack/stack.c +83 -32
- data/third_party/boringssl/crypto/thread_none.c +2 -2
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +38 -19
- data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
- data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
- data/third_party/boringssl/crypto/x509/by_file.c +12 -10
- data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
- data/third_party/boringssl/crypto/x509/t_req.c +1 -3
- data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
- data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
- data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
- data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
- data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
- data/third_party/boringssl/crypto/x509/x509name.c +2 -3
- data/third_party/boringssl/crypto/x509/x_all.c +109 -210
- data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
- data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
- data/third_party/boringssl/include/openssl/aead.h +45 -19
- data/third_party/boringssl/include/openssl/aes.h +32 -7
- data/third_party/boringssl/include/openssl/asn1.h +7 -77
- data/third_party/boringssl/include/openssl/base.h +120 -6
- data/third_party/boringssl/include/openssl/base64.h +4 -1
- data/third_party/boringssl/include/openssl/bio.h +112 -81
- data/third_party/boringssl/include/openssl/blowfish.h +3 -3
- data/third_party/boringssl/include/openssl/bn.h +55 -29
- data/third_party/boringssl/include/openssl/buf.h +2 -2
- data/third_party/boringssl/include/openssl/bytestring.h +54 -32
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +46 -16
- data/third_party/boringssl/include/openssl/cmac.h +6 -2
- data/third_party/boringssl/include/openssl/conf.h +3 -6
- data/third_party/boringssl/include/openssl/cpu.h +25 -9
- data/third_party/boringssl/include/openssl/crypto.h +32 -10
- data/third_party/boringssl/include/openssl/curve25519.h +4 -4
- data/third_party/boringssl/include/openssl/dh.h +3 -2
- data/third_party/boringssl/include/openssl/digest.h +21 -7
- data/third_party/boringssl/include/openssl/dsa.h +8 -2
- data/third_party/boringssl/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl/include/openssl/ec.h +25 -21
- data/third_party/boringssl/include/openssl/ec_key.h +36 -8
- data/third_party/boringssl/include/openssl/ecdh.h +17 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
- data/third_party/boringssl/include/openssl/engine.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -0
- data/third_party/boringssl/include/openssl/evp.h +199 -42
- data/third_party/boringssl/include/openssl/hmac.h +4 -4
- data/third_party/boringssl/include/openssl/hrss.h +100 -0
- data/third_party/boringssl/include/openssl/lhash.h +131 -23
- data/third_party/boringssl/include/openssl/md4.h +6 -4
- data/third_party/boringssl/include/openssl/md5.h +6 -4
- data/third_party/boringssl/include/openssl/mem.h +6 -2
- data/third_party/boringssl/include/openssl/nid.h +3 -0
- data/third_party/boringssl/include/openssl/obj.h +3 -0
- data/third_party/boringssl/include/openssl/pem.h +102 -64
- data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
- data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
- data/third_party/boringssl/include/openssl/pool.h +13 -2
- data/third_party/boringssl/include/openssl/ripemd.h +5 -4
- data/third_party/boringssl/include/openssl/rsa.h +46 -15
- data/third_party/boringssl/include/openssl/sha.h +40 -28
- data/third_party/boringssl/include/openssl/siphash.h +37 -0
- data/third_party/boringssl/include/openssl/span.h +17 -9
- data/third_party/boringssl/include/openssl/ssl.h +766 -393
- data/third_party/boringssl/include/openssl/ssl3.h +4 -3
- data/third_party/boringssl/include/openssl/stack.h +134 -77
- data/third_party/boringssl/include/openssl/thread.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +25 -9
- data/third_party/boringssl/include/openssl/type_check.h +14 -15
- data/third_party/boringssl/include/openssl/x509.h +28 -3
- data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
- data/third_party/boringssl/include/openssl/x509v3.h +17 -13
- data/third_party/boringssl/ssl/d1_both.cc +9 -18
- data/third_party/boringssl/ssl/d1_lib.cc +4 -3
- data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
- data/third_party/boringssl/ssl/dtls_method.cc +0 -1
- data/third_party/boringssl/ssl/dtls_record.cc +28 -28
- data/third_party/boringssl/ssl/handoff.cc +295 -91
- data/third_party/boringssl/ssl/handshake.cc +133 -72
- data/third_party/boringssl/ssl/handshake_client.cc +218 -189
- data/third_party/boringssl/ssl/handshake_server.cc +399 -272
- data/third_party/boringssl/ssl/internal.h +1413 -928
- data/third_party/boringssl/ssl/s3_both.cc +175 -36
- data/third_party/boringssl/ssl/s3_lib.cc +9 -13
- data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
- data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
- data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
- data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
- data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
- data/third_party/boringssl/ssl/ssl_file.cc +2 -0
- data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
- data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
- data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
- data/third_party/boringssl/ssl/ssl_session.cc +230 -178
- data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
- data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
- data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
- data/third_party/boringssl/ssl/t1_enc.cc +5 -96
- data/third_party/boringssl/ssl/t1_lib.cc +931 -678
- data/third_party/boringssl/ssl/tls13_both.cc +251 -121
- data/third_party/boringssl/ssl/tls13_client.cc +129 -73
- data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
- data/third_party/boringssl/ssl/tls13_server.cc +259 -192
- data/third_party/boringssl/ssl/tls_method.cc +26 -21
- data/third_party/boringssl/ssl/tls_record.cc +42 -47
- data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
- data/third_party/boringssl/third_party/fiat/p256.c +238 -999
- data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
- data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +2 -1
- metadata +71 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -47
- data/src/core/lib/gprpp/pair.h +0 -38
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -21,14 +21,11 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
/** Channel arg indicating if a target corresponding to the address is grpclb
|
25
|
-
* loadbalancer. The type of this arg is an integer and the value is treated as
|
26
|
-
* a bool. */
|
27
|
-
#define GRPC_ARG_ADDRESS_IS_XDS_LOAD_BALANCER \
|
28
|
-
"grpc.address_is_xds_load_balancer"
|
29
24
|
/** Channel arg indicating if a target corresponding to the address is a backend
|
30
25
|
* received from a balancer. The type of this arg is an integer and the value is
|
31
26
|
* treated as a bool. */
|
27
|
+
// TODO(roth): Depending on how we ultimately decide to handle fallback,
|
28
|
+
// this may no longer be needed.
|
32
29
|
#define GRPC_ARG_ADDRESS_IS_BACKEND_FROM_XDS_LOAD_BALANCER \
|
33
30
|
"grpc.address_is_backend_from_xds_load_balancer"
|
34
31
|
|
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
25
|
-
#include "src/core/lib/gprpp/abstract.h"
|
26
25
|
#include "src/core/lib/gprpp/orphanable.h"
|
27
26
|
|
28
27
|
namespace grpc_core {
|
@@ -31,18 +30,16 @@ class LoadBalancingPolicyFactory {
|
|
31
30
|
public:
|
32
31
|
/// Returns a new LB policy instance.
|
33
32
|
virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
34
|
-
LoadBalancingPolicy::Args) const
|
33
|
+
LoadBalancingPolicy::Args) const = 0;
|
35
34
|
|
36
35
|
/// Returns the LB policy name that this factory provides.
|
37
36
|
/// Caller does NOT take ownership of result.
|
38
|
-
virtual const char* name() const
|
37
|
+
virtual const char* name() const = 0;
|
39
38
|
|
40
39
|
virtual RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
41
|
-
const grpc_json* json, grpc_error** error) const
|
40
|
+
const grpc_json* json, grpc_error** error) const = 0;
|
42
41
|
|
43
42
|
virtual ~LoadBalancingPolicyFactory() {}
|
44
|
-
|
45
|
-
GRPC_ABSTRACT_BASE_CLASS;
|
46
43
|
};
|
47
44
|
|
48
45
|
} // namespace grpc_core
|
@@ -30,8 +30,7 @@ namespace grpc_core {
|
|
30
30
|
// Resolver
|
31
31
|
//
|
32
32
|
|
33
|
-
Resolver::Resolver(
|
34
|
-
UniquePtr<ResultHandler> result_handler)
|
33
|
+
Resolver::Resolver(Combiner* combiner, UniquePtr<ResultHandler> result_handler)
|
35
34
|
: InternallyRefCounted(&grpc_trace_resolver_refcount),
|
36
35
|
result_handler_(std::move(result_handler)),
|
37
36
|
combiner_(GRPC_COMBINER_REF(combiner, "resolver")) {}
|
@@ -25,7 +25,6 @@
|
|
25
25
|
|
26
26
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
27
27
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
28
|
-
#include "src/core/lib/gprpp/abstract.h"
|
29
28
|
#include "src/core/lib/gprpp/orphanable.h"
|
30
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
31
30
|
#include "src/core/lib/iomgr/combiner.h"
|
@@ -74,25 +73,24 @@ class Resolver : public InternallyRefCounted<Resolver> {
|
|
74
73
|
|
75
74
|
/// Returns a result to the channel.
|
76
75
|
/// Takes ownership of \a result.args.
|
77
|
-
virtual void ReturnResult(Result result)
|
76
|
+
virtual void ReturnResult(Result result) = 0; // NOLINT
|
78
77
|
|
79
78
|
/// Returns a transient error to the channel.
|
80
79
|
/// If the resolver does not set the GRPC_ERROR_INT_GRPC_STATUS
|
81
80
|
/// attribute on the error, calls will be failed with status UNKNOWN.
|
82
|
-
virtual void ReturnError(grpc_error* error)
|
81
|
+
virtual void ReturnError(grpc_error* error) = 0;
|
83
82
|
|
84
83
|
// TODO(yashkt): As part of the service config error handling
|
85
84
|
// changes, add a method to parse the service config JSON string.
|
86
|
-
|
87
|
-
GRPC_ABSTRACT_BASE_CLASS
|
88
85
|
};
|
89
86
|
|
90
87
|
// Not copyable nor movable.
|
91
88
|
Resolver(const Resolver&) = delete;
|
92
89
|
Resolver& operator=(const Resolver&) = delete;
|
90
|
+
virtual ~Resolver();
|
93
91
|
|
94
92
|
/// Starts resolving.
|
95
|
-
virtual void StartLocked()
|
93
|
+
virtual void StartLocked() = 0;
|
96
94
|
|
97
95
|
/// Asks the resolver to obtain an updated resolver result, if
|
98
96
|
/// applicable.
|
@@ -123,30 +121,24 @@ class Resolver : public InternallyRefCounted<Resolver> {
|
|
123
121
|
Unref();
|
124
122
|
}
|
125
123
|
|
126
|
-
GRPC_ABSTRACT_BASE_CLASS
|
127
|
-
|
128
124
|
protected:
|
129
|
-
GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
130
|
-
|
131
125
|
/// Does NOT take ownership of the reference to \a combiner.
|
132
126
|
// TODO(roth): Once we have a C++-like interface for combiners, this
|
133
127
|
// API should change to take a RefCountedPtr<>, so that we always take
|
134
128
|
// ownership of a new ref.
|
135
|
-
explicit Resolver(
|
129
|
+
explicit Resolver(Combiner* combiner,
|
136
130
|
UniquePtr<ResultHandler> result_handler);
|
137
131
|
|
138
|
-
virtual ~Resolver();
|
139
|
-
|
140
132
|
/// Shuts down the resolver.
|
141
|
-
virtual void ShutdownLocked()
|
133
|
+
virtual void ShutdownLocked() = 0;
|
142
134
|
|
143
|
-
|
135
|
+
Combiner* combiner() const { return combiner_; }
|
144
136
|
|
145
137
|
ResultHandler* result_handler() const { return result_handler_.get(); }
|
146
138
|
|
147
139
|
private:
|
148
140
|
UniquePtr<ResultHandler> result_handler_;
|
149
|
-
|
141
|
+
Combiner* combiner_;
|
150
142
|
};
|
151
143
|
|
152
144
|
} // namespace grpc_core
|
@@ -76,6 +76,8 @@ class AresDnsResolver : public Resolver {
|
|
76
76
|
void MaybeStartResolvingLocked();
|
77
77
|
void StartResolvingLocked();
|
78
78
|
|
79
|
+
static void OnNextResolution(void* arg, grpc_error* error);
|
80
|
+
static void OnResolved(void* arg, grpc_error* error);
|
79
81
|
static void OnNextResolutionLocked(void* arg, grpc_error* error);
|
80
82
|
static void OnResolvedLocked(void* arg, grpc_error* error);
|
81
83
|
|
@@ -152,10 +154,7 @@ AresDnsResolver::AresDnsResolver(ResolverArgs args)
|
|
152
154
|
if (args.pollset_set != nullptr) {
|
153
155
|
grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
|
154
156
|
}
|
155
|
-
|
156
|
-
grpc_combiner_scheduler(combiner()));
|
157
|
-
GRPC_CLOSURE_INIT(&on_resolved_, OnResolvedLocked, this,
|
158
|
-
grpc_combiner_scheduler(combiner()));
|
157
|
+
|
159
158
|
const grpc_arg* query_timeout_ms_arg =
|
160
159
|
grpc_channel_args_find(channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS);
|
161
160
|
query_timeout_ms_ = grpc_channel_arg_get_integer(
|
@@ -200,6 +199,13 @@ void AresDnsResolver::ShutdownLocked() {
|
|
200
199
|
}
|
201
200
|
}
|
202
201
|
|
202
|
+
void AresDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
|
203
|
+
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
204
|
+
r->combiner()->Run(GRPC_CLOSURE_INIT(&r->on_next_resolution_,
|
205
|
+
OnNextResolutionLocked, r, nullptr),
|
206
|
+
GRPC_ERROR_REF(error));
|
207
|
+
}
|
208
|
+
|
203
209
|
void AresDnsResolver::OnNextResolutionLocked(void* arg, grpc_error* error) {
|
204
210
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
205
211
|
GRPC_CARES_TRACE_LOG(
|
@@ -317,6 +323,13 @@ char* ChooseServiceConfig(char* service_config_choice_json,
|
|
317
323
|
return service_config;
|
318
324
|
}
|
319
325
|
|
326
|
+
void AresDnsResolver::OnResolved(void* arg, grpc_error* error) {
|
327
|
+
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
328
|
+
r->combiner()->Run(
|
329
|
+
GRPC_CLOSURE_INIT(&r->on_resolved_, OnResolvedLocked, r, nullptr),
|
330
|
+
GRPC_ERROR_REF(error));
|
331
|
+
}
|
332
|
+
|
320
333
|
void AresDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
|
321
334
|
AresDnsResolver* r = static_cast<AresDnsResolver*>(arg);
|
322
335
|
GPR_ASSERT(r->resolving_);
|
@@ -373,6 +386,8 @@ void AresDnsResolver::OnResolvedLocked(void* arg, grpc_error* error) {
|
|
373
386
|
} else {
|
374
387
|
GRPC_CARES_TRACE_LOG("resolver:%p retrying immediately", r);
|
375
388
|
}
|
389
|
+
GRPC_CLOSURE_INIT(&r->on_next_resolution_, OnNextResolution, r,
|
390
|
+
grpc_schedule_on_exec_ctx);
|
376
391
|
grpc_timer_init(&r->next_resolution_timer_, next_try,
|
377
392
|
&r->on_next_resolution_);
|
378
393
|
}
|
@@ -400,6 +415,8 @@ void AresDnsResolver::MaybeStartResolvingLocked() {
|
|
400
415
|
// new closure API is done, find a way to track this ref with the timer
|
401
416
|
// callback as part of the type system.
|
402
417
|
Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
|
418
|
+
GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
|
419
|
+
grpc_schedule_on_exec_ctx);
|
403
420
|
grpc_timer_init(&next_resolution_timer_,
|
404
421
|
ExecCtx::Get()->Now() + ms_until_next_resolution,
|
405
422
|
&on_next_resolution_);
|
@@ -417,6 +434,7 @@ void AresDnsResolver::StartResolvingLocked() {
|
|
417
434
|
GPR_ASSERT(!resolving_);
|
418
435
|
resolving_ = true;
|
419
436
|
service_config_json_ = nullptr;
|
437
|
+
GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
|
420
438
|
pending_request_ = grpc_dns_lookup_ares_locked(
|
421
439
|
dns_server_, name_to_resolve_, kDefaultPort, interested_parties_,
|
422
440
|
&on_resolved_, &addresses_, enable_srv_queries_ /* check_grpclb */,
|
@@ -433,10 +451,10 @@ void AresDnsResolver::StartResolvingLocked() {
|
|
433
451
|
|
434
452
|
class AresDnsResolverFactory : public ResolverFactory {
|
435
453
|
public:
|
436
|
-
bool IsValidUri(const grpc_uri* uri) const override { return true; }
|
454
|
+
bool IsValidUri(const grpc_uri* /*uri*/) const override { return true; }
|
437
455
|
|
438
456
|
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
|
439
|
-
return
|
457
|
+
return MakeOrphanable<AresDnsResolver>(std::move(args));
|
440
458
|
}
|
441
459
|
|
442
460
|
const char* scheme() const override { return "dns"; }
|
@@ -494,8 +512,7 @@ void grpc_resolver_dns_ares_init() {
|
|
494
512
|
}
|
495
513
|
grpc_set_resolver_impl(&ares_resolver);
|
496
514
|
grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
|
497
|
-
grpc_core::
|
498
|
-
grpc_core::New<grpc_core::AresDnsResolverFactory>()));
|
515
|
+
grpc_core::MakeUnique<grpc_core::AresDnsResolverFactory>());
|
499
516
|
} else {
|
500
517
|
g_use_ares_dns_resolver = false;
|
501
518
|
}
|
@@ -67,7 +67,7 @@ struct grpc_ares_ev_driver {
|
|
67
67
|
gpr_refcount refs;
|
68
68
|
|
69
69
|
/** combiner to synchronize c-ares and I/O callbacks on */
|
70
|
-
|
70
|
+
grpc_core::Combiner* combiner;
|
71
71
|
/** a list of grpc_fd that this event driver is currently using. */
|
72
72
|
fd_node* fds;
|
73
73
|
/** is this event driver currently working? */
|
@@ -132,11 +132,13 @@ static void fd_node_shutdown_locked(fd_node* fdn, const char* reason) {
|
|
132
132
|
}
|
133
133
|
}
|
134
134
|
|
135
|
+
static void on_timeout(void* arg, grpc_error* error);
|
135
136
|
static void on_timeout_locked(void* arg, grpc_error* error);
|
136
137
|
|
138
|
+
static void on_ares_backup_poll_alarm(void* arg, grpc_error* error);
|
137
139
|
static void on_ares_backup_poll_alarm_locked(void* arg, grpc_error* error);
|
138
140
|
|
139
|
-
static void noop_inject_channel_config(ares_channel channel) {}
|
141
|
+
static void noop_inject_channel_config(ares_channel /*channel*/) {}
|
140
142
|
|
141
143
|
void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
|
142
144
|
noop_inject_channel_config;
|
@@ -144,7 +146,7 @@ void (*grpc_ares_test_only_inject_config)(ares_channel channel) =
|
|
144
146
|
grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
|
145
147
|
grpc_pollset_set* pollset_set,
|
146
148
|
int query_timeout_ms,
|
147
|
-
|
149
|
+
grpc_core::Combiner* combiner,
|
148
150
|
grpc_ares_request* request) {
|
149
151
|
*ev_driver = grpc_core::New<grpc_ares_ev_driver>();
|
150
152
|
ares_options opts;
|
@@ -173,11 +175,6 @@ grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
|
|
173
175
|
grpc_core::NewGrpcPolledFdFactory((*ev_driver)->combiner);
|
174
176
|
(*ev_driver)
|
175
177
|
->polled_fd_factory->ConfigureAresChannelLocked((*ev_driver)->channel);
|
176
|
-
GRPC_CLOSURE_INIT(&(*ev_driver)->on_timeout_locked, on_timeout_locked,
|
177
|
-
*ev_driver, grpc_combiner_scheduler(combiner));
|
178
|
-
GRPC_CLOSURE_INIT(&(*ev_driver)->on_ares_backup_poll_alarm_locked,
|
179
|
-
on_ares_backup_poll_alarm_locked, *ev_driver,
|
180
|
-
grpc_combiner_scheduler(combiner));
|
181
178
|
(*ev_driver)->query_timeout_ms = query_timeout_ms;
|
182
179
|
return GRPC_ERROR_NONE;
|
183
180
|
}
|
@@ -235,6 +232,13 @@ static grpc_millis calculate_next_ares_backup_poll_alarm_ms(
|
|
235
232
|
grpc_core::ExecCtx::Get()->Now();
|
236
233
|
}
|
237
234
|
|
235
|
+
static void on_timeout(void* arg, grpc_error* error) {
|
236
|
+
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
237
|
+
driver->combiner->Run(GRPC_CLOSURE_INIT(&driver->on_timeout_locked,
|
238
|
+
on_timeout_locked, driver, nullptr),
|
239
|
+
GRPC_ERROR_REF(error));
|
240
|
+
}
|
241
|
+
|
238
242
|
static void on_timeout_locked(void* arg, grpc_error* error) {
|
239
243
|
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
240
244
|
GRPC_CARES_TRACE_LOG(
|
@@ -247,6 +251,14 @@ static void on_timeout_locked(void* arg, grpc_error* error) {
|
|
247
251
|
grpc_ares_ev_driver_unref(driver);
|
248
252
|
}
|
249
253
|
|
254
|
+
static void on_ares_backup_poll_alarm(void* arg, grpc_error* error) {
|
255
|
+
grpc_ares_ev_driver* driver = static_cast<grpc_ares_ev_driver*>(arg);
|
256
|
+
driver->combiner->Run(
|
257
|
+
GRPC_CLOSURE_INIT(&driver->on_ares_backup_poll_alarm_locked,
|
258
|
+
on_ares_backup_poll_alarm_locked, driver, nullptr),
|
259
|
+
GRPC_ERROR_REF(error));
|
260
|
+
}
|
261
|
+
|
250
262
|
/* In case of non-responsive DNS servers, dropped packets, etc., c-ares has
|
251
263
|
* intelligent timeout and retry logic, which we can take advantage of by
|
252
264
|
* polling ares_process_fd on time intervals. Overall, the c-ares library is
|
@@ -279,6 +291,9 @@ static void on_ares_backup_poll_alarm_locked(void* arg, grpc_error* error) {
|
|
279
291
|
grpc_millis next_ares_backup_poll_alarm =
|
280
292
|
calculate_next_ares_backup_poll_alarm_ms(driver);
|
281
293
|
grpc_ares_ev_driver_ref(driver);
|
294
|
+
GRPC_CLOSURE_INIT(&driver->on_ares_backup_poll_alarm_locked,
|
295
|
+
on_ares_backup_poll_alarm, driver,
|
296
|
+
grpc_schedule_on_exec_ctx);
|
282
297
|
grpc_timer_init(&driver->ares_backup_poll_alarm,
|
283
298
|
next_ares_backup_poll_alarm,
|
284
299
|
&driver->on_ares_backup_poll_alarm_locked);
|
@@ -313,6 +328,13 @@ static void on_readable_locked(void* arg, grpc_error* error) {
|
|
313
328
|
grpc_ares_ev_driver_unref(ev_driver);
|
314
329
|
}
|
315
330
|
|
331
|
+
static void on_readable(void* arg, grpc_error* error) {
|
332
|
+
fd_node* fdn = static_cast<fd_node*>(arg);
|
333
|
+
fdn->ev_driver->combiner->Run(
|
334
|
+
GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable_locked, fdn, nullptr),
|
335
|
+
GRPC_ERROR_REF(error));
|
336
|
+
}
|
337
|
+
|
316
338
|
static void on_writable_locked(void* arg, grpc_error* error) {
|
317
339
|
fd_node* fdn = static_cast<fd_node*>(arg);
|
318
340
|
GPR_ASSERT(fdn->writable_registered);
|
@@ -336,6 +358,13 @@ static void on_writable_locked(void* arg, grpc_error* error) {
|
|
336
358
|
grpc_ares_ev_driver_unref(ev_driver);
|
337
359
|
}
|
338
360
|
|
361
|
+
static void on_writable(void* arg, grpc_error* error) {
|
362
|
+
fd_node* fdn = static_cast<fd_node*>(arg);
|
363
|
+
fdn->ev_driver->combiner->Run(
|
364
|
+
GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable_locked, fdn, nullptr),
|
365
|
+
GRPC_ERROR_REF(error));
|
366
|
+
}
|
367
|
+
|
339
368
|
ares_channel* grpc_ares_ev_driver_get_channel_locked(
|
340
369
|
grpc_ares_ev_driver* ev_driver) {
|
341
370
|
return &ev_driver->channel;
|
@@ -365,10 +394,6 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
365
394
|
fdn->readable_registered = false;
|
366
395
|
fdn->writable_registered = false;
|
367
396
|
fdn->already_shutdown = false;
|
368
|
-
GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable_locked, fdn,
|
369
|
-
grpc_combiner_scheduler(ev_driver->combiner));
|
370
|
-
GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable_locked, fdn,
|
371
|
-
grpc_combiner_scheduler(ev_driver->combiner));
|
372
397
|
}
|
373
398
|
fdn->next = new_list;
|
374
399
|
new_list = fdn;
|
@@ -380,6 +405,8 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
380
405
|
GRPC_CARES_TRACE_LOG("request:%p notify read on: %s",
|
381
406
|
ev_driver->request,
|
382
407
|
fdn->grpc_polled_fd->GetName());
|
408
|
+
GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable, fdn,
|
409
|
+
grpc_schedule_on_exec_ctx);
|
383
410
|
fdn->grpc_polled_fd->RegisterForOnReadableLocked(&fdn->read_closure);
|
384
411
|
fdn->readable_registered = true;
|
385
412
|
}
|
@@ -391,6 +418,8 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver) {
|
|
391
418
|
ev_driver->request,
|
392
419
|
fdn->grpc_polled_fd->GetName());
|
393
420
|
grpc_ares_ev_driver_ref(ev_driver);
|
421
|
+
GRPC_CLOSURE_INIT(&fdn->write_closure, on_writable, fdn,
|
422
|
+
grpc_schedule_on_exec_ctx);
|
394
423
|
fdn->grpc_polled_fd->RegisterForOnWriteableLocked(
|
395
424
|
&fdn->write_closure);
|
396
425
|
fdn->writable_registered = true;
|
@@ -435,12 +464,17 @@ void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver) {
|
|
435
464
|
"%" PRId64 " ms",
|
436
465
|
ev_driver->request, ev_driver, timeout);
|
437
466
|
grpc_ares_ev_driver_ref(ev_driver);
|
467
|
+
GRPC_CLOSURE_INIT(&ev_driver->on_timeout_locked, on_timeout, ev_driver,
|
468
|
+
grpc_schedule_on_exec_ctx);
|
438
469
|
grpc_timer_init(&ev_driver->query_timeout, timeout,
|
439
470
|
&ev_driver->on_timeout_locked);
|
440
471
|
// Initialize the backup poll alarm
|
441
472
|
grpc_millis next_ares_backup_poll_alarm =
|
442
473
|
calculate_next_ares_backup_poll_alarm_ms(ev_driver);
|
443
474
|
grpc_ares_ev_driver_ref(ev_driver);
|
475
|
+
GRPC_CLOSURE_INIT(&ev_driver->on_ares_backup_poll_alarm_locked,
|
476
|
+
on_ares_backup_poll_alarm, ev_driver,
|
477
|
+
grpc_schedule_on_exec_ctx);
|
444
478
|
grpc_timer_init(&ev_driver->ares_backup_poll_alarm,
|
445
479
|
next_ares_backup_poll_alarm,
|
446
480
|
&ev_driver->on_ares_backup_poll_alarm_locked);
|
@@ -23,7 +23,6 @@
|
|
23
23
|
|
24
24
|
#include <ares.h>
|
25
25
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
26
|
-
#include "src/core/lib/gprpp/abstract.h"
|
27
26
|
#include "src/core/lib/iomgr/pollset_set.h"
|
28
27
|
|
29
28
|
typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
|
@@ -44,7 +43,7 @@ ares_channel* grpc_ares_ev_driver_get_channel_locked(
|
|
44
43
|
grpc_error* grpc_ares_ev_driver_create_locked(grpc_ares_ev_driver** ev_driver,
|
45
44
|
grpc_pollset_set* pollset_set,
|
46
45
|
int query_timeout_ms,
|
47
|
-
|
46
|
+
grpc_core::Combiner* combiner,
|
48
47
|
grpc_ares_request* request);
|
49
48
|
|
50
49
|
/* Called back when all DNS lookups have completed. */
|
@@ -67,22 +66,18 @@ class GrpcPolledFd {
|
|
67
66
|
public:
|
68
67
|
virtual ~GrpcPolledFd() {}
|
69
68
|
/* Called when c-ares library is interested and there's no pending callback */
|
70
|
-
virtual void RegisterForOnReadableLocked(grpc_closure* read_closure)
|
71
|
-
GRPC_ABSTRACT;
|
69
|
+
virtual void RegisterForOnReadableLocked(grpc_closure* read_closure) = 0;
|
72
70
|
/* Called when c-ares library is interested and there's no pending callback */
|
73
|
-
virtual void RegisterForOnWriteableLocked(grpc_closure* write_closure)
|
74
|
-
GRPC_ABSTRACT;
|
71
|
+
virtual void RegisterForOnWriteableLocked(grpc_closure* write_closure) = 0;
|
75
72
|
/* Indicates if there is data left even after just being read from */
|
76
|
-
virtual bool IsFdStillReadableLocked()
|
73
|
+
virtual bool IsFdStillReadableLocked() = 0;
|
77
74
|
/* Called once and only once. Must cause cancellation of any pending
|
78
75
|
* read/write callbacks. */
|
79
|
-
virtual void ShutdownLocked(grpc_error* error)
|
76
|
+
virtual void ShutdownLocked(grpc_error* error) = 0;
|
80
77
|
/* Get the underlying ares_socket_t that this was created from */
|
81
|
-
virtual ares_socket_t GetWrappedAresSocketLocked()
|
78
|
+
virtual ares_socket_t GetWrappedAresSocketLocked() = 0;
|
82
79
|
/* A unique name, for logging */
|
83
|
-
virtual const char* GetName()
|
84
|
-
|
85
|
-
GRPC_ABSTRACT_BASE_CLASS
|
80
|
+
virtual const char* GetName() = 0;
|
86
81
|
};
|
87
82
|
|
88
83
|
/* A GrpcPolledFdFactory is 1-to-1 with and owned by the
|
@@ -95,14 +90,12 @@ class GrpcPolledFdFactory {
|
|
95
90
|
/* Creates a new wrapped fd for the current platform */
|
96
91
|
virtual GrpcPolledFd* NewGrpcPolledFdLocked(
|
97
92
|
ares_socket_t as, grpc_pollset_set* driver_pollset_set,
|
98
|
-
|
93
|
+
Combiner* combiner) = 0;
|
99
94
|
/* Optionally configures the ares channel after creation */
|
100
|
-
virtual void ConfigureAresChannelLocked(ares_channel channel)
|
101
|
-
|
102
|
-
GRPC_ABSTRACT_BASE_CLASS
|
95
|
+
virtual void ConfigureAresChannelLocked(ares_channel channel) = 0;
|
103
96
|
};
|
104
97
|
|
105
|
-
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
98
|
+
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Combiner* combiner);
|
106
99
|
|
107
100
|
} // namespace grpc_core
|
108
101
|
|
@@ -41,7 +41,7 @@ void ares_uv_poll_close_cb(uv_handle_t* handle) { Delete(handle); }
|
|
41
41
|
|
42
42
|
class GrpcPolledFdLibuv : public GrpcPolledFd {
|
43
43
|
public:
|
44
|
-
GrpcPolledFdLibuv(ares_socket_t as,
|
44
|
+
GrpcPolledFdLibuv(ares_socket_t as, Combiner* combiner)
|
45
45
|
: as_(as), combiner_(combiner) {
|
46
46
|
gpr_asprintf(&name_, "c-ares socket: %" PRIdPTR, (intptr_t)as);
|
47
47
|
handle_ = New<uv_poll_t>();
|
@@ -107,7 +107,7 @@ class GrpcPolledFdLibuv : public GrpcPolledFd {
|
|
107
107
|
grpc_closure* read_closure_ = nullptr;
|
108
108
|
grpc_closure* write_closure_ = nullptr;
|
109
109
|
int poll_events_ = 0;
|
110
|
-
|
110
|
+
Combiner* combiner_;
|
111
111
|
};
|
112
112
|
|
113
113
|
struct AresUvPollCbArg {
|
@@ -153,9 +153,8 @@ void ares_uv_poll_cb(uv_poll_t* handle, int status, int events) {
|
|
153
153
|
GrpcPolledFdLibuv* polled_fd =
|
154
154
|
reinterpret_cast<GrpcPolledFdLibuv*>(handle->data);
|
155
155
|
AresUvPollCbArg* arg = New<AresUvPollCbArg>(handle, status, events);
|
156
|
-
|
157
|
-
GRPC_CLOSURE_CREATE(ares_uv_poll_cb_locked, arg,
|
158
|
-
grpc_combiner_scheduler(polled_fd->combiner_)),
|
156
|
+
polled_fd->combiner_->Run(
|
157
|
+
GRPC_CLOSURE_CREATE(ares_uv_poll_cb_locked, arg, nullptr),
|
159
158
|
GRPC_ERROR_NONE);
|
160
159
|
}
|
161
160
|
|
@@ -163,15 +162,15 @@ class GrpcPolledFdFactoryLibuv : public GrpcPolledFdFactory {
|
|
163
162
|
public:
|
164
163
|
GrpcPolledFd* NewGrpcPolledFdLocked(ares_socket_t as,
|
165
164
|
grpc_pollset_set* driver_pollset_set,
|
166
|
-
|
165
|
+
Combiner* combiner) override {
|
167
166
|
return New<GrpcPolledFdLibuv>(as, combiner);
|
168
167
|
}
|
169
168
|
|
170
169
|
void ConfigureAresChannelLocked(ares_channel channel) override {}
|
171
170
|
};
|
172
171
|
|
173
|
-
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
174
|
-
return
|
172
|
+
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Combiner* combiner) {
|
173
|
+
return MakeUnique<GrpcPolledFdFactoryLibuv>();
|
175
174
|
}
|
176
175
|
|
177
176
|
} // namespace grpc_core
|