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
@@ -38,14 +38,10 @@
|
|
38
38
|
|
39
39
|
extern grpc_core::TraceFlag grpc_http_trace;
|
40
40
|
|
41
|
-
|
42
|
-
uint32_t filter_elems_sum;
|
41
|
+
struct grpc_chttp2_hpack_compressor {
|
43
42
|
uint32_t max_table_size;
|
44
43
|
uint32_t max_table_elems;
|
45
44
|
uint32_t cap_table_elems;
|
46
|
-
/** if non-zero, advertise to the decoder that we'll start using a table
|
47
|
-
of this size */
|
48
|
-
uint8_t advertise_table_size_change;
|
49
45
|
/** maximum number of bytes we'll use for the decode table (to guard against
|
50
46
|
peers ooming us by setting decode table size high) */
|
51
47
|
uint32_t max_usable_size;
|
@@ -53,23 +49,39 @@ typedef struct {
|
|
53
49
|
uint32_t tail_remote_index;
|
54
50
|
uint32_t table_size;
|
55
51
|
uint32_t table_elems;
|
52
|
+
uint16_t* table_elem_size;
|
53
|
+
/** if non-zero, advertise to the decoder that we'll start using a table
|
54
|
+
of this size */
|
55
|
+
uint8_t advertise_table_size_change;
|
56
56
|
|
57
57
|
/* filter tables for elems: this tables provides an approximate
|
58
58
|
popularity count for particular hashes, and are used to determine whether
|
59
59
|
a new literal should be added to the compression table or not.
|
60
60
|
They track a single integer that counts how often a particular value has
|
61
61
|
been seen. When that count reaches max (255), all values are halved. */
|
62
|
+
uint32_t filter_elems_sum;
|
62
63
|
uint8_t filter_elems[GRPC_CHTTP2_HPACKC_NUM_VALUES];
|
63
64
|
|
64
65
|
/* entry tables for keys & elems: these tables track values that have been
|
65
66
|
seen and *may* be in the decompressor table */
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
67
|
+
struct {
|
68
|
+
struct {
|
69
|
+
grpc_mdelem value;
|
70
|
+
uint32_t index;
|
71
|
+
} entries[GRPC_CHTTP2_HPACKC_NUM_VALUES];
|
72
|
+
} elem_table; /* Metadata table management */
|
73
|
+
struct {
|
74
|
+
struct {
|
75
|
+
/* Only store the slice refcount - we do not need the byte buffer or
|
76
|
+
length of the slice since we only need to store a mapping between the
|
77
|
+
identity of the slice and the corresponding HPACK index. Since the
|
78
|
+
slice *must* be static or interned, the refcount is sufficient to
|
79
|
+
establish identity. */
|
80
|
+
grpc_slice_refcount* value;
|
81
|
+
uint32_t index;
|
82
|
+
} entries[GRPC_CHTTP2_HPACKC_NUM_VALUES];
|
83
|
+
} key_table; /* Key table management */
|
84
|
+
};
|
73
85
|
|
74
86
|
void grpc_chttp2_hpack_compressor_init(grpc_chttp2_hpack_compressor* c);
|
75
87
|
void grpc_chttp2_hpack_compressor_destroy(grpc_chttp2_hpack_compressor* c);
|
@@ -1741,9 +1741,8 @@ grpc_error* grpc_chttp2_header_parser_parse(void* hpack_parser,
|
|
1741
1741
|
however -- it might be that we receive a RST_STREAM following this
|
1742
1742
|
and can avoid the extra write */
|
1743
1743
|
GRPC_CHTTP2_STREAM_REF(s, "final_rst");
|
1744
|
-
|
1745
|
-
GRPC_CLOSURE_CREATE(force_client_rst_stream, s,
|
1746
|
-
grpc_combiner_finally_scheduler(t->combiner)),
|
1744
|
+
t->combiner->FinallyRun(
|
1745
|
+
GRPC_CLOSURE_CREATE(force_client_rst_stream, s, nullptr),
|
1747
1746
|
GRPC_ERROR_NONE);
|
1748
1747
|
}
|
1749
1748
|
grpc_chttp2_mark_stream_closed(t, s, true, false, GRPC_ERROR_NONE);
|
@@ -300,16 +300,12 @@ struct grpc_chttp2_transport {
|
|
300
300
|
|
301
301
|
grpc_resource_user* resource_user;
|
302
302
|
|
303
|
-
|
303
|
+
grpc_core::Combiner* combiner;
|
304
304
|
|
305
305
|
grpc_closure* notify_on_receive_settings = nullptr;
|
306
306
|
|
307
307
|
/** write execution state of the transport */
|
308
308
|
grpc_chttp2_write_state write_state = GRPC_CHTTP2_WRITE_STATE_IDLE;
|
309
|
-
/** is this the first write in a series of writes?
|
310
|
-
set when we initiate writing from idle, cleared when we
|
311
|
-
initiate writing from writing+more */
|
312
|
-
bool is_first_write_in_batch = false;
|
313
309
|
|
314
310
|
/** is the transport destroying itself? */
|
315
311
|
uint8_t destroying = false;
|
@@ -319,8 +315,6 @@ struct grpc_chttp2_transport {
|
|
319
315
|
/** is there a read request to the endpoint outstanding? */
|
320
316
|
uint8_t endpoint_reading = 1;
|
321
317
|
|
322
|
-
grpc_chttp2_optimization_target opt_target = GRPC_CHTTP2_OPTIMIZE_FOR_LATENCY;
|
323
|
-
|
324
318
|
/** various lists of streams */
|
325
319
|
grpc_chttp2_stream_list lists[STREAM_LIST_COUNT] = {};
|
326
320
|
|
@@ -341,15 +335,13 @@ struct grpc_chttp2_transport {
|
|
341
335
|
publish the accepted server stream */
|
342
336
|
grpc_chttp2_stream** accepting_stream = nullptr;
|
343
337
|
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
void* accept_stream_user_data;
|
338
|
+
/* accept stream callback */
|
339
|
+
void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
|
340
|
+
const void* server_data);
|
341
|
+
void* accept_stream_cb_user_data;
|
349
342
|
|
350
|
-
|
351
|
-
|
352
|
-
} channel_callback;
|
343
|
+
/** connectivity tracking */
|
344
|
+
grpc_core::ConnectivityStateTracker state_tracker;
|
353
345
|
|
354
346
|
/** data to write now */
|
355
347
|
grpc_slice_buffer outbuf;
|
@@ -467,6 +459,8 @@ struct grpc_chttp2_transport {
|
|
467
459
|
|
468
460
|
/* next bdp ping timer */
|
469
461
|
bool have_next_bdp_ping_timer = false;
|
462
|
+
/** If start_bdp_ping_locked has been called */
|
463
|
+
bool bdp_ping_started = false;
|
470
464
|
grpc_timer next_bdp_ping_timer;
|
471
465
|
|
472
466
|
/* keep-alive ping support */
|
@@ -488,6 +482,8 @@ struct grpc_chttp2_transport {
|
|
488
482
|
grpc_millis keepalive_timeout;
|
489
483
|
/** if keepalive pings are allowed when there's no outstanding streams */
|
490
484
|
bool keepalive_permit_without_calls = false;
|
485
|
+
/** If start_keepalive_ping_locked has been called */
|
486
|
+
bool keepalive_ping_started = false;
|
491
487
|
/** keep-alive state machine state */
|
492
488
|
grpc_chttp2_keepalive_state keepalive_state;
|
493
489
|
grpc_core::ContextList* cl = nullptr;
|
@@ -870,4 +866,6 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
|
|
870
866
|
void grpc_chttp2_config_default_keepalive_args(grpc_channel_args* args,
|
871
867
|
bool is_client);
|
872
868
|
|
869
|
+
void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error* error);
|
870
|
+
|
873
871
|
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H */
|
@@ -96,6 +96,9 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
|
|
96
96
|
if (!t->ping_state.is_delayed_ping_timer_set) {
|
97
97
|
t->ping_state.is_delayed_ping_timer_set = true;
|
98
98
|
GRPC_CHTTP2_REF_TRANSPORT(t, "retry_initiate_ping_locked");
|
99
|
+
GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
|
100
|
+
grpc_chttp2_retry_initiate_ping, t,
|
101
|
+
grpc_schedule_on_exec_ctx);
|
99
102
|
grpc_timer_init(&t->ping_state.delayed_ping_timer, next_allowed_ping,
|
100
103
|
&t->retry_initiate_ping_locked);
|
101
104
|
}
|
@@ -75,17 +75,17 @@ struct shared_mu {
|
|
75
75
|
struct inproc_transport {
|
76
76
|
inproc_transport(const grpc_transport_vtable* vtable, shared_mu* mu,
|
77
77
|
bool is_client)
|
78
|
-
: mu(mu),
|
78
|
+
: mu(mu),
|
79
|
+
is_client(is_client),
|
80
|
+
state_tracker(is_client ? "inproc_client" : "inproc_server",
|
81
|
+
GRPC_CHANNEL_READY) {
|
79
82
|
base.vtable = vtable;
|
80
83
|
// Start each side of transport with 2 refs since they each have a ref
|
81
84
|
// to the other
|
82
85
|
gpr_ref_init(&refs, 2);
|
83
|
-
grpc_connectivity_state_init(&connectivity, GRPC_CHANNEL_READY,
|
84
|
-
is_client ? "inproc_client" : "inproc_server");
|
85
86
|
}
|
86
87
|
|
87
88
|
~inproc_transport() {
|
88
|
-
grpc_connectivity_state_destroy(&connectivity);
|
89
89
|
if (gpr_unref(&mu->refs)) {
|
90
90
|
mu->~shared_mu();
|
91
91
|
gpr_free(mu);
|
@@ -111,7 +111,7 @@ struct inproc_transport {
|
|
111
111
|
shared_mu* mu;
|
112
112
|
gpr_refcount refs;
|
113
113
|
bool is_client;
|
114
|
-
|
114
|
+
grpc_core::ConnectivityStateTracker state_tracker;
|
115
115
|
void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
|
116
116
|
const void* server_data);
|
117
117
|
void* accept_stream_data;
|
@@ -1090,8 +1090,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
|
|
1090
1090
|
|
1091
1091
|
void close_transport_locked(inproc_transport* t) {
|
1092
1092
|
INPROC_LOG(GPR_INFO, "close_transport %p %d", t, t->is_closed);
|
1093
|
-
|
1094
|
-
"close transport");
|
1093
|
+
t->state_tracker.SetState(GRPC_CHANNEL_SHUTDOWN, "close transport");
|
1095
1094
|
if (!t->is_closed) {
|
1096
1095
|
t->is_closed = true;
|
1097
1096
|
/* Also end all streams on this transport */
|
@@ -1110,10 +1109,12 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
|
|
1110
1109
|
inproc_transport* t = reinterpret_cast<inproc_transport*>(gt);
|
1111
1110
|
INPROC_LOG(GPR_INFO, "perform_transport_op %p %p", t, op);
|
1112
1111
|
gpr_mu_lock(&t->mu->mu);
|
1113
|
-
if (op->
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1112
|
+
if (op->start_connectivity_watch != nullptr) {
|
1113
|
+
t->state_tracker.AddWatcher(op->start_connectivity_watch_state,
|
1114
|
+
std::move(op->start_connectivity_watch));
|
1115
|
+
}
|
1116
|
+
if (op->stop_connectivity_watch != nullptr) {
|
1117
|
+
t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
|
1117
1118
|
}
|
1118
1119
|
if (op->set_accept_stream) {
|
1119
1120
|
t->accept_stream_cb = op->set_accept_stream_fn;
|
@@ -1226,10 +1227,15 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
|
|
1226
1227
|
|
1227
1228
|
grpc_core::ExecCtx exec_ctx;
|
1228
1229
|
|
1229
|
-
|
1230
|
+
// Remove max_connection_idle and max_connection_age channel arguments since
|
1231
|
+
// those do not apply to inproc transports.
|
1232
|
+
const char* args_to_remove[] = {GRPC_ARG_MAX_CONNECTION_IDLE_MS,
|
1233
|
+
GRPC_ARG_MAX_CONNECTION_AGE_MS};
|
1234
|
+
const grpc_channel_args* server_args = grpc_channel_args_copy_and_remove(
|
1235
|
+
grpc_server_get_channel_args(server), args_to_remove,
|
1236
|
+
GPR_ARRAY_SIZE(args_to_remove));
|
1230
1237
|
|
1231
1238
|
// Add a default authority channel argument for the client
|
1232
|
-
|
1233
1239
|
grpc_arg default_authority_arg;
|
1234
1240
|
default_authority_arg.type = GRPC_ARG_STRING;
|
1235
1241
|
default_authority_arg.key = (char*)GRPC_ARG_DEFAULT_AUTHORITY;
|
@@ -1249,6 +1255,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
|
|
1249
1255
|
"inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
|
1250
1256
|
|
1251
1257
|
// Free up created channel args
|
1258
|
+
grpc_channel_args_destroy(server_args);
|
1252
1259
|
grpc_channel_args_destroy(client_args);
|
1253
1260
|
|
1254
1261
|
// Now finish scheduled operations
|
@@ -22,6 +22,8 @@
|
|
22
22
|
#include <string.h>
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
26
|
+
#include <grpc/impl/codegen/log.h>
|
25
27
|
#include <grpc/support/alloc.h>
|
26
28
|
#include <grpc/support/log.h>
|
27
29
|
#include <grpc/support/string_util.h>
|
@@ -361,3 +363,17 @@ char* grpc_channel_args_string(const grpc_channel_args* args) {
|
|
361
363
|
gpr_strvec_destroy(&v);
|
362
364
|
return result;
|
363
365
|
}
|
366
|
+
|
367
|
+
namespace {
|
368
|
+
grpc_channel_args_client_channel_creation_mutator g_mutator = nullptr;
|
369
|
+
} // namespace
|
370
|
+
|
371
|
+
void grpc_channel_args_set_client_channel_creation_mutator(
|
372
|
+
grpc_channel_args_client_channel_creation_mutator cb) {
|
373
|
+
GPR_DEBUG_ASSERT(g_mutator == nullptr);
|
374
|
+
g_mutator = cb;
|
375
|
+
}
|
376
|
+
grpc_channel_args_client_channel_creation_mutator
|
377
|
+
grpc_channel_args_get_client_channel_creation_mutator() {
|
378
|
+
return g_mutator;
|
379
|
+
}
|
@@ -23,6 +23,8 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
+
#include "src/core/lib/surface/channel_stack_type.h"
|
27
|
+
|
26
28
|
// Channel args are intentionally immutable, to avoid the need for locking.
|
27
29
|
|
28
30
|
/** Copy the arguments in \a src into a new instance */
|
@@ -98,6 +100,14 @@ bool grpc_channel_arg_get_bool(const grpc_arg* arg, bool default_value);
|
|
98
100
|
bool grpc_channel_args_find_bool(const grpc_channel_args* args,
|
99
101
|
const char* name, bool default_value);
|
100
102
|
|
103
|
+
template <typename T>
|
104
|
+
T* grpc_channel_args_find_pointer(const grpc_channel_args* args,
|
105
|
+
const char* name) {
|
106
|
+
const grpc_arg* arg = grpc_channel_args_find(args, name);
|
107
|
+
if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
|
108
|
+
return static_cast<T*>(arg->value.pointer.p);
|
109
|
+
}
|
110
|
+
|
101
111
|
// Helpers for creating channel args.
|
102
112
|
grpc_arg grpc_channel_arg_string_create(char* name, char* value);
|
103
113
|
grpc_arg grpc_channel_arg_integer_create(char* name, int value);
|
@@ -108,4 +118,16 @@ grpc_arg grpc_channel_arg_pointer_create(char* name, void* value,
|
|
108
118
|
// Callers takes ownership of result.
|
109
119
|
char* grpc_channel_args_string(const grpc_channel_args* args);
|
110
120
|
|
121
|
+
// Takes ownership of the old_args
|
122
|
+
typedef grpc_channel_args* (*grpc_channel_args_client_channel_creation_mutator)(
|
123
|
+
const char* target, grpc_channel_args* old_args,
|
124
|
+
grpc_channel_stack_type type);
|
125
|
+
|
126
|
+
// Should be called only once globaly before grpc is init'ed.
|
127
|
+
void grpc_channel_args_set_client_channel_creation_mutator(
|
128
|
+
grpc_channel_args_client_channel_creation_mutator cb);
|
129
|
+
// This will be called at the creation of each channel.
|
130
|
+
grpc_channel_args_client_channel_creation_mutator
|
131
|
+
grpc_channel_args_get_client_channel_creation_mutator();
|
132
|
+
|
111
133
|
#endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_ARGS_H */
|
@@ -234,8 +234,7 @@ grpc_json* ChannelNode::RenderJson() {
|
|
234
234
|
static_cast<grpc_connectivity_state>(state_field >> 1);
|
235
235
|
json = grpc_json_create_child(nullptr, json, "state", nullptr,
|
236
236
|
GRPC_JSON_OBJECT, false);
|
237
|
-
grpc_json_create_child(nullptr, json, "state",
|
238
|
-
grpc_connectivity_state_name(state),
|
237
|
+
grpc_json_create_child(nullptr, json, "state", ConnectivityStateName(state),
|
239
238
|
GRPC_JSON_STRING, false);
|
240
239
|
json = data;
|
241
240
|
}
|
@@ -294,7 +293,7 @@ void ChannelNode::SetConnectivityState(grpc_connectivity_state state) {
|
|
294
293
|
|
295
294
|
void ChannelNode::AddChildChannel(intptr_t child_uuid) {
|
296
295
|
MutexLock lock(&child_mu_);
|
297
|
-
child_channels_.insert(
|
296
|
+
child_channels_.insert(std::make_pair(child_uuid, true));
|
298
297
|
}
|
299
298
|
|
300
299
|
void ChannelNode::RemoveChildChannel(intptr_t child_uuid) {
|
@@ -304,7 +303,7 @@ void ChannelNode::RemoveChildChannel(intptr_t child_uuid) {
|
|
304
303
|
|
305
304
|
void ChannelNode::AddChildSubchannel(intptr_t child_uuid) {
|
306
305
|
MutexLock lock(&child_mu_);
|
307
|
-
child_subchannels_.insert(
|
306
|
+
child_subchannels_.insert(std::make_pair(child_uuid, true));
|
308
307
|
}
|
309
308
|
|
310
309
|
void ChannelNode::RemoveChildSubchannel(intptr_t child_uuid) {
|
@@ -324,7 +323,7 @@ ServerNode::~ServerNode() {}
|
|
324
323
|
|
325
324
|
void ServerNode::AddChildSocket(RefCountedPtr<SocketNode> node) {
|
326
325
|
MutexLock lock(&child_mu_);
|
327
|
-
child_sockets_.insert(
|
326
|
+
child_sockets_.insert(std::make_pair(node->uuid(), std::move(node)));
|
328
327
|
}
|
329
328
|
|
330
329
|
void ServerNode::RemoveChildSocket(intptr_t child_uuid) {
|
@@ -334,7 +333,7 @@ void ServerNode::RemoveChildSocket(intptr_t child_uuid) {
|
|
334
333
|
|
335
334
|
void ServerNode::AddChildListenSocket(RefCountedPtr<ListenSocketNode> node) {
|
336
335
|
MutexLock lock(&child_mu_);
|
337
|
-
child_listen_sockets_.insert(
|
336
|
+
child_listen_sockets_.insert(std::make_pair(node->uuid(), std::move(node)));
|
338
337
|
}
|
339
338
|
|
340
339
|
void ServerNode::RemoveChildListenSocket(intptr_t child_uuid) {
|
@@ -88,7 +88,7 @@ class BaseNode : public RefCounted<BaseNode> {
|
|
88
88
|
virtual ~BaseNode();
|
89
89
|
|
90
90
|
// All children must implement this function.
|
91
|
-
virtual grpc_json* RenderJson()
|
91
|
+
virtual grpc_json* RenderJson() = 0;
|
92
92
|
|
93
93
|
// Renders the json and returns allocated string that must be freed by the
|
94
94
|
// caller.
|
@@ -97,7 +97,7 @@ static callback_state* get_state_for_batch(
|
|
97
97
|
|
98
98
|
/* Intercept a call operation and either push it directly up or translate it
|
99
99
|
into transport stream operations */
|
100
|
-
static void
|
100
|
+
static void connected_channel_start_transport_stream_op_batch(
|
101
101
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
102
102
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
103
103
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
@@ -137,15 +137,15 @@ static void con_start_transport_stream_op_batch(
|
|
137
137
|
GRPC_CALL_COMBINER_STOP(calld->call_combiner, "passed batch to transport");
|
138
138
|
}
|
139
139
|
|
140
|
-
static void
|
141
|
-
|
140
|
+
static void connected_channel_start_transport_op(grpc_channel_element* elem,
|
141
|
+
grpc_transport_op* op) {
|
142
142
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
143
143
|
grpc_transport_perform_op(chand->transport, op);
|
144
144
|
}
|
145
145
|
|
146
146
|
/* Constructor for call_data */
|
147
|
-
static grpc_error*
|
148
|
-
|
147
|
+
static grpc_error* connected_channel_init_call_elem(
|
148
|
+
grpc_call_element* elem, const grpc_call_element_args* args) {
|
149
149
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
150
150
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
151
151
|
calld->call_combiner = args->call_combiner;
|
@@ -166,9 +166,9 @@ static void set_pollset_or_pollset_set(grpc_call_element* elem,
|
|
166
166
|
}
|
167
167
|
|
168
168
|
/* Destructor for call_data */
|
169
|
-
static void
|
170
|
-
|
171
|
-
|
169
|
+
static void connected_channel_destroy_call_elem(
|
170
|
+
grpc_call_element* elem, const grpc_call_final_info* final_info,
|
171
|
+
grpc_closure* then_schedule_closure) {
|
172
172
|
call_data* calld = static_cast<call_data*>(elem->call_data);
|
173
173
|
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
|
174
174
|
grpc_transport_destroy_stream(chand->transport,
|
@@ -177,8 +177,8 @@ static void destroy_call_elem(grpc_call_element* elem,
|
|
177
177
|
}
|
178
178
|
|
179
179
|
/* Constructor for channel_data */
|
180
|
-
static grpc_error*
|
181
|
-
|
180
|
+
static grpc_error* connected_channel_init_channel_elem(
|
181
|
+
grpc_channel_element* elem, grpc_channel_element_args* args) {
|
182
182
|
channel_data* cd = static_cast<channel_data*>(elem->channel_data);
|
183
183
|
GPR_ASSERT(args->is_last);
|
184
184
|
cd->transport = nullptr;
|
@@ -186,7 +186,7 @@ static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
|
186
186
|
}
|
187
187
|
|
188
188
|
/* Destructor for channel_data */
|
189
|
-
static void
|
189
|
+
static void connected_channel_destroy_channel_elem(grpc_channel_element* elem) {
|
190
190
|
channel_data* cd = static_cast<channel_data*>(elem->channel_data);
|
191
191
|
if (cd->transport) {
|
192
192
|
grpc_transport_destroy(cd->transport);
|
@@ -194,20 +194,20 @@ static void destroy_channel_elem(grpc_channel_element* elem) {
|
|
194
194
|
}
|
195
195
|
|
196
196
|
/* No-op. */
|
197
|
-
static void
|
198
|
-
|
197
|
+
static void connected_channel_get_channel_info(
|
198
|
+
grpc_channel_element* elem, const grpc_channel_info* channel_info) {}
|
199
199
|
|
200
200
|
const grpc_channel_filter grpc_connected_filter = {
|
201
|
-
|
202
|
-
|
201
|
+
connected_channel_start_transport_stream_op_batch,
|
202
|
+
connected_channel_start_transport_op,
|
203
203
|
sizeof(call_data),
|
204
|
-
|
204
|
+
connected_channel_init_call_elem,
|
205
205
|
set_pollset_or_pollset_set,
|
206
|
-
|
206
|
+
connected_channel_destroy_call_elem,
|
207
207
|
sizeof(channel_data),
|
208
|
-
|
209
|
-
|
210
|
-
|
208
|
+
connected_channel_init_channel_elem,
|
209
|
+
connected_channel_destroy_channel_elem,
|
210
|
+
connected_channel_get_channel_info,
|
211
211
|
"connected",
|
212
212
|
};
|
213
213
|
|