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
@@ -25,9 +25,36 @@
|
|
25
25
|
|
26
26
|
#include <grpc/support/atm.h>
|
27
27
|
#include "src/core/lib/debug/trace.h"
|
28
|
-
#include "src/core/lib/gpr/mpscq.h"
|
29
28
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
30
29
|
|
30
|
+
namespace grpc_core {
|
31
|
+
// TODO(yashkt) : Remove this class and replace it with a class that does not
|
32
|
+
// use ExecCtx
|
33
|
+
class Combiner {
|
34
|
+
public:
|
35
|
+
void Run(grpc_closure* closure, grpc_error* error);
|
36
|
+
// TODO(yashkt) : Remove this method
|
37
|
+
void FinallyRun(grpc_closure* closure, grpc_error* error);
|
38
|
+
Combiner* next_combiner_on_this_exec_ctx = nullptr;
|
39
|
+
grpc_closure_scheduler scheduler;
|
40
|
+
grpc_closure_scheduler finally_scheduler;
|
41
|
+
MultiProducerSingleConsumerQueue queue;
|
42
|
+
// either:
|
43
|
+
// a pointer to the initiating exec ctx if that is the only exec_ctx that has
|
44
|
+
// ever queued to this combiner, or NULL. If this is non-null, it's not
|
45
|
+
// dereferencable (since the initiating exec_ctx may have gone out of scope)
|
46
|
+
gpr_atm initiating_exec_ctx_or_null;
|
47
|
+
// state is:
|
48
|
+
// lower bit - zero if orphaned (STATE_UNORPHANED)
|
49
|
+
// other bits - number of items queued on the lock (STATE_ELEM_COUNT_LOW_BIT)
|
50
|
+
gpr_atm state;
|
51
|
+
bool time_to_execute_final_list = false;
|
52
|
+
grpc_closure_list final_list;
|
53
|
+
grpc_closure offload;
|
54
|
+
gpr_refcount refs;
|
55
|
+
};
|
56
|
+
} // namespace grpc_core
|
57
|
+
|
31
58
|
// Provides serialized access to some resource.
|
32
59
|
// Each action queued on a combiner is executed serially in a borrowed thread.
|
33
60
|
// The actual thread executing actions may change over time (but there will only
|
@@ -35,7 +62,7 @@
|
|
35
62
|
|
36
63
|
// Initialize the lock, with an optional workqueue to shift load to when
|
37
64
|
// necessary
|
38
|
-
|
65
|
+
grpc_core::Combiner* grpc_combiner_create(void);
|
39
66
|
|
40
67
|
#ifndef NDEBUG
|
41
68
|
#define GRPC_COMBINER_DEBUG_ARGS \
|
@@ -52,12 +79,9 @@ grpc_combiner* grpc_combiner_create(void);
|
|
52
79
|
|
53
80
|
// Ref/unref the lock, for when we're sharing the lock ownership
|
54
81
|
// Prefer to use the macros above
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
grpc_closure_scheduler* grpc_combiner_scheduler(grpc_combiner* lock);
|
59
|
-
// Scheduler to execute \a action within the lock just prior to unlocking.
|
60
|
-
grpc_closure_scheduler* grpc_combiner_finally_scheduler(grpc_combiner* lock);
|
82
|
+
grpc_core::Combiner* grpc_combiner_ref(
|
83
|
+
grpc_core::Combiner* lock GRPC_COMBINER_DEBUG_ARGS);
|
84
|
+
void grpc_combiner_unref(grpc_core::Combiner* lock GRPC_COMBINER_DEBUG_ARGS);
|
61
85
|
|
62
86
|
bool grpc_combiner_continue_exec_ctx();
|
63
87
|
|
@@ -261,10 +261,12 @@ static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
|
261
261
|
ep_impl->read_cb = cb;
|
262
262
|
ep_impl->read_slices = slices;
|
263
263
|
grpc_slice_buffer_reset_and_unref_internal(slices);
|
264
|
-
grpc_resource_user_alloc_slices(&ep_impl->slice_allocator,
|
265
|
-
GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
|
266
|
-
ep_impl->read_slices);
|
267
264
|
EP_REF(ep_impl, "read");
|
265
|
+
if (grpc_resource_user_alloc_slices(&ep_impl->slice_allocator,
|
266
|
+
GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
|
267
|
+
ep_impl->read_slices)) {
|
268
|
+
ep_impl->stream_sync->NotifyOnRead(&ep_impl->read_action);
|
269
|
+
}
|
268
270
|
}
|
269
271
|
|
270
272
|
static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
@@ -658,7 +658,7 @@ static int poll_deadline_to_millis_timeout(grpc_millis millis) {
|
|
658
658
|
NOTE ON SYNCRHONIZATION: Similar to do_epoll_wait(), this function is only
|
659
659
|
called by g_active_poller thread. So there is no need for synchronization
|
660
660
|
when accessing fields in g_epoll_set */
|
661
|
-
static grpc_error* process_epoll_events(grpc_pollset* pollset) {
|
661
|
+
static grpc_error* process_epoll_events(grpc_pollset* /*pollset*/) {
|
662
662
|
GPR_TIMER_SCOPE("process_epoll_events", 0);
|
663
663
|
|
664
664
|
static const char* err_desc = "process_events";
|
@@ -1219,7 +1219,7 @@ done:
|
|
1219
1219
|
return ret_err;
|
1220
1220
|
}
|
1221
1221
|
|
1222
|
-
static void pollset_add_fd(grpc_pollset* pollset
|
1222
|
+
static void pollset_add_fd(grpc_pollset* /*pollset*/, grpc_fd* /*fd*/) {}
|
1223
1223
|
|
1224
1224
|
/*******************************************************************************
|
1225
1225
|
* Pollset-set Definitions
|
@@ -1229,21 +1229,23 @@ static grpc_pollset_set* pollset_set_create(void) {
|
|
1229
1229
|
return (grpc_pollset_set*)(static_cast<intptr_t>(0xdeafbeef));
|
1230
1230
|
}
|
1231
1231
|
|
1232
|
-
static void pollset_set_destroy(grpc_pollset_set* pss) {}
|
1232
|
+
static void pollset_set_destroy(grpc_pollset_set* /*pss*/) {}
|
1233
1233
|
|
1234
|
-
static void pollset_set_add_fd(grpc_pollset_set* pss
|
1234
|
+
static void pollset_set_add_fd(grpc_pollset_set* /*pss*/, grpc_fd* /*fd*/) {}
|
1235
1235
|
|
1236
|
-
static void pollset_set_del_fd(grpc_pollset_set* pss
|
1236
|
+
static void pollset_set_del_fd(grpc_pollset_set* /*pss*/, grpc_fd* /*fd*/) {}
|
1237
1237
|
|
1238
|
-
static void pollset_set_add_pollset(grpc_pollset_set* pss
|
1238
|
+
static void pollset_set_add_pollset(grpc_pollset_set* /*pss*/,
|
1239
|
+
grpc_pollset* /*ps*/) {}
|
1239
1240
|
|
1240
|
-
static void pollset_set_del_pollset(grpc_pollset_set* pss
|
1241
|
+
static void pollset_set_del_pollset(grpc_pollset_set* /*pss*/,
|
1242
|
+
grpc_pollset* /*ps*/) {}
|
1241
1243
|
|
1242
|
-
static void pollset_set_add_pollset_set(grpc_pollset_set* bag
|
1243
|
-
grpc_pollset_set* item) {}
|
1244
|
+
static void pollset_set_add_pollset_set(grpc_pollset_set* /*bag*/,
|
1245
|
+
grpc_pollset_set* /*item*/) {}
|
1244
1246
|
|
1245
|
-
static void pollset_set_del_pollset_set(grpc_pollset_set* bag
|
1246
|
-
grpc_pollset_set* item) {}
|
1247
|
+
static void pollset_set_del_pollset_set(grpc_pollset_set* /*bag*/,
|
1248
|
+
grpc_pollset_set* /*item*/) {}
|
1247
1249
|
|
1248
1250
|
/*******************************************************************************
|
1249
1251
|
* Event engine binding
|
@@ -1253,8 +1255,8 @@ static bool is_any_background_poller_thread(void) { return false; }
|
|
1253
1255
|
|
1254
1256
|
static void shutdown_background_closure(void) {}
|
1255
1257
|
|
1256
|
-
static bool add_closure_to_background_poller(grpc_closure* closure
|
1257
|
-
grpc_error* error) {
|
1258
|
+
static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
|
1259
|
+
grpc_error* /*error*/) {
|
1258
1260
|
return false;
|
1259
1261
|
}
|
1260
1262
|
|
@@ -1325,7 +1327,8 @@ static void reset_event_manager_on_fork() {
|
|
1325
1327
|
/* It is possible that GLIBC has epoll but the underlying kernel doesn't.
|
1326
1328
|
* Create epoll_fd (epoll_set_init() takes care of that) to make sure epoll
|
1327
1329
|
* support is available */
|
1328
|
-
const grpc_event_engine_vtable* grpc_init_epoll1_linux(
|
1330
|
+
const grpc_event_engine_vtable* grpc_init_epoll1_linux(
|
1331
|
+
bool /*explicit_request*/) {
|
1329
1332
|
if (!grpc_has_wakeup_fd()) {
|
1330
1333
|
gpr_log(GPR_ERROR, "Skipping epoll1 because of no wakeup fd.");
|
1331
1334
|
return nullptr;
|
@@ -1356,7 +1359,8 @@ const grpc_event_engine_vtable* grpc_init_epoll1_linux(bool explicit_request) {
|
|
1356
1359
|
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
|
1357
1360
|
/* If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
|
1358
1361
|
* NULL */
|
1359
|
-
const grpc_event_engine_vtable* grpc_init_epoll1_linux(
|
1362
|
+
const grpc_event_engine_vtable* grpc_init_epoll1_linux(
|
1363
|
+
bool /*explicit_request*/) {
|
1360
1364
|
return nullptr;
|
1361
1365
|
}
|
1362
1366
|
#endif /* defined(GRPC_POSIX_SOCKET_EV_EPOLL1) */
|
@@ -1379,7 +1379,9 @@ static void reset_event_manager_on_fork() {
|
|
1379
1379
|
gpr_mu_lock(&fork_fd_list_mu);
|
1380
1380
|
while (fork_fd_list_head != nullptr) {
|
1381
1381
|
if (fork_fd_list_head->fd != nullptr) {
|
1382
|
-
|
1382
|
+
if (!fork_fd_list_head->fd->closed) {
|
1383
|
+
close(fork_fd_list_head->fd->fd);
|
1384
|
+
}
|
1383
1385
|
fork_fd_list_head->fd->fd = -1;
|
1384
1386
|
} else {
|
1385
1387
|
close(fork_fd_list_head->cached_wakeup_fd->fd.read_fd);
|
@@ -63,6 +63,7 @@ grpc_millis grpc_cycle_counter_to_millis_round_down(gpr_cycle_counter cycles);
|
|
63
63
|
grpc_millis grpc_cycle_counter_to_millis_round_up(gpr_cycle_counter cycles);
|
64
64
|
|
65
65
|
namespace grpc_core {
|
66
|
+
class Combiner;
|
66
67
|
/** Execution context.
|
67
68
|
* A bag of data that collects information along a callstack.
|
68
69
|
* It is created on the stack at core entry points (public API or iomgr), and
|
@@ -136,9 +137,9 @@ class ExecCtx {
|
|
136
137
|
|
137
138
|
struct CombinerData {
|
138
139
|
/* currently active combiner: updated only via combiner.c */
|
139
|
-
|
140
|
+
Combiner* active_combiner;
|
140
141
|
/* last active combiner in the active combiner list */
|
141
|
-
|
142
|
+
Combiner* last_combiner;
|
142
143
|
};
|
143
144
|
|
144
145
|
/** Only to be used by grpc-combiner code */
|
@@ -225,7 +226,7 @@ class ExecCtx {
|
|
225
226
|
virtual bool CheckReadyToFinish() { return false; }
|
226
227
|
|
227
228
|
/** Disallow delete on ExecCtx. */
|
228
|
-
static void operator delete(void* p) { abort(); }
|
229
|
+
static void operator delete(void* /* p */) { abort(); }
|
229
230
|
|
230
231
|
private:
|
231
232
|
/** Set exec_ctx_ to exec_ctx. */
|
@@ -164,7 +164,6 @@ void Executor::SetThreading(bool threading) {
|
|
164
164
|
|
165
165
|
GPR_ASSERT(num_threads_ == 0);
|
166
166
|
gpr_atm_rel_store(&num_threads_, 1);
|
167
|
-
gpr_tls_init(&g_this_thread_state);
|
168
167
|
thd_state_ = static_cast<ThreadState*>(
|
169
168
|
gpr_zalloc(sizeof(ThreadState) * max_threads_));
|
170
169
|
|
@@ -213,7 +212,6 @@ void Executor::SetThreading(bool threading) {
|
|
213
212
|
}
|
214
213
|
|
215
214
|
gpr_free(thd_state_);
|
216
|
-
gpr_tls_destroy(&g_this_thread_state);
|
217
215
|
|
218
216
|
// grpc_iomgr_shutdown_background_closure() will close all the registered
|
219
217
|
// fds in the background poller, and wait for all pending closures to
|
@@ -264,6 +262,8 @@ void Executor::ThreadMain(void* arg) {
|
|
264
262
|
grpc_core::ExecCtx::Get()->InvalidateNow();
|
265
263
|
subtract_depth = RunClosures(ts->name, closures);
|
266
264
|
}
|
265
|
+
|
266
|
+
gpr_tls_set(&g_this_thread_state, reinterpret_cast<intptr_t>(nullptr));
|
267
267
|
}
|
268
268
|
|
269
269
|
void Executor::Enqueue(grpc_closure* closure, grpc_error* error,
|
@@ -485,4 +485,6 @@ void Executor::SetThreadingDefault(bool enable) {
|
|
485
485
|
executors[static_cast<size_t>(ExecutorType::DEFAULT)]->SetThreading(enable);
|
486
486
|
}
|
487
487
|
|
488
|
+
void grpc_executor_global_init() { gpr_tls_init(&g_this_thread_state); }
|
489
|
+
|
488
490
|
} // namespace grpc_core
|
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include "src/core/lib/debug/stats.h"
|
25
|
-
#include "src/core/lib/gprpp/abstract.h"
|
26
25
|
#include "src/core/lib/gprpp/atomic.h"
|
27
26
|
#include "src/core/lib/gprpp/sync.h"
|
28
27
|
|
@@ -38,17 +37,15 @@ class MPMCQueueInterface {
|
|
38
37
|
|
39
38
|
// Puts elem into queue immediately at the end of queue.
|
40
39
|
// This might cause to block on full queue depending on implementation.
|
41
|
-
virtual void Put(void* elem)
|
40
|
+
virtual void Put(void* elem) = 0;
|
42
41
|
|
43
42
|
// Removes the oldest element from the queue and return it.
|
44
43
|
// This might cause to block on empty queue depending on implementation.
|
45
44
|
// Optional argument for collecting stats purpose.
|
46
|
-
virtual void* Get(gpr_timespec* wait_time = nullptr)
|
45
|
+
virtual void* Get(gpr_timespec* wait_time = nullptr) = 0;
|
47
46
|
|
48
47
|
// Returns number of elements in the queue currently
|
49
|
-
virtual int count() const
|
50
|
-
|
51
|
-
GRPC_ABSTRACT_BASE_CLASS
|
48
|
+
virtual int count() const = 0;
|
52
49
|
};
|
53
50
|
|
54
51
|
class InfLenFIFOQueue : public MPMCQueueInterface {
|
@@ -58,8 +58,7 @@ void ThreadPool::SharedThreadPoolConstructor() {
|
|
58
58
|
threads_ = static_cast<ThreadPoolWorker**>(
|
59
59
|
gpr_zalloc(num_threads_ * sizeof(ThreadPoolWorker*)));
|
60
60
|
for (int i = 0; i < num_threads_; ++i) {
|
61
|
-
threads_[i] =
|
62
|
-
New<ThreadPoolWorker>(thd_name_, this, queue_, thread_options_, i);
|
61
|
+
threads_[i] = New<ThreadPoolWorker>(thd_name_, queue_, thread_options_, i);
|
63
62
|
threads_[i]->Start();
|
64
63
|
}
|
65
64
|
}
|
@@ -43,31 +43,27 @@ class ThreadPoolInterface {
|
|
43
43
|
// current thread to be blocked (in case of unable to schedule).
|
44
44
|
// Closure should contain a function pointer and arguments it will take, more
|
45
45
|
// details for closure struct at /grpc/include/grpc/impl/codegen/grpc_types.h
|
46
|
-
virtual void Add(grpc_experimental_completion_queue_functor* closure)
|
47
|
-
GRPC_ABSTRACT;
|
46
|
+
virtual void Add(grpc_experimental_completion_queue_functor* closure) = 0;
|
48
47
|
|
49
48
|
// Returns the current number of pending closures
|
50
|
-
virtual int num_pending_closures() const
|
49
|
+
virtual int num_pending_closures() const = 0;
|
51
50
|
|
52
51
|
// Returns the capacity of pool (number of worker threads in pool)
|
53
|
-
virtual int pool_capacity() const
|
52
|
+
virtual int pool_capacity() const = 0;
|
54
53
|
|
55
54
|
// Thread option accessor
|
56
|
-
virtual const Thread::Options& thread_options() const
|
55
|
+
virtual const Thread::Options& thread_options() const = 0;
|
57
56
|
|
58
57
|
// Returns the thread name for threads in this ThreadPool.
|
59
|
-
virtual const char* thread_name() const
|
60
|
-
|
61
|
-
GRPC_ABSTRACT_BASE_CLASS
|
58
|
+
virtual const char* thread_name() const = 0;
|
62
59
|
};
|
63
60
|
|
64
61
|
// Worker thread for threadpool. Executes closures in the queue, until getting a
|
65
62
|
// NULL closure.
|
66
63
|
class ThreadPoolWorker {
|
67
64
|
public:
|
68
|
-
ThreadPoolWorker(const char* thd_name,
|
69
|
-
|
70
|
-
int index)
|
65
|
+
ThreadPoolWorker(const char* thd_name, MPMCQueueInterface* queue,
|
66
|
+
Thread::Options& options, int index)
|
71
67
|
: queue_(queue), thd_name_(thd_name), index_(index) {
|
72
68
|
thd_ = Thread(thd_name,
|
73
69
|
[](void* th) { static_cast<ThreadPoolWorker*>(th)->Run(); },
|
@@ -132,7 +132,7 @@ struct grpc_resource_quota {
|
|
132
132
|
|
133
133
|
/* Master combiner lock: all activity on a quota executes under this combiner
|
134
134
|
* (so no mutex is needed for this data structure) */
|
135
|
-
|
135
|
+
grpc_core::Combiner* combiner;
|
136
136
|
/* Size of the resource quota */
|
137
137
|
int64_t size;
|
138
138
|
/* Amount of free memory in the resource quota */
|
@@ -293,7 +293,8 @@ static void rq_step_sched(grpc_resource_quota* resource_quota) {
|
|
293
293
|
if (resource_quota->step_scheduled) return;
|
294
294
|
resource_quota->step_scheduled = true;
|
295
295
|
grpc_resource_quota_ref_internal(resource_quota);
|
296
|
-
|
296
|
+
resource_quota->combiner->FinallyRun(&resource_quota->rq_step_closure,
|
297
|
+
GRPC_ERROR_NONE);
|
297
298
|
}
|
298
299
|
|
299
300
|
/* update the atomically available resource estimate - use no barriers since
|
@@ -583,16 +584,19 @@ static void ru_destroy(void* ru, grpc_error* error) {
|
|
583
584
|
gpr_free(resource_user);
|
584
585
|
}
|
585
586
|
|
587
|
+
static void ru_alloc_slices(
|
588
|
+
grpc_resource_user_slice_allocator* slice_allocator) {
|
589
|
+
for (size_t i = 0; i < slice_allocator->count; i++) {
|
590
|
+
grpc_slice_buffer_add_indexed(
|
591
|
+
slice_allocator->dest, ru_slice_create(slice_allocator->resource_user,
|
592
|
+
slice_allocator->length));
|
593
|
+
}
|
594
|
+
}
|
595
|
+
|
586
596
|
static void ru_allocated_slices(void* arg, grpc_error* error) {
|
587
597
|
grpc_resource_user_slice_allocator* slice_allocator =
|
588
598
|
static_cast<grpc_resource_user_slice_allocator*>(arg);
|
589
|
-
if (error == GRPC_ERROR_NONE)
|
590
|
-
for (size_t i = 0; i < slice_allocator->count; i++) {
|
591
|
-
grpc_slice_buffer_add_indexed(
|
592
|
-
slice_allocator->dest, ru_slice_create(slice_allocator->resource_user,
|
593
|
-
slice_allocator->length));
|
594
|
-
}
|
595
|
-
}
|
599
|
+
if (error == GRPC_ERROR_NONE) ru_alloc_slices(slice_allocator);
|
596
600
|
GRPC_CLOSURE_RUN(&slice_allocator->on_done, GRPC_ERROR_REF(error));
|
597
601
|
}
|
598
602
|
|
@@ -652,10 +656,9 @@ grpc_resource_quota* grpc_resource_quota_create(const char* name) {
|
|
652
656
|
(intptr_t)resource_quota);
|
653
657
|
}
|
654
658
|
GRPC_CLOSURE_INIT(&resource_quota->rq_step_closure, rq_step, resource_quota,
|
655
|
-
|
659
|
+
nullptr);
|
656
660
|
GRPC_CLOSURE_INIT(&resource_quota->rq_reclamation_done_closure,
|
657
|
-
rq_reclamation_done, resource_quota,
|
658
|
-
grpc_combiner_scheduler(resource_quota->combiner));
|
661
|
+
rq_reclamation_done, resource_quota, nullptr);
|
659
662
|
for (int i = 0; i < GRPC_RULIST_COUNT; i++) {
|
660
663
|
resource_quota->roots[i] = nullptr;
|
661
664
|
}
|
@@ -771,19 +774,15 @@ grpc_resource_user* grpc_resource_user_create(
|
|
771
774
|
resource_user->resource_quota =
|
772
775
|
grpc_resource_quota_ref_internal(resource_quota);
|
773
776
|
GRPC_CLOSURE_INIT(&resource_user->allocate_closure, &ru_allocate,
|
774
|
-
resource_user,
|
775
|
-
grpc_combiner_scheduler(resource_quota->combiner));
|
777
|
+
resource_user, nullptr);
|
776
778
|
GRPC_CLOSURE_INIT(&resource_user->add_to_free_pool_closure,
|
777
|
-
&ru_add_to_free_pool, resource_user,
|
778
|
-
grpc_combiner_scheduler(resource_quota->combiner));
|
779
|
+
&ru_add_to_free_pool, resource_user, nullptr);
|
779
780
|
GRPC_CLOSURE_INIT(&resource_user->post_reclaimer_closure[0],
|
780
|
-
&ru_post_benign_reclaimer, resource_user,
|
781
|
-
grpc_combiner_scheduler(resource_quota->combiner));
|
781
|
+
&ru_post_benign_reclaimer, resource_user, nullptr);
|
782
782
|
GRPC_CLOSURE_INIT(&resource_user->post_reclaimer_closure[1],
|
783
|
-
&ru_post_destructive_reclaimer, resource_user,
|
784
|
-
grpc_combiner_scheduler(resource_quota->combiner));
|
783
|
+
&ru_post_destructive_reclaimer, resource_user, nullptr);
|
785
784
|
GRPC_CLOSURE_INIT(&resource_user->destroy_closure, &ru_destroy, resource_user,
|
786
|
-
|
785
|
+
nullptr);
|
787
786
|
gpr_mu_init(&resource_user->mu);
|
788
787
|
gpr_atm_rel_store(&resource_user->refs, 1);
|
789
788
|
gpr_atm_rel_store(&resource_user->shutdown, 0);
|
@@ -824,7 +823,8 @@ static void ru_unref_by(grpc_resource_user* resource_user, gpr_atm amount) {
|
|
824
823
|
gpr_atm old = gpr_atm_full_fetch_add(&resource_user->refs, -amount);
|
825
824
|
GPR_ASSERT(old >= amount);
|
826
825
|
if (old == amount) {
|
827
|
-
|
826
|
+
resource_user->resource_quota->combiner->Run(
|
827
|
+
&resource_user->destroy_closure, GRPC_ERROR_NONE);
|
828
828
|
}
|
829
829
|
}
|
830
830
|
|
@@ -838,10 +838,8 @@ void grpc_resource_user_unref(grpc_resource_user* resource_user) {
|
|
838
838
|
|
839
839
|
void grpc_resource_user_shutdown(grpc_resource_user* resource_user) {
|
840
840
|
if (gpr_atm_full_fetch_add(&resource_user->shutdown, 1) == 0) {
|
841
|
-
|
842
|
-
GRPC_CLOSURE_CREATE(
|
843
|
-
ru_shutdown, resource_user,
|
844
|
-
grpc_combiner_scheduler(resource_user->resource_quota->combiner)),
|
841
|
+
resource_user->resource_quota->combiner->Run(
|
842
|
+
GRPC_CLOSURE_CREATE(ru_shutdown, resource_user, nullptr),
|
845
843
|
GRPC_ERROR_NONE);
|
846
844
|
}
|
847
845
|
}
|
@@ -880,7 +878,7 @@ void grpc_resource_user_free_threads(grpc_resource_user* resource_user,
|
|
880
878
|
gpr_mu_unlock(&resource_user->resource_quota->thread_count_mu);
|
881
879
|
}
|
882
880
|
|
883
|
-
static
|
881
|
+
static bool resource_user_alloc_locked(grpc_resource_user* resource_user,
|
884
882
|
size_t size,
|
885
883
|
grpc_closure* optional_on_done) {
|
886
884
|
ru_ref_by(resource_user, static_cast<gpr_atm>(size));
|
@@ -890,19 +888,19 @@ static void resource_user_alloc_locked(grpc_resource_user* resource_user,
|
|
890
888
|
resource_user->resource_quota->name, resource_user->name, size,
|
891
889
|
resource_user->free_pool);
|
892
890
|
}
|
893
|
-
if (resource_user->free_pool
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
if (!resource_user->allocating) {
|
900
|
-
resource_user->allocating = true;
|
901
|
-
GRPC_CLOSURE_SCHED(&resource_user->allocate_closure, GRPC_ERROR_NONE);
|
902
|
-
}
|
903
|
-
} else {
|
904
|
-
GRPC_CLOSURE_SCHED(optional_on_done, GRPC_ERROR_NONE);
|
891
|
+
if (GPR_LIKELY(resource_user->free_pool >= 0)) return true;
|
892
|
+
// Slow path: We need to wait for the free pool to refill.
|
893
|
+
if (optional_on_done != nullptr) {
|
894
|
+
resource_user->outstanding_allocations += static_cast<int64_t>(size);
|
895
|
+
grpc_closure_list_append(&resource_user->on_allocated, optional_on_done,
|
896
|
+
GRPC_ERROR_NONE);
|
905
897
|
}
|
898
|
+
if (!resource_user->allocating) {
|
899
|
+
resource_user->allocating = true;
|
900
|
+
resource_user->resource_quota->combiner->Run(
|
901
|
+
&resource_user->allocate_closure, GRPC_ERROR_NONE);
|
902
|
+
}
|
903
|
+
return false;
|
906
904
|
}
|
907
905
|
|
908
906
|
bool grpc_resource_user_safe_alloc(grpc_resource_user* resource_user,
|
@@ -926,15 +924,17 @@ bool grpc_resource_user_safe_alloc(grpc_resource_user* resource_user,
|
|
926
924
|
return true;
|
927
925
|
}
|
928
926
|
|
929
|
-
|
927
|
+
bool grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size,
|
930
928
|
grpc_closure* optional_on_done) {
|
931
929
|
// TODO(juanlishen): Maybe return immediately if shutting down. Deferring this
|
932
930
|
// because some tests become flaky after the change.
|
933
931
|
gpr_mu_lock(&resource_user->mu);
|
934
932
|
grpc_resource_quota* resource_quota = resource_user->resource_quota;
|
935
933
|
gpr_atm_no_barrier_fetch_add(&resource_quota->used, size);
|
936
|
-
|
934
|
+
const bool ret =
|
935
|
+
resource_user_alloc_locked(resource_user, size, optional_on_done);
|
937
936
|
gpr_mu_unlock(&resource_user->mu);
|
937
|
+
return ret;
|
938
938
|
}
|
939
939
|
|
940
940
|
void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) {
|
@@ -953,8 +953,8 @@ void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) {
|
|
953
953
|
if (is_bigger_than_zero && was_zero_or_negative &&
|
954
954
|
!resource_user->added_to_free_pool) {
|
955
955
|
resource_user->added_to_free_pool = true;
|
956
|
-
|
957
|
-
|
956
|
+
resource_quota->combiner->Run(&resource_user->add_to_free_pool_closure,
|
957
|
+
GRPC_ERROR_NONE);
|
958
958
|
}
|
959
959
|
gpr_mu_unlock(&resource_user->mu);
|
960
960
|
ru_unref_by(resource_user, static_cast<gpr_atm>(size));
|
@@ -965,8 +965,8 @@ void grpc_resource_user_post_reclaimer(grpc_resource_user* resource_user,
|
|
965
965
|
grpc_closure* closure) {
|
966
966
|
GPR_ASSERT(resource_user->new_reclaimers[destructive] == nullptr);
|
967
967
|
resource_user->new_reclaimers[destructive] = closure;
|
968
|
-
|
969
|
-
|
968
|
+
resource_user->resource_quota->combiner->Run(
|
969
|
+
&resource_user->post_reclaimer_closure[destructive], GRPC_ERROR_NONE);
|
970
970
|
}
|
971
971
|
|
972
972
|
void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user) {
|
@@ -974,7 +974,7 @@ void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user) {
|
|
974
974
|
gpr_log(GPR_INFO, "RQ %s %s: reclamation complete",
|
975
975
|
resource_user->resource_quota->name, resource_user->name);
|
976
976
|
}
|
977
|
-
|
977
|
+
resource_user->resource_quota->combiner->Run(
|
978
978
|
&resource_user->resource_quota->rq_reclamation_done_closure,
|
979
979
|
GRPC_ERROR_NONE);
|
980
980
|
}
|
@@ -989,18 +989,22 @@ void grpc_resource_user_slice_allocator_init(
|
|
989
989
|
slice_allocator->resource_user = resource_user;
|
990
990
|
}
|
991
991
|
|
992
|
-
|
992
|
+
bool grpc_resource_user_alloc_slices(
|
993
993
|
grpc_resource_user_slice_allocator* slice_allocator, size_t length,
|
994
994
|
size_t count, grpc_slice_buffer* dest) {
|
995
|
-
if (
|
995
|
+
if (GPR_UNLIKELY(
|
996
|
+
gpr_atm_no_barrier_load(&slice_allocator->resource_user->shutdown))) {
|
996
997
|
GRPC_CLOSURE_SCHED(
|
997
998
|
&slice_allocator->on_allocated,
|
998
999
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource user shutdown"));
|
999
|
-
return;
|
1000
|
+
return false;
|
1000
1001
|
}
|
1001
1002
|
slice_allocator->length = length;
|
1002
1003
|
slice_allocator->count = count;
|
1003
1004
|
slice_allocator->dest = dest;
|
1004
|
-
|
1005
|
-
|
1005
|
+
const bool ret =
|
1006
|
+
grpc_resource_user_alloc(slice_allocator->resource_user, count * length,
|
1007
|
+
&slice_allocator->on_allocated);
|
1008
|
+
if (ret) ru_alloc_slices(slice_allocator);
|
1009
|
+
return ret;
|
1006
1010
|
}
|