grpc 1.24.0 → 1.25.0
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/ev_poll_posix.cc +3 -1
- 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 +72 -44
- 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
@@ -90,15 +90,15 @@ class GrpcPolledFdFactoryPosix : public GrpcPolledFdFactory {
|
|
90
90
|
public:
|
91
91
|
GrpcPolledFd* NewGrpcPolledFdLocked(ares_socket_t as,
|
92
92
|
grpc_pollset_set* driver_pollset_set,
|
93
|
-
|
93
|
+
Combiner* /*combiner*/) override {
|
94
94
|
return New<GrpcPolledFdPosix>(as, driver_pollset_set);
|
95
95
|
}
|
96
96
|
|
97
|
-
void ConfigureAresChannelLocked(ares_channel channel) override {}
|
97
|
+
void ConfigureAresChannelLocked(ares_channel /*channel*/) override {}
|
98
98
|
};
|
99
99
|
|
100
|
-
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
101
|
-
return
|
100
|
+
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Combiner* /*combiner*/) {
|
101
|
+
return MakeUnique<GrpcPolledFdFactoryPosix>();
|
102
102
|
}
|
103
103
|
|
104
104
|
} // namespace grpc_core
|
@@ -88,7 +88,7 @@ class WSAErrorContext {
|
|
88
88
|
* from c-ares and are used with the grpc windows poller, and it, e.g.,
|
89
89
|
* manufactures virtual socket error codes when it e.g. needs to tell the c-ares
|
90
90
|
* library to wait for an async read. */
|
91
|
-
class GrpcPolledFdWindows
|
91
|
+
class GrpcPolledFdWindows {
|
92
92
|
public:
|
93
93
|
enum WriteState {
|
94
94
|
WRITE_IDLE,
|
@@ -97,8 +97,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
97
97
|
WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY,
|
98
98
|
};
|
99
99
|
|
100
|
-
GrpcPolledFdWindows(ares_socket_t as,
|
101
|
-
int
|
100
|
+
GrpcPolledFdWindows(ares_socket_t as, Combiner* combiner, int address_family,
|
101
|
+
int socket_type)
|
102
102
|
: read_buf_(grpc_empty_slice()),
|
103
103
|
write_buf_(grpc_empty_slice()),
|
104
104
|
tcp_write_state_(WRITE_IDLE),
|
@@ -108,22 +108,13 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
108
108
|
gpr_asprintf(&name_, "c-ares socket: %" PRIdPTR, as);
|
109
109
|
winsocket_ = grpc_winsocket_create(as, name_);
|
110
110
|
combiner_ = GRPC_COMBINER_REF(combiner, name_);
|
111
|
-
GRPC_CLOSURE_INIT(&outer_read_closure_,
|
112
|
-
&GrpcPolledFdWindows::OnIocpReadable, this,
|
113
|
-
grpc_combiner_scheduler(combiner_));
|
114
|
-
GRPC_CLOSURE_INIT(&outer_write_closure_,
|
115
|
-
&GrpcPolledFdWindows::OnIocpWriteable, this,
|
116
|
-
grpc_combiner_scheduler(combiner_));
|
117
|
-
GRPC_CLOSURE_INIT(&on_tcp_connect_locked_,
|
118
|
-
&GrpcPolledFdWindows::OnTcpConnectLocked, this,
|
119
|
-
grpc_combiner_scheduler(combiner_));
|
120
111
|
GRPC_CLOSURE_INIT(&continue_register_for_on_readable_locked_,
|
121
112
|
&GrpcPolledFdWindows::ContinueRegisterForOnReadableLocked,
|
122
|
-
this,
|
113
|
+
this, nullptr);
|
123
114
|
GRPC_CLOSURE_INIT(
|
124
115
|
&continue_register_for_on_writeable_locked_,
|
125
116
|
&GrpcPolledFdWindows::ContinueRegisterForOnWriteableLocked, this,
|
126
|
-
|
117
|
+
nullptr);
|
127
118
|
}
|
128
119
|
|
129
120
|
~GrpcPolledFdWindows() {
|
@@ -146,7 +137,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
146
137
|
write_closure_ = nullptr;
|
147
138
|
}
|
148
139
|
|
149
|
-
void RegisterForOnReadableLocked(grpc_closure* read_closure)
|
140
|
+
void RegisterForOnReadableLocked(grpc_closure* read_closure) {
|
150
141
|
GPR_ASSERT(read_closure_ == nullptr);
|
151
142
|
read_closure_ = read_closure;
|
152
143
|
GPR_ASSERT(GRPC_SLICE_LENGTH(read_buf_) == 0);
|
@@ -154,8 +145,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
154
145
|
GPR_ASSERT(!read_buf_has_data_);
|
155
146
|
read_buf_ = GRPC_SLICE_MALLOC(4192);
|
156
147
|
if (connect_done_) {
|
157
|
-
|
158
|
-
|
148
|
+
combiner_->Run(&continue_register_for_on_readable_locked_,
|
149
|
+
GRPC_ERROR_NONE);
|
159
150
|
} else {
|
160
151
|
GPR_ASSERT(pending_continue_register_for_on_readable_locked_ == nullptr);
|
161
152
|
pending_continue_register_for_on_readable_locked_ =
|
@@ -203,10 +194,13 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
203
194
|
return;
|
204
195
|
}
|
205
196
|
}
|
206
|
-
grpc_socket_notify_on_read(
|
197
|
+
grpc_socket_notify_on_read(
|
198
|
+
winsocket_, GRPC_CLOSURE_INIT(&outer_read_closure_,
|
199
|
+
&GrpcPolledFdWindows::OnIocpReadable,
|
200
|
+
this, grpc_schedule_on_exec_ctx));
|
207
201
|
}
|
208
202
|
|
209
|
-
void RegisterForOnWriteableLocked(grpc_closure* write_closure)
|
203
|
+
void RegisterForOnWriteableLocked(grpc_closure* write_closure) {
|
210
204
|
if (socket_type_ == SOCK_DGRAM) {
|
211
205
|
GRPC_CARES_TRACE_LOG("fd:|%s| RegisterForOnWriteableLocked called",
|
212
206
|
GetName());
|
@@ -219,8 +213,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
219
213
|
GPR_ASSERT(write_closure_ == nullptr);
|
220
214
|
write_closure_ = write_closure;
|
221
215
|
if (connect_done_) {
|
222
|
-
|
223
|
-
|
216
|
+
combiner_->Run(&continue_register_for_on_writeable_locked_,
|
217
|
+
GRPC_ERROR_NONE);
|
224
218
|
} else {
|
225
219
|
GPR_ASSERT(pending_continue_register_for_on_writeable_locked_ == nullptr);
|
226
220
|
pending_continue_register_for_on_writeable_locked_ =
|
@@ -262,7 +256,11 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
262
256
|
ScheduleAndNullWriteClosure(
|
263
257
|
GRPC_WSA_ERROR(wsa_error_code, "WSASend (overlapped)"));
|
264
258
|
} else {
|
265
|
-
grpc_socket_notify_on_write(
|
259
|
+
grpc_socket_notify_on_write(
|
260
|
+
winsocket_,
|
261
|
+
GRPC_CLOSURE_INIT(&outer_write_closure_,
|
262
|
+
&GrpcPolledFdWindows::OnIocpWriteable, this,
|
263
|
+
grpc_schedule_on_exec_ctx));
|
266
264
|
}
|
267
265
|
break;
|
268
266
|
case WRITE_PENDING:
|
@@ -272,19 +270,17 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
272
270
|
}
|
273
271
|
}
|
274
272
|
|
275
|
-
bool IsFdStillReadableLocked()
|
276
|
-
return GRPC_SLICE_LENGTH(read_buf_) > 0;
|
277
|
-
}
|
273
|
+
bool IsFdStillReadableLocked() { return GRPC_SLICE_LENGTH(read_buf_) > 0; }
|
278
274
|
|
279
|
-
void ShutdownLocked(grpc_error* error)
|
275
|
+
void ShutdownLocked(grpc_error* error) {
|
280
276
|
grpc_winsocket_shutdown(winsocket_);
|
281
277
|
}
|
282
278
|
|
283
|
-
ares_socket_t GetWrappedAresSocketLocked()
|
279
|
+
ares_socket_t GetWrappedAresSocketLocked() {
|
284
280
|
return grpc_winsocket_wrapped_socket(winsocket_);
|
285
281
|
}
|
286
282
|
|
287
|
-
const char* GetName()
|
283
|
+
const char* GetName() { return name_; }
|
288
284
|
|
289
285
|
ares_ssize_t RecvFrom(WSAErrorContext* wsa_error_ctx, void* data,
|
290
286
|
ares_socket_t data_len, int flags,
|
@@ -401,8 +397,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
401
397
|
ares_ssize_t SendVTCP(WSAErrorContext* wsa_error_ctx, const struct iovec* iov,
|
402
398
|
int iov_count) {
|
403
399
|
// The "sendv" handler on TCP sockets buffers up write
|
404
|
-
// requests and returns an
|
405
|
-
// in the background, and making further send progress in general, will
|
400
|
+
// requests and returns an artificial WSAEWOULDBLOCK. Writing that buffer
|
401
|
+
// out in the background, and making further send progress in general, will
|
406
402
|
// happen as long as c-ares continues to show interest in writeability on
|
407
403
|
// this fd.
|
408
404
|
GRPC_CARES_TRACE_LOG("fd:|%s| SendVTCP called tcp_write_state_:%d",
|
@@ -441,6 +437,16 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
441
437
|
abort();
|
442
438
|
}
|
443
439
|
|
440
|
+
static void OnTcpConnect(void* arg, grpc_error* error) {
|
441
|
+
GrpcPolledFdWindows* grpc_polled_fd =
|
442
|
+
static_cast<GrpcPolledFdWindows*>(arg);
|
443
|
+
grpc_polled_fd->combiner_->Run(
|
444
|
+
GRPC_CLOSURE_INIT(&grpc_polled_fd->on_tcp_connect_locked_,
|
445
|
+
&GrpcPolledFdWindows::OnTcpConnectLocked,
|
446
|
+
grpc_polled_fd, nullptr),
|
447
|
+
GRPC_ERROR_REF(error));
|
448
|
+
}
|
449
|
+
|
444
450
|
static void OnTcpConnectLocked(void* arg, grpc_error* error) {
|
445
451
|
GrpcPolledFdWindows* grpc_polled_fd =
|
446
452
|
static_cast<GrpcPolledFdWindows*>(arg);
|
@@ -481,12 +487,12 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
481
487
|
wsa_connect_error_ = WSA_OPERATION_ABORTED;
|
482
488
|
}
|
483
489
|
if (pending_continue_register_for_on_readable_locked_ != nullptr) {
|
484
|
-
|
485
|
-
|
490
|
+
combiner_->Run(pending_continue_register_for_on_readable_locked_,
|
491
|
+
GRPC_ERROR_NONE);
|
486
492
|
}
|
487
493
|
if (pending_continue_register_for_on_writeable_locked_ != nullptr) {
|
488
|
-
|
489
|
-
|
494
|
+
combiner_->Run(pending_continue_register_for_on_writeable_locked_,
|
495
|
+
GRPC_ERROR_NONE);
|
490
496
|
}
|
491
497
|
}
|
492
498
|
|
@@ -587,11 +593,23 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
587
593
|
return -1;
|
588
594
|
}
|
589
595
|
}
|
596
|
+
GRPC_CLOSURE_INIT(&on_tcp_connect_locked_,
|
597
|
+
&GrpcPolledFdWindows::OnTcpConnect, this,
|
598
|
+
grpc_schedule_on_exec_ctx);
|
590
599
|
grpc_socket_notify_on_write(winsocket_, &on_tcp_connect_locked_);
|
591
600
|
return out;
|
592
601
|
}
|
593
602
|
|
594
603
|
static void OnIocpReadable(void* arg, grpc_error* error) {
|
604
|
+
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
605
|
+
polled_fd->combiner_->Run(
|
606
|
+
GRPC_CLOSURE_INIT(&polled_fd->outer_read_closure_,
|
607
|
+
&GrpcPolledFdWindows::OnIocpReadableLocked, polled_fd,
|
608
|
+
nullptr),
|
609
|
+
GRPC_ERROR_REF(error));
|
610
|
+
}
|
611
|
+
|
612
|
+
static void OnIocpReadableLocked(void* arg, grpc_error* error) {
|
595
613
|
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
596
614
|
polled_fd->OnIocpReadableInner(error);
|
597
615
|
}
|
@@ -635,6 +653,15 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
635
653
|
}
|
636
654
|
|
637
655
|
static void OnIocpWriteable(void* arg, grpc_error* error) {
|
656
|
+
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
657
|
+
polled_fd->combiner_->Run(
|
658
|
+
GRPC_CLOSURE_INIT(&polled_fd->outer_write_closure_,
|
659
|
+
&GrpcPolledFdWindows::OnIocpWriteableLocked,
|
660
|
+
polled_fd, nullptr),
|
661
|
+
GRPC_ERROR_REF(error));
|
662
|
+
}
|
663
|
+
|
664
|
+
static void OnIocpWriteableLocked(void* arg, grpc_error* error) {
|
638
665
|
GrpcPolledFdWindows* polled_fd = static_cast<GrpcPolledFdWindows*>(arg);
|
639
666
|
polled_fd->OnIocpWriteableInner(error);
|
640
667
|
}
|
@@ -671,7 +698,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
|
|
671
698
|
bool gotten_into_driver_list() const { return gotten_into_driver_list_; }
|
672
699
|
void set_gotten_into_driver_list() { gotten_into_driver_list_ = true; }
|
673
700
|
|
674
|
-
|
701
|
+
Combiner* combiner_;
|
675
702
|
char recv_from_source_addr_[200];
|
676
703
|
ares_socklen_t recv_from_source_addr_len_;
|
677
704
|
grpc_slice read_buf_;
|
@@ -715,7 +742,7 @@ struct SockToPolledFdEntry {
|
|
715
742
|
* with a GrpcPolledFdWindows factory and event driver */
|
716
743
|
class SockToPolledFdMap {
|
717
744
|
public:
|
718
|
-
SockToPolledFdMap(
|
745
|
+
SockToPolledFdMap(Combiner* combiner) {
|
719
746
|
combiner_ = GRPC_COMBINER_REF(combiner, "sock to polled fd map");
|
720
747
|
}
|
721
748
|
|
@@ -816,20 +843,25 @@ class SockToPolledFdMap {
|
|
816
843
|
SockToPolledFdMap* map = static_cast<SockToPolledFdMap*>(user_data);
|
817
844
|
GrpcPolledFdWindows* polled_fd = map->LookupPolledFd(s);
|
818
845
|
map->RemoveEntry(s);
|
846
|
+
// See https://github.com/grpc/grpc/pull/20284, this trace log is
|
847
|
+
// intentionally placed to attempt to trigger a crash in case of a
|
848
|
+
// use after free on polled_fd.
|
849
|
+
GRPC_CARES_TRACE_LOG("CloseSocket called for socket: %s",
|
850
|
+
polled_fd->GetName());
|
819
851
|
// If a gRPC polled fd has not made it in to the driver's list yet, then
|
820
852
|
// the driver has not and will never see this socket.
|
821
853
|
if (!polled_fd->gotten_into_driver_list()) {
|
822
854
|
polled_fd->ShutdownLocked(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
823
855
|
"Shut down c-ares fd before without it ever having made it into the "
|
824
856
|
"driver's list"));
|
825
|
-
return 0;
|
826
857
|
}
|
858
|
+
grpc_core::Delete(polled_fd);
|
827
859
|
return 0;
|
828
860
|
}
|
829
861
|
|
830
862
|
private:
|
831
863
|
SockToPolledFdEntry* head_ = nullptr;
|
832
|
-
|
864
|
+
Combiner* combiner_;
|
833
865
|
};
|
834
866
|
|
835
867
|
const struct ares_socket_functions custom_ares_sock_funcs = {
|
@@ -840,19 +872,55 @@ const struct ares_socket_functions custom_ares_sock_funcs = {
|
|
840
872
|
&SockToPolledFdMap::SendV /* sendv */,
|
841
873
|
};
|
842
874
|
|
875
|
+
/* A thin wrapper over a GrpcPolledFdWindows object but with a shorter
|
876
|
+
lifetime. This object releases it's GrpcPolledFdWindows upon destruction,
|
877
|
+
so that c-ares can close it via usual socket teardown. */
|
878
|
+
class GrpcPolledFdWindowsWrapper : public GrpcPolledFd {
|
879
|
+
public:
|
880
|
+
GrpcPolledFdWindowsWrapper(GrpcPolledFdWindows* wrapped)
|
881
|
+
: wrapped_(wrapped) {}
|
882
|
+
|
883
|
+
~GrpcPolledFdWindowsWrapper() {}
|
884
|
+
|
885
|
+
void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
|
886
|
+
wrapped_->RegisterForOnReadableLocked(read_closure);
|
887
|
+
}
|
888
|
+
|
889
|
+
void RegisterForOnWriteableLocked(grpc_closure* write_closure) override {
|
890
|
+
wrapped_->RegisterForOnWriteableLocked(write_closure);
|
891
|
+
}
|
892
|
+
|
893
|
+
bool IsFdStillReadableLocked() override {
|
894
|
+
return wrapped_->IsFdStillReadableLocked();
|
895
|
+
}
|
896
|
+
|
897
|
+
void ShutdownLocked(grpc_error* error) override {
|
898
|
+
wrapped_->ShutdownLocked(error);
|
899
|
+
}
|
900
|
+
|
901
|
+
ares_socket_t GetWrappedAresSocketLocked() override {
|
902
|
+
return wrapped_->GetWrappedAresSocketLocked();
|
903
|
+
}
|
904
|
+
|
905
|
+
const char* GetName() override { return wrapped_->GetName(); }
|
906
|
+
|
907
|
+
private:
|
908
|
+
GrpcPolledFdWindows* wrapped_;
|
909
|
+
};
|
910
|
+
|
843
911
|
class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
|
844
912
|
public:
|
845
|
-
GrpcPolledFdFactoryWindows(
|
913
|
+
GrpcPolledFdFactoryWindows(Combiner* combiner)
|
846
914
|
: sock_to_polled_fd_map_(combiner) {}
|
847
915
|
|
848
916
|
GrpcPolledFd* NewGrpcPolledFdLocked(ares_socket_t as,
|
849
917
|
grpc_pollset_set* driver_pollset_set,
|
850
|
-
|
918
|
+
Combiner* combiner) override {
|
851
919
|
GrpcPolledFdWindows* polled_fd = sock_to_polled_fd_map_.LookupPolledFd(as);
|
852
920
|
// Set a flag so that the virtual socket "close" method knows it
|
853
921
|
// doesn't need to call ShutdownLocked, since now the driver will.
|
854
922
|
polled_fd->set_gotten_into_driver_list();
|
855
|
-
return polled_fd;
|
923
|
+
return grpc_core::New<GrpcPolledFdWindowsWrapper>(polled_fd);
|
856
924
|
}
|
857
925
|
|
858
926
|
void ConfigureAresChannelLocked(ares_channel channel) override {
|
@@ -864,9 +932,8 @@ class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
|
|
864
932
|
SockToPolledFdMap sock_to_polled_fd_map_;
|
865
933
|
};
|
866
934
|
|
867
|
-
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
|
868
|
-
return
|
869
|
-
New<GrpcPolledFdFactoryWindows>(combiner));
|
935
|
+
UniquePtr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Combiner* combiner) {
|
936
|
+
return MakeUnique<GrpcPolledFdFactoryWindows>(combiner);
|
870
937
|
}
|
871
938
|
|
872
939
|
} // namespace grpc_core
|
@@ -175,7 +175,7 @@ static void destroy_hostbyname_request_locked(
|
|
175
175
|
gpr_free(hr);
|
176
176
|
}
|
177
177
|
|
178
|
-
static void on_hostbyname_done_locked(void* arg, int status, int timeouts
|
178
|
+
static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
|
179
179
|
struct hostent* hostent) {
|
180
180
|
grpc_ares_hostbyname_request* hr =
|
181
181
|
static_cast<grpc_ares_hostbyname_request*>(arg);
|
@@ -248,7 +248,7 @@ static void on_hostbyname_done_locked(void* arg, int status, int timeouts,
|
|
248
248
|
destroy_hostbyname_request_locked(hr);
|
249
249
|
}
|
250
250
|
|
251
|
-
static void on_srv_query_done_locked(void* arg, int status, int timeouts
|
251
|
+
static void on_srv_query_done_locked(void* arg, int status, int /*timeouts*/,
|
252
252
|
unsigned char* abuf, int alen) {
|
253
253
|
grpc_ares_request* r = static_cast<grpc_ares_request*>(arg);
|
254
254
|
if (status == ARES_SUCCESS) {
|
@@ -293,7 +293,7 @@ static void on_srv_query_done_locked(void* arg, int status, int timeouts,
|
|
293
293
|
|
294
294
|
static const char g_service_config_attribute_prefix[] = "grpc_config=";
|
295
295
|
|
296
|
-
static void on_txt_done_locked(void* arg, int status, int timeouts
|
296
|
+
static void on_txt_done_locked(void* arg, int status, int /*timeouts*/,
|
297
297
|
unsigned char* buf, int len) {
|
298
298
|
char* error_msg;
|
299
299
|
grpc_ares_request* r = static_cast<grpc_ares_request*>(arg);
|
@@ -350,7 +350,7 @@ done:
|
|
350
350
|
void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
351
351
|
grpc_ares_request* r, const char* dns_server, const char* name,
|
352
352
|
const char* default_port, grpc_pollset_set* interested_parties,
|
353
|
-
bool check_grpclb, int query_timeout_ms,
|
353
|
+
bool check_grpclb, int query_timeout_ms, grpc_core::Combiner* combiner) {
|
354
354
|
grpc_error* error = GRPC_ERROR_NONE;
|
355
355
|
grpc_ares_hostbyname_request* hr = nullptr;
|
356
356
|
ares_channel* channel = nullptr;
|
@@ -579,8 +579,8 @@ static bool grpc_ares_maybe_resolve_localhost_manually_locked(
|
|
579
579
|
}
|
580
580
|
#else /* GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY */
|
581
581
|
static bool grpc_ares_maybe_resolve_localhost_manually_locked(
|
582
|
-
const char* name
|
583
|
-
grpc_core::UniquePtr<grpc_core::ServerAddressList>* addrs) {
|
582
|
+
const char* /*name*/, const char* /*default_port*/,
|
583
|
+
grpc_core::UniquePtr<grpc_core::ServerAddressList>* /*addrs*/) {
|
584
584
|
return false;
|
585
585
|
}
|
586
586
|
#endif /* GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY */
|
@@ -590,7 +590,7 @@ static grpc_ares_request* grpc_dns_lookup_ares_locked_impl(
|
|
590
590
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
591
591
|
grpc_core::UniquePtr<grpc_core::ServerAddressList>* addrs,
|
592
592
|
bool check_grpclb, char** service_config_json, int query_timeout_ms,
|
593
|
-
|
593
|
+
grpc_core::Combiner* combiner) {
|
594
594
|
grpc_ares_request* r =
|
595
595
|
static_cast<grpc_ares_request*>(gpr_zalloc(sizeof(grpc_ares_request)));
|
596
596
|
r->ev_driver = nullptr;
|
@@ -633,7 +633,7 @@ grpc_ares_request* (*grpc_dns_lookup_ares_locked)(
|
|
633
633
|
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
634
634
|
grpc_core::UniquePtr<grpc_core::ServerAddressList>* addrs,
|
635
635
|
bool check_grpclb, char** service_config_json, int query_timeout_ms,
|
636
|
-
|
636
|
+
grpc_core::Combiner* combiner) = grpc_dns_lookup_ares_locked_impl;
|
637
637
|
|
638
638
|
static void grpc_cancel_ares_request_locked_impl(grpc_ares_request* r) {
|
639
639
|
GPR_ASSERT(r != nullptr);
|
@@ -674,7 +674,7 @@ void grpc_ares_cleanup(void) {}
|
|
674
674
|
|
675
675
|
typedef struct grpc_resolve_address_ares_request {
|
676
676
|
/* combiner that queries and related callbacks run under */
|
677
|
-
|
677
|
+
grpc_core::Combiner* combiner;
|
678
678
|
/** the pointer to receive the resolved addresses */
|
679
679
|
grpc_resolved_addresses** addrs_out;
|
680
680
|
/** currently resolving addresses */
|
@@ -719,10 +719,20 @@ static void on_dns_lookup_done_locked(void* arg, grpc_error* error) {
|
|
719
719
|
grpc_core::Delete(r);
|
720
720
|
}
|
721
721
|
|
722
|
+
static void on_dns_lookup_done(void* arg, grpc_error* error) {
|
723
|
+
grpc_resolve_address_ares_request* r =
|
724
|
+
static_cast<grpc_resolve_address_ares_request*>(arg);
|
725
|
+
r->combiner->Run(GRPC_CLOSURE_INIT(&r->on_dns_lookup_done_locked,
|
726
|
+
on_dns_lookup_done_locked, r, nullptr),
|
727
|
+
GRPC_ERROR_REF(error));
|
728
|
+
}
|
729
|
+
|
722
730
|
static void grpc_resolve_address_invoke_dns_lookup_ares_locked(
|
723
|
-
void* arg, grpc_error* unused_error) {
|
731
|
+
void* arg, grpc_error* /*unused_error*/) {
|
724
732
|
grpc_resolve_address_ares_request* r =
|
725
733
|
static_cast<grpc_resolve_address_ares_request*>(arg);
|
734
|
+
GRPC_CLOSURE_INIT(&r->on_dns_lookup_done_locked, on_dns_lookup_done, r,
|
735
|
+
grpc_schedule_on_exec_ctx);
|
726
736
|
r->ares_request = grpc_dns_lookup_ares_locked(
|
727
737
|
nullptr /* dns_server */, r->name, r->default_port, r->interested_parties,
|
728
738
|
&r->on_dns_lookup_done_locked, &r->addresses, false /* check_grpclb */,
|
@@ -740,14 +750,12 @@ static void grpc_resolve_address_ares_impl(const char* name,
|
|
740
750
|
r->combiner = grpc_combiner_create();
|
741
751
|
r->addrs_out = addrs;
|
742
752
|
r->on_resolve_address_done = on_done;
|
743
|
-
GRPC_CLOSURE_INIT(&r->on_dns_lookup_done_locked, on_dns_lookup_done_locked, r,
|
744
|
-
grpc_combiner_scheduler(r->combiner));
|
745
753
|
r->name = name;
|
746
754
|
r->default_port = default_port;
|
747
755
|
r->interested_parties = interested_parties;
|
748
|
-
|
756
|
+
r->combiner->Run(
|
749
757
|
GRPC_CLOSURE_CREATE(grpc_resolve_address_invoke_dns_lookup_ares_locked, r,
|
750
|
-
|
758
|
+
nullptr),
|
751
759
|
GRPC_ERROR_NONE);
|
752
760
|
}
|
753
761
|
|