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
@@ -0,0 +1,33 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2017 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_LIB_GPRPP_SET_H
|
18
|
+
#define GRPC_CORE_LIB_GPRPP_SET_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <set>
|
23
|
+
|
24
|
+
#include "src/core/lib/gprpp/memory.h"
|
25
|
+
|
26
|
+
namespace grpc_core {
|
27
|
+
|
28
|
+
template <typename T, typename Compare = std::less<T>>
|
29
|
+
using Set = std::set<T, Compare, Allocator<T>>;
|
30
|
+
|
31
|
+
} // namespace grpc_core
|
32
|
+
|
33
|
+
#endif /* GRPC_CORE_LIB_GPRPP_SET_H */
|
data/src/core/lib/gprpp/thd.h
CHANGED
@@ -28,7 +28,6 @@
|
|
28
28
|
#include <grpc/support/thd_id.h>
|
29
29
|
#include <grpc/support/time.h>
|
30
30
|
|
31
|
-
#include "src/core/lib/gprpp/abstract.h"
|
32
31
|
#include "src/core/lib/gprpp/memory.h"
|
33
32
|
|
34
33
|
namespace grpc_core {
|
@@ -38,9 +37,8 @@ namespace internal {
|
|
38
37
|
class ThreadInternalsInterface {
|
39
38
|
public:
|
40
39
|
virtual ~ThreadInternalsInterface() {}
|
41
|
-
virtual void Start()
|
42
|
-
virtual void Join()
|
43
|
-
GRPC_ABSTRACT_BASE_CLASS
|
40
|
+
virtual void Start() = 0;
|
41
|
+
virtual void Join() = 0;
|
44
42
|
};
|
45
43
|
|
46
44
|
} // namespace internal
|
@@ -66,7 +66,7 @@ static grpc_httpcli_get_override g_get_override = nullptr;
|
|
66
66
|
static grpc_httpcli_post_override g_post_override = nullptr;
|
67
67
|
|
68
68
|
static void plaintext_handshake(void* arg, grpc_endpoint* endpoint,
|
69
|
-
const char* host
|
69
|
+
const char* /*host*/, grpc_millis /*deadline*/,
|
70
70
|
void (*on_done)(void* arg,
|
71
71
|
grpc_endpoint* endpoint)) {
|
72
72
|
on_done(arg, endpoint);
|
@@ -41,7 +41,7 @@
|
|
41
41
|
class grpc_httpcli_ssl_channel_security_connector final
|
42
42
|
: public grpc_channel_security_connector {
|
43
43
|
public:
|
44
|
-
|
44
|
+
grpc_httpcli_ssl_channel_security_connector(char* secure_peer_name)
|
45
45
|
: grpc_channel_security_connector(
|
46
46
|
/*url_scheme=*/nullptr,
|
47
47
|
/*channel_creds=*/nullptr,
|
@@ -66,7 +66,8 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
66
66
|
&options, &handshaker_factory_);
|
67
67
|
}
|
68
68
|
|
69
|
-
void add_handshakers(
|
69
|
+
void add_handshakers(const grpc_channel_args* args,
|
70
|
+
grpc_pollset_set* /*interested_parties*/,
|
70
71
|
grpc_core::HandshakeManager* handshake_mgr) override {
|
71
72
|
tsi_handshaker* handshaker = nullptr;
|
72
73
|
if (handshaker_factory_ != nullptr) {
|
@@ -77,14 +78,15 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
77
78
|
tsi_result_to_string(result));
|
78
79
|
}
|
79
80
|
}
|
80
|
-
handshake_mgr->Add(
|
81
|
+
handshake_mgr->Add(
|
82
|
+
grpc_core::SecurityHandshakerCreate(handshaker, this, args));
|
81
83
|
}
|
82
84
|
|
83
85
|
tsi_ssl_client_handshaker_factory* handshaker_factory() const {
|
84
86
|
return handshaker_factory_;
|
85
87
|
}
|
86
88
|
|
87
|
-
void check_peer(tsi_peer peer, grpc_endpoint* ep
|
89
|
+
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
|
88
90
|
grpc_core::RefCountedPtr<grpc_auth_context>* /*auth_context*/,
|
89
91
|
grpc_closure* on_peer_checked) override {
|
90
92
|
grpc_error* error = GRPC_ERROR_NONE;
|
@@ -109,15 +111,15 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
109
111
|
return strcmp(secure_peer_name_, other->secure_peer_name_);
|
110
112
|
}
|
111
113
|
|
112
|
-
bool check_call_host(grpc_core::StringView host
|
113
|
-
grpc_auth_context* auth_context
|
114
|
-
grpc_closure* on_call_host_checked
|
114
|
+
bool check_call_host(grpc_core::StringView /*host*/,
|
115
|
+
grpc_auth_context* /*auth_context*/,
|
116
|
+
grpc_closure* /*on_call_host_checked*/,
|
115
117
|
grpc_error** error) override {
|
116
118
|
*error = GRPC_ERROR_NONE;
|
117
119
|
return true;
|
118
120
|
}
|
119
121
|
|
120
|
-
void cancel_check_call_host(grpc_closure* on_call_host_checked
|
122
|
+
void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
|
121
123
|
grpc_error* error) override {
|
122
124
|
GRPC_ERROR_UNREF(error);
|
123
125
|
}
|
@@ -132,7 +134,7 @@ class grpc_httpcli_ssl_channel_security_connector final
|
|
132
134
|
static grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
133
135
|
httpcli_ssl_channel_security_connector_create(
|
134
136
|
const char* pem_root_certs, const tsi_ssl_root_certs_store* root_store,
|
135
|
-
const char* secure_peer_name) {
|
137
|
+
const char* secure_peer_name, grpc_channel_args* /*channel_args*/) {
|
136
138
|
if (secure_peer_name != nullptr && pem_root_certs == nullptr) {
|
137
139
|
gpr_log(GPR_ERROR,
|
138
140
|
"Cannot assert a secure peer name without a trust root.");
|
@@ -192,8 +194,10 @@ static void ssl_handshake(void* arg, grpc_endpoint* tcp, const char* host,
|
|
192
194
|
c->func = on_done;
|
193
195
|
c->arg = arg;
|
194
196
|
grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
|
195
|
-
httpcli_ssl_channel_security_connector_create(
|
196
|
-
|
197
|
+
httpcli_ssl_channel_security_connector_create(
|
198
|
+
pem_root_certs, root_store, host,
|
199
|
+
static_cast<grpc_core::HandshakerArgs*>(arg)->args);
|
200
|
+
|
197
201
|
GPR_ASSERT(sc != nullptr);
|
198
202
|
grpc_arg channel_arg = grpc_security_connector_to_arg(sc.get());
|
199
203
|
grpc_channel_args args = {1, &channel_arg};
|
data/src/core/lib/http/parser.cc
CHANGED
@@ -327,7 +327,7 @@ void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type,
|
|
327
327
|
parser->cur_line_end_length = 2;
|
328
328
|
}
|
329
329
|
|
330
|
-
void grpc_http_parser_destroy(grpc_http_parser* parser) {}
|
330
|
+
void grpc_http_parser_destroy(grpc_http_parser* /*parser*/) {}
|
331
331
|
|
332
332
|
void grpc_http_request_destroy(grpc_http_request* request) {
|
333
333
|
size_t i;
|
@@ -39,8 +39,8 @@ void fill_gpr_from_timestamp(gpr_timespec* gts, const struct timespec* ts) {
|
|
39
39
|
gts->clock_type = GPR_CLOCK_REALTIME;
|
40
40
|
}
|
41
41
|
|
42
|
-
void default_timestamps_callback(void* arg
|
43
|
-
grpc_error* shudown_err) {
|
42
|
+
void default_timestamps_callback(void* /*arg*/, grpc_core::Timestamps* /*ts*/,
|
43
|
+
grpc_error* /*shudown_err*/) {
|
44
44
|
gpr_log(GPR_DEBUG, "Timestamps callback has not been registered");
|
45
45
|
}
|
46
46
|
|
@@ -293,9 +293,8 @@ void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*,
|
|
293
293
|
#else /* GRPC_LINUX_ERRQUEUE */
|
294
294
|
|
295
295
|
namespace grpc_core {
|
296
|
-
void grpc_tcp_set_write_timestamps_callback(
|
297
|
-
|
298
|
-
grpc_error* error)) {
|
296
|
+
void grpc_tcp_set_write_timestamps_callback(
|
297
|
+
void (*/*fn*/)(void*, grpc_core::Timestamps*, grpc_error* error)) {
|
299
298
|
gpr_log(GPR_DEBUG, "Timestamps callback is not enabled for this platform");
|
300
299
|
}
|
301
300
|
} /* namespace grpc_core */
|
@@ -114,6 +114,10 @@ struct Timestamps {
|
|
114
114
|
#ifdef GRPC_LINUX_ERRQUEUE
|
115
115
|
class TracedBuffer {
|
116
116
|
public:
|
117
|
+
/** Use AddNewEntry function instead of using this directly. */
|
118
|
+
TracedBuffer(uint32_t seq_no, void* arg)
|
119
|
+
: seq_no_(seq_no), arg_(arg), next_(nullptr) {}
|
120
|
+
|
117
121
|
/** Add a new entry in the TracedBuffer list pointed to by head. Also saves
|
118
122
|
* sendmsg_time with the current timestamp. */
|
119
123
|
static void AddNewEntry(grpc_core::TracedBuffer** head, uint32_t seq_no,
|
@@ -133,11 +137,6 @@ class TracedBuffer {
|
|
133
137
|
grpc_error* shutdown_err);
|
134
138
|
|
135
139
|
private:
|
136
|
-
GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
|
137
|
-
|
138
|
-
TracedBuffer(uint32_t seq_no, void* arg)
|
139
|
-
: seq_no_(seq_no), arg_(arg), next_(nullptr) {}
|
140
|
-
|
141
140
|
uint32_t seq_no_; /* The sequence number for the last byte in the buffer */
|
142
141
|
void* arg_; /* The arg to pass to timestamps_callback */
|
143
142
|
grpc_core::Timestamps ts_; /* The timestamps corresponding to this buffer */
|
@@ -147,7 +146,7 @@ class TracedBuffer {
|
|
147
146
|
class TracedBuffer {
|
148
147
|
public:
|
149
148
|
/* Dummy shutdown function */
|
150
|
-
static void Shutdown(grpc_core::TracedBuffer** head
|
149
|
+
static void Shutdown(grpc_core::TracedBuffer** /*head*/, void* /*remaining*/,
|
151
150
|
grpc_error* shutdown_err) {
|
152
151
|
GRPC_ERROR_UNREF(shutdown_err);
|
153
152
|
}
|
@@ -48,7 +48,6 @@ gpr_atm EncodeCancelStateError(grpc_error* error) {
|
|
48
48
|
CallCombiner::CallCombiner() {
|
49
49
|
gpr_atm_no_barrier_store(&cancel_state_, 0);
|
50
50
|
gpr_atm_no_barrier_store(&size_, 0);
|
51
|
-
gpr_mpscq_init(&queue_);
|
52
51
|
#ifdef GRPC_TSAN_ENABLED
|
53
52
|
GRPC_CLOSURE_INIT(&tsan_closure_, TsanClosure, this,
|
54
53
|
grpc_schedule_on_exec_ctx);
|
@@ -56,7 +55,6 @@ CallCombiner::CallCombiner() {
|
|
56
55
|
}
|
57
56
|
|
58
57
|
CallCombiner::~CallCombiner() {
|
59
|
-
gpr_mpscq_destroy(&queue_);
|
60
58
|
GRPC_ERROR_UNREF(DecodeCancelStateError(cancel_state_));
|
61
59
|
}
|
62
60
|
|
@@ -140,7 +138,8 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error* error,
|
|
140
138
|
}
|
141
139
|
// Queue was not empty, so add closure to queue.
|
142
140
|
closure->error_data.error = error;
|
143
|
-
|
141
|
+
queue_.Push(
|
142
|
+
reinterpret_cast<MultiProducerSingleConsumerQueue::Node*>(closure));
|
144
143
|
}
|
145
144
|
}
|
146
145
|
|
@@ -163,8 +162,8 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
|
|
163
162
|
gpr_log(GPR_INFO, " checking queue");
|
164
163
|
}
|
165
164
|
bool empty;
|
166
|
-
grpc_closure* closure =
|
167
|
-
|
165
|
+
grpc_closure* closure =
|
166
|
+
reinterpret_cast<grpc_closure*>(queue_.PopAndCheckEnd(&empty));
|
168
167
|
if (closure == nullptr) {
|
169
168
|
// This can happen either due to a race condition within the mpscq
|
170
169
|
// code or because of a race with Start().
|
@@ -25,8 +25,8 @@
|
|
25
25
|
|
26
26
|
#include <grpc/support/atm.h>
|
27
27
|
|
28
|
-
#include "src/core/lib/gpr/mpscq.h"
|
29
28
|
#include "src/core/lib/gprpp/inlined_vector.h"
|
29
|
+
#include "src/core/lib/gprpp/mpscq.h"
|
30
30
|
#include "src/core/lib/gprpp/ref_counted.h"
|
31
31
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
32
32
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -108,7 +108,7 @@ class CallCombiner {
|
|
108
108
|
#endif
|
109
109
|
|
110
110
|
gpr_atm size_ = 0; // size_t, num closures in queue or currently executing
|
111
|
-
|
111
|
+
MultiProducerSingleConsumerQueue queue_;
|
112
112
|
// Either 0 (if not cancelled and no cancellation closure set),
|
113
113
|
// a grpc_closure* (if the lowest bit is 0),
|
114
114
|
// or a grpc_error* (if the lowest bit is 1).
|
@@ -43,10 +43,12 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
|
|
43
43
|
public:
|
44
44
|
static CFStreamHandle* CreateStreamHandle(CFReadStreamRef read_stream,
|
45
45
|
CFWriteStreamRef write_stream);
|
46
|
-
|
46
|
+
/** Use CreateStreamHandle function instead of using this directly. */
|
47
|
+
CFStreamHandle(CFReadStreamRef read_stream, CFWriteStreamRef write_stream);
|
47
48
|
CFStreamHandle(const CFStreamHandle& ref) = delete;
|
48
49
|
CFStreamHandle(CFStreamHandle&& ref) = delete;
|
49
50
|
CFStreamHandle& operator=(const CFStreamHandle& rhs) = delete;
|
51
|
+
~CFStreamHandle() override;
|
50
52
|
|
51
53
|
void NotifyOnOpen(grpc_closure* closure);
|
52
54
|
void NotifyOnRead(grpc_closure* closure);
|
@@ -57,7 +59,6 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
|
|
57
59
|
void Unref(const char* file = "", int line = 0, const char* reason = nullptr);
|
58
60
|
|
59
61
|
private:
|
60
|
-
CFStreamHandle(CFReadStreamRef read_stream, CFWriteStreamRef write_stream);
|
61
62
|
static void ReadCallback(CFReadStreamRef stream, CFStreamEventType type,
|
62
63
|
void* client_callback_info);
|
63
64
|
static void WriteCallback(CFWriteStreamRef stream, CFStreamEventType type,
|
@@ -72,9 +73,6 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
|
|
72
73
|
dispatch_queue_t dispatch_queue_;
|
73
74
|
|
74
75
|
gpr_refcount refcount_;
|
75
|
-
|
76
|
-
GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
|
77
|
-
GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
78
76
|
};
|
79
77
|
|
80
78
|
#ifdef DEBUG
|
@@ -22,10 +22,13 @@
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include <assert.h>
|
25
|
+
#include <stdbool.h>
|
26
|
+
|
25
27
|
#include <grpc/support/alloc.h>
|
26
28
|
#include <grpc/support/log.h>
|
27
|
-
|
28
|
-
#include "src/core/lib/
|
29
|
+
|
30
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
31
|
+
#include "src/core/lib/gprpp/mpscq.h"
|
29
32
|
#include "src/core/lib/iomgr/error.h"
|
30
33
|
#include "src/core/lib/profiling/timers.h"
|
31
34
|
|
@@ -69,7 +72,9 @@ struct grpc_closure {
|
|
69
72
|
* space */
|
70
73
|
union {
|
71
74
|
grpc_closure* next;
|
72
|
-
|
75
|
+
grpc_core::ManualConstructor<
|
76
|
+
grpc_core::MultiProducerSingleConsumerQueue::Node>
|
77
|
+
mpscq_node;
|
73
78
|
uintptr_t scratch;
|
74
79
|
} next_data;
|
75
80
|
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include <grpc/support/log.h>
|
29
29
|
|
30
30
|
#include "src/core/lib/debug/stats.h"
|
31
|
+
#include "src/core/lib/gprpp/mpscq.h"
|
31
32
|
#include "src/core/lib/iomgr/executor.h"
|
32
33
|
#include "src/core/lib/iomgr/iomgr.h"
|
33
34
|
#include "src/core/lib/profiling/timers.h"
|
@@ -44,44 +45,17 @@ grpc_core::DebugOnlyTraceFlag grpc_combiner_trace(false, "combiner");
|
|
44
45
|
#define STATE_UNORPHANED 1
|
45
46
|
#define STATE_ELEM_COUNT_LOW_BIT 2
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
gpr_mpscq queue;
|
52
|
-
// either:
|
53
|
-
// a pointer to the initiating exec ctx if that is the only exec_ctx that has
|
54
|
-
// ever queued to this combiner, or NULL. If this is non-null, it's not
|
55
|
-
// dereferencable (since the initiating exec_ctx may have gone out of scope)
|
56
|
-
gpr_atm initiating_exec_ctx_or_null;
|
57
|
-
// state is:
|
58
|
-
// lower bit - zero if orphaned (STATE_UNORPHANED)
|
59
|
-
// other bits - number of items queued on the lock (STATE_ELEM_COUNT_LOW_BIT)
|
60
|
-
gpr_atm state;
|
61
|
-
bool time_to_execute_final_list;
|
62
|
-
grpc_closure_list final_list;
|
63
|
-
grpc_closure offload;
|
64
|
-
gpr_refcount refs;
|
65
|
-
};
|
66
|
-
|
67
|
-
static void combiner_run(grpc_closure* closure, grpc_error* error);
|
68
|
-
static void combiner_exec(grpc_closure* closure, grpc_error* error);
|
69
|
-
static void combiner_finally_exec(grpc_closure* closure, grpc_error* error);
|
70
|
-
|
71
|
-
static const grpc_closure_scheduler_vtable scheduler = {
|
72
|
-
combiner_run, combiner_exec, "combiner:immediately"};
|
73
|
-
static const grpc_closure_scheduler_vtable finally_scheduler = {
|
74
|
-
combiner_finally_exec, combiner_finally_exec, "combiner:finally"};
|
48
|
+
static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* closure,
|
49
|
+
grpc_error* error);
|
50
|
+
static void combiner_finally_exec(grpc_core::Combiner* lock,
|
51
|
+
grpc_closure* closure, grpc_error* error);
|
75
52
|
|
76
53
|
static void offload(void* arg, grpc_error* error);
|
77
54
|
|
78
|
-
|
79
|
-
|
55
|
+
grpc_core::Combiner* grpc_combiner_create(void) {
|
56
|
+
grpc_core::Combiner* lock = grpc_core::New<grpc_core::Combiner>();
|
80
57
|
gpr_ref_init(&lock->refs, 1);
|
81
|
-
lock->scheduler.vtable = &scheduler;
|
82
|
-
lock->finally_scheduler.vtable = &finally_scheduler;
|
83
58
|
gpr_atm_no_barrier_store(&lock->state, STATE_UNORPHANED);
|
84
|
-
gpr_mpscq_init(&lock->queue);
|
85
59
|
grpc_closure_list_init(&lock->final_list);
|
86
60
|
GRPC_CLOSURE_INIT(
|
87
61
|
&lock->offload, offload, lock,
|
@@ -90,14 +64,13 @@ grpc_combiner* grpc_combiner_create(void) {
|
|
90
64
|
return lock;
|
91
65
|
}
|
92
66
|
|
93
|
-
static void really_destroy(
|
67
|
+
static void really_destroy(grpc_core::Combiner* lock) {
|
94
68
|
GRPC_COMBINER_TRACE(gpr_log(GPR_INFO, "C:%p really_destroy", lock));
|
95
69
|
GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0);
|
96
|
-
|
97
|
-
gpr_free(lock);
|
70
|
+
grpc_core::Delete(lock);
|
98
71
|
}
|
99
72
|
|
100
|
-
static void start_destroy(
|
73
|
+
static void start_destroy(grpc_core::Combiner* lock) {
|
101
74
|
gpr_atm old_state = gpr_atm_full_fetch_add(&lock->state, -STATE_UNORPHANED);
|
102
75
|
GRPC_COMBINER_TRACE(gpr_log(
|
103
76
|
GPR_INFO, "C:%p really_destroy old_state=%" PRIdPTR, lock, old_state));
|
@@ -118,20 +91,21 @@ static void start_destroy(grpc_combiner* lock) {
|
|
118
91
|
#define GRPC_COMBINER_DEBUG_SPAM(op, delta)
|
119
92
|
#endif
|
120
93
|
|
121
|
-
void grpc_combiner_unref(
|
94
|
+
void grpc_combiner_unref(grpc_core::Combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
|
122
95
|
GRPC_COMBINER_DEBUG_SPAM("UNREF", -1);
|
123
96
|
if (gpr_unref(&lock->refs)) {
|
124
97
|
start_destroy(lock);
|
125
98
|
}
|
126
99
|
}
|
127
100
|
|
128
|
-
|
101
|
+
grpc_core::Combiner* grpc_combiner_ref(
|
102
|
+
grpc_core::Combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
|
129
103
|
GRPC_COMBINER_DEBUG_SPAM(" REF", 1);
|
130
104
|
gpr_ref(&lock->refs);
|
131
105
|
return lock;
|
132
106
|
}
|
133
107
|
|
134
|
-
static void push_last_on_exec_ctx(
|
108
|
+
static void push_last_on_exec_ctx(grpc_core::Combiner* lock) {
|
135
109
|
lock->next_combiner_on_this_exec_ctx = nullptr;
|
136
110
|
if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner == nullptr) {
|
137
111
|
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner =
|
@@ -144,7 +118,7 @@ static void push_last_on_exec_ctx(grpc_combiner* lock) {
|
|
144
118
|
}
|
145
119
|
}
|
146
120
|
|
147
|
-
static void push_first_on_exec_ctx(
|
121
|
+
static void push_first_on_exec_ctx(grpc_core::Combiner* lock) {
|
148
122
|
lock->next_combiner_on_this_exec_ctx =
|
149
123
|
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
|
150
124
|
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner = lock;
|
@@ -153,14 +127,10 @@ static void push_first_on_exec_ctx(grpc_combiner* lock) {
|
|
153
127
|
}
|
154
128
|
}
|
155
129
|
|
156
|
-
|
157
|
-
|
158
|
-
offsetof(grpc_combiner, scheduler_name)))
|
159
|
-
|
160
|
-
static void combiner_exec(grpc_closure* cl, grpc_error* error) {
|
130
|
+
static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl,
|
131
|
+
grpc_error* error) {
|
161
132
|
GPR_TIMER_SCOPE("combiner.execute", 0);
|
162
133
|
GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS();
|
163
|
-
grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(cl, scheduler);
|
164
134
|
gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT);
|
165
135
|
GRPC_COMBINER_TRACE(gpr_log(GPR_INFO,
|
166
136
|
"C:%p grpc_combiner_execute c=%p last=%" PRIdPTR,
|
@@ -185,7 +155,7 @@ static void combiner_exec(grpc_closure* cl, grpc_error* error) {
|
|
185
155
|
GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
|
186
156
|
assert(cl->cb);
|
187
157
|
cl->error_data.error = error;
|
188
|
-
|
158
|
+
lock->queue.Push(cl->next_data.mpscq_node.get());
|
189
159
|
}
|
190
160
|
|
191
161
|
static void move_next() {
|
@@ -198,12 +168,12 @@ static void move_next() {
|
|
198
168
|
}
|
199
169
|
}
|
200
170
|
|
201
|
-
static void offload(void* arg, grpc_error* error) {
|
202
|
-
|
171
|
+
static void offload(void* arg, grpc_error* /*error*/) {
|
172
|
+
grpc_core::Combiner* lock = static_cast<grpc_core::Combiner*>(arg);
|
203
173
|
push_last_on_exec_ctx(lock);
|
204
174
|
}
|
205
175
|
|
206
|
-
static void queue_offload(
|
176
|
+
static void queue_offload(grpc_core::Combiner* lock) {
|
207
177
|
GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED();
|
208
178
|
move_next();
|
209
179
|
GRPC_COMBINER_TRACE(gpr_log(GPR_INFO, "C:%p queue_offload", lock));
|
@@ -212,7 +182,7 @@ static void queue_offload(grpc_combiner* lock) {
|
|
212
182
|
|
213
183
|
bool grpc_combiner_continue_exec_ctx() {
|
214
184
|
GPR_TIMER_SCOPE("combiner.continue_exec_ctx", 0);
|
215
|
-
|
185
|
+
grpc_core::Combiner* lock =
|
216
186
|
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
|
217
187
|
if (lock == nullptr) {
|
218
188
|
return false;
|
@@ -249,7 +219,7 @@ bool grpc_combiner_continue_exec_ctx() {
|
|
249
219
|
// peek to see if something new has shown up, and execute that with
|
250
220
|
// priority
|
251
221
|
(gpr_atm_acq_load(&lock->state) >> 1) > 1) {
|
252
|
-
|
222
|
+
grpc_core::MultiProducerSingleConsumerQueue::Node* n = lock->queue.Pop();
|
253
223
|
GRPC_COMBINER_TRACE(
|
254
224
|
gpr_log(GPR_INFO, "C:%p maybe_finish_one n=%p", lock, n));
|
255
225
|
if (n == nullptr) {
|
@@ -330,19 +300,20 @@ bool grpc_combiner_continue_exec_ctx() {
|
|
330
300
|
|
331
301
|
static void enqueue_finally(void* closure, grpc_error* error);
|
332
302
|
|
333
|
-
static void combiner_finally_exec(
|
303
|
+
static void combiner_finally_exec(grpc_core::Combiner* lock,
|
304
|
+
grpc_closure* closure, grpc_error* error) {
|
305
|
+
GPR_ASSERT(lock != nullptr);
|
334
306
|
GPR_TIMER_SCOPE("combiner.execute_finally", 0);
|
335
307
|
GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS();
|
336
|
-
grpc_combiner* lock =
|
337
|
-
COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler);
|
338
308
|
GRPC_COMBINER_TRACE(gpr_log(
|
339
309
|
GPR_INFO, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock, closure,
|
340
310
|
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner));
|
341
311
|
if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner != lock) {
|
342
312
|
GPR_TIMER_MARK("slowpath", 0);
|
343
|
-
|
344
|
-
|
345
|
-
|
313
|
+
// Reusing scheduler to store the combiner so that it can be accessed in
|
314
|
+
// enqueue_finally
|
315
|
+
closure->scheduler = reinterpret_cast<grpc_closure_scheduler*>(lock);
|
316
|
+
lock->Run(GRPC_CLOSURE_CREATE(enqueue_finally, closure, nullptr), error);
|
346
317
|
return;
|
347
318
|
}
|
348
319
|
|
@@ -352,32 +323,24 @@ static void combiner_finally_exec(grpc_closure* closure, grpc_error* error) {
|
|
352
323
|
grpc_closure_list_append(&lock->final_list, closure, error);
|
353
324
|
}
|
354
325
|
|
355
|
-
static void combiner_run(grpc_closure* closure, grpc_error* error) {
|
356
|
-
grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(closure, scheduler);
|
357
|
-
#ifndef NDEBUG
|
358
|
-
closure->scheduled = false;
|
359
|
-
GRPC_COMBINER_TRACE(gpr_log(
|
360
|
-
GPR_DEBUG,
|
361
|
-
"Combiner:%p grpc_combiner_run closure:%p created [%s:%d] run [%s:%d]",
|
362
|
-
lock, closure, closure->file_created, closure->line_created,
|
363
|
-
closure->file_initiated, closure->line_initiated));
|
364
|
-
#endif
|
365
|
-
GPR_ASSERT(grpc_core::ExecCtx::Get()->combiner_data()->active_combiner ==
|
366
|
-
lock);
|
367
|
-
closure->cb(closure->cb_arg, error);
|
368
|
-
GRPC_ERROR_UNREF(error);
|
369
|
-
}
|
370
|
-
|
371
326
|
static void enqueue_finally(void* closure, grpc_error* error) {
|
372
|
-
|
373
|
-
|
327
|
+
grpc_closure* cl = static_cast<grpc_closure*>(closure);
|
328
|
+
combiner_finally_exec(reinterpret_cast<grpc_core::Combiner*>(cl->scheduler),
|
329
|
+
cl, GRPC_ERROR_REF(error));
|
374
330
|
}
|
375
331
|
|
376
|
-
|
377
|
-
|
332
|
+
namespace grpc_core {
|
333
|
+
void Combiner::Run(grpc_closure* closure, grpc_error* error) {
|
334
|
+
GPR_ASSERT(closure->scheduler == nullptr ||
|
335
|
+
closure->scheduler ==
|
336
|
+
reinterpret_cast<grpc_closure_scheduler*>(this));
|
337
|
+
combiner_exec(this, closure, error);
|
378
338
|
}
|
379
339
|
|
380
|
-
|
381
|
-
|
382
|
-
|
340
|
+
void Combiner::FinallyRun(grpc_closure* closure, grpc_error* error) {
|
341
|
+
GPR_ASSERT(closure->scheduler == nullptr ||
|
342
|
+
closure->scheduler ==
|
343
|
+
reinterpret_cast<grpc_closure_scheduler*>(this));
|
344
|
+
combiner_finally_exec(this, closure, error);
|
383
345
|
}
|
346
|
+
} // namespace grpc_core
|