grpc 1.35.0 → 1.36.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 +60 -57
- data/include/grpc/grpc_security.h +16 -11
- data/src/core/ext/filters/client_channel/client_channel.cc +32 -26
- data/src/core/ext/filters/client_channel/client_channel.h +0 -2
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +231 -109
- data/src/core/ext/filters/client_channel/resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver.h +1 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +29 -41
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +362 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +22 -74
- data/src/core/ext/filters/client_channel/server_address.cc +6 -0
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -2
- data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +47 -22
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +42 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +106 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +13 -16
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +51 -42
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +747 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +369 -376
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +738 -567
- data/src/core/ext/xds/xds_api.h +46 -84
- data/src/core/ext/xds/xds_bootstrap.cc +59 -40
- data/src/core/ext/xds/xds_bootstrap.h +12 -4
- data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
- data/src/core/ext/xds/xds_certificate_provider.h +83 -44
- data/src/core/ext/xds/xds_client.cc +13 -11
- data/src/core/ext/xds/xds_client.h +3 -0
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +147 -11
- data/src/core/lib/channel/handshaker.cc +2 -5
- data/src/core/lib/channel/handshaker.h +1 -1
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli_security_connector.cc +2 -2
- data/src/core/lib/iomgr/ev_apple.cc +10 -7
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +4 -4
- data/src/core/lib/security/authorization/matchers.cc +339 -0
- data/src/core/lib/security/authorization/matchers.h +158 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +1 -1
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +9 -7
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.h +2 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +3 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +26 -14
- data/src/core/lib/security/transport/security_handshaker.cc +1 -3
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/server.cc +3 -3
- data/src/core/lib/surface/server.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +17 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
- data/src/core/tsi/fake_transport_security.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +0 -3
- data/src/core/tsi/ssl_transport_security.h +0 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +725 -723
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +128 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +42 -24
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -98
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +329 -31
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
- metadata +77 -65
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
@@ -144,7 +144,7 @@ class HandshakeManager : public RefCounted<HandshakeManager> {
|
|
144
144
|
|
145
145
|
static const size_t HANDSHAKERS_INIT_SIZE = 2;
|
146
146
|
|
147
|
-
|
147
|
+
Mutex mu_;
|
148
148
|
bool is_shutdown_ = false;
|
149
149
|
// An array of handshakers added via grpc_handshake_manager_add().
|
150
150
|
absl::InlinedVector<RefCountedPtr<Handshaker>, HANDSHAKERS_INIT_SIZE>
|
data/src/core/lib/gpr/log.cc
CHANGED
@@ -28,7 +28,12 @@
|
|
28
28
|
#include <stdio.h>
|
29
29
|
#include <string.h>
|
30
30
|
|
31
|
-
|
31
|
+
#ifndef GPR_DEFAULT_LOG_VERBOSITY_STRING
|
32
|
+
#define GPR_DEFAULT_LOG_VERBOSITY_STRING "ERROR"
|
33
|
+
#endif // !GPR_DEFAULT_LOG_VERBOSITY_STRING
|
34
|
+
|
35
|
+
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_verbosity,
|
36
|
+
GPR_DEFAULT_LOG_VERBOSITY_STRING,
|
32
37
|
"Default gRPC logging verbosity")
|
33
38
|
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_stacktrace_minloglevel, "",
|
34
39
|
"Messages logged at the same or higher level "
|
data/src/core/lib/gprpp/mpscq.cc
CHANGED
@@ -86,9 +86,9 @@ bool LockedMultiProducerSingleConsumerQueue::Push(Node* node) {
|
|
86
86
|
|
87
87
|
LockedMultiProducerSingleConsumerQueue::Node*
|
88
88
|
LockedMultiProducerSingleConsumerQueue::TryPop() {
|
89
|
-
if (
|
89
|
+
if (mu_.TryLock()) {
|
90
90
|
Node* node = queue_.Pop();
|
91
|
-
|
91
|
+
mu_.Unlock();
|
92
92
|
return node;
|
93
93
|
}
|
94
94
|
return nullptr;
|
data/src/core/lib/gprpp/sync.h
CHANGED
@@ -26,6 +26,9 @@
|
|
26
26
|
#include <grpc/support/sync.h>
|
27
27
|
#include <grpc/support/time.h>
|
28
28
|
|
29
|
+
#include "absl/synchronization/mutex.h"
|
30
|
+
#include "src/core/lib/gprpp/time_util.h"
|
31
|
+
|
29
32
|
// The core library is not accessible in C++ codegen headers, and vice versa.
|
30
33
|
// Thus, we need to have duplicate headers with similar functionality.
|
31
34
|
// Make sure any change to this file is also reflected in
|
@@ -37,7 +40,23 @@
|
|
37
40
|
|
38
41
|
namespace grpc_core {
|
39
42
|
|
40
|
-
|
43
|
+
#ifdef GPR_ABSEIL_SYNC
|
44
|
+
|
45
|
+
using Mutex = absl::Mutex;
|
46
|
+
using MutexLock = absl::MutexLock;
|
47
|
+
using ReleasableMutexLock = absl::ReleasableMutexLock;
|
48
|
+
using CondVar = absl::CondVar;
|
49
|
+
|
50
|
+
// Returns the underlying gpr_mu from Mutex. This should be used only when
|
51
|
+
// it has to like passing the C++ mutex to C-core API.
|
52
|
+
// TODO(veblush): Remove this after C-core no longer uses gpr_mu.
|
53
|
+
inline gpr_mu* GetUnderlyingGprMu(Mutex* mutex) {
|
54
|
+
return reinterpret_cast<gpr_mu*>(mutex);
|
55
|
+
}
|
56
|
+
|
57
|
+
#else
|
58
|
+
|
59
|
+
class ABSL_LOCKABLE Mutex {
|
41
60
|
public:
|
42
61
|
Mutex() { gpr_mu_init(&mu_); }
|
43
62
|
~Mutex() { gpr_mu_destroy(&mu_); }
|
@@ -45,52 +64,59 @@ class Mutex {
|
|
45
64
|
Mutex(const Mutex&) = delete;
|
46
65
|
Mutex& operator=(const Mutex&) = delete;
|
47
66
|
|
48
|
-
|
49
|
-
|
67
|
+
void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() { gpr_mu_lock(&mu_); }
|
68
|
+
void Unlock() ABSL_UNLOCK_FUNCTION() { gpr_mu_unlock(&mu_); }
|
69
|
+
bool TryLock() ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true) {
|
70
|
+
return gpr_mu_trylock(&mu_) != 0;
|
71
|
+
}
|
50
72
|
|
51
73
|
private:
|
52
74
|
gpr_mu mu_;
|
75
|
+
|
76
|
+
friend class CondVar;
|
77
|
+
friend gpr_mu* GetUnderlyingGprMu(Mutex* mutex);
|
53
78
|
};
|
54
79
|
|
55
|
-
//
|
56
|
-
|
80
|
+
// Returns the underlying gpr_mu from Mutex. This should be used only when
|
81
|
+
// it has to like passing the C++ mutex to C-core API.
|
82
|
+
// TODO(veblush): Remove this after C-core no longer uses gpr_mu.
|
83
|
+
inline gpr_mu* GetUnderlyingGprMu(Mutex* mutex) { return &mutex->mu_; }
|
84
|
+
|
85
|
+
class ABSL_SCOPED_LOCKABLE MutexLock {
|
57
86
|
public:
|
58
|
-
explicit MutexLock(Mutex* mu) : mu_(mu
|
59
|
-
|
60
|
-
|
87
|
+
explicit MutexLock(Mutex* mu) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu) : mu_(mu) {
|
88
|
+
mu_->Lock();
|
89
|
+
}
|
90
|
+
~MutexLock() ABSL_UNLOCK_FUNCTION() { mu_->Unlock(); }
|
61
91
|
|
62
92
|
MutexLock(const MutexLock&) = delete;
|
63
93
|
MutexLock& operator=(const MutexLock&) = delete;
|
64
94
|
|
65
95
|
private:
|
66
|
-
|
96
|
+
Mutex* const mu_;
|
67
97
|
};
|
68
98
|
|
69
|
-
class ReleasableMutexLock {
|
99
|
+
class ABSL_SCOPED_LOCKABLE ReleasableMutexLock {
|
70
100
|
public:
|
71
|
-
explicit ReleasableMutexLock(Mutex* mu)
|
72
|
-
|
73
|
-
|
74
|
-
|
101
|
+
explicit ReleasableMutexLock(Mutex* mu) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu)
|
102
|
+
: mu_(mu) {
|
103
|
+
mu_->Lock();
|
104
|
+
}
|
105
|
+
~ReleasableMutexLock() ABSL_UNLOCK_FUNCTION() {
|
106
|
+
if (!released_) mu_->Unlock();
|
75
107
|
}
|
76
108
|
|
77
109
|
ReleasableMutexLock(const ReleasableMutexLock&) = delete;
|
78
110
|
ReleasableMutexLock& operator=(const ReleasableMutexLock&) = delete;
|
79
111
|
|
80
|
-
void
|
81
|
-
GPR_DEBUG_ASSERT(released_);
|
82
|
-
gpr_mu_lock(mu_);
|
83
|
-
released_ = false;
|
84
|
-
}
|
85
|
-
|
86
|
-
void Unlock() {
|
112
|
+
void Release() ABSL_UNLOCK_FUNCTION() {
|
87
113
|
GPR_DEBUG_ASSERT(!released_);
|
88
114
|
released_ = true;
|
89
|
-
|
115
|
+
mu_->Unlock();
|
90
116
|
}
|
91
117
|
|
92
118
|
private:
|
93
|
-
|
119
|
+
Mutex* const mu_;
|
94
120
|
bool released_ = false;
|
95
121
|
};
|
96
122
|
|
@@ -103,31 +129,94 @@ class CondVar {
|
|
103
129
|
CondVar& operator=(const CondVar&) = delete;
|
104
130
|
|
105
131
|
void Signal() { gpr_cv_signal(&cv_); }
|
106
|
-
void
|
132
|
+
void SignalAll() { gpr_cv_broadcast(&cv_); }
|
133
|
+
|
134
|
+
void Wait(Mutex* mu) { WaitWithDeadline(mu, absl::InfiniteFuture()); }
|
135
|
+
bool WaitWithTimeout(Mutex* mu, absl::Duration timeout) {
|
136
|
+
return gpr_cv_wait(&cv_, &mu->mu_, ToGprTimeSpec(timeout)) != 0;
|
137
|
+
}
|
138
|
+
bool WaitWithDeadline(Mutex* mu, absl::Time deadline) {
|
139
|
+
return gpr_cv_wait(&cv_, &mu->mu_, ToGprTimeSpec(deadline)) != 0;
|
140
|
+
}
|
141
|
+
|
142
|
+
private:
|
143
|
+
gpr_cv cv_;
|
144
|
+
};
|
145
|
+
|
146
|
+
#endif // GPR_ABSEIL_SYNC
|
147
|
+
|
148
|
+
template <typename Predicate>
|
149
|
+
static void WaitUntil(CondVar* cv, Mutex* mu, Predicate pred) {
|
150
|
+
while (!pred()) {
|
151
|
+
cv->Wait(mu);
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
// Returns true iff we timed-out
|
156
|
+
template <typename Predicate>
|
157
|
+
static bool WaitUntilWithTimeout(CondVar* cv, Mutex* mu, Predicate pred,
|
158
|
+
absl::Duration timeout) {
|
159
|
+
while (!pred()) {
|
160
|
+
if (cv->WaitWithTimeout(mu, timeout)) return true;
|
161
|
+
}
|
162
|
+
return false;
|
163
|
+
}
|
164
|
+
|
165
|
+
// Returns true iff we timed-out
|
166
|
+
template <typename Predicate>
|
167
|
+
static bool WaitUntilWithDeadline(CondVar* cv, Mutex* mu, Predicate pred,
|
168
|
+
absl::Time deadline) {
|
169
|
+
while (!pred()) {
|
170
|
+
if (cv->WaitWithDeadline(mu, deadline)) return true;
|
171
|
+
}
|
172
|
+
return false;
|
173
|
+
}
|
174
|
+
|
175
|
+
// Deprecated. Prefer MutexLock
|
176
|
+
class MutexLockForGprMu {
|
177
|
+
public:
|
178
|
+
explicit MutexLockForGprMu(gpr_mu* mu) : mu_(mu) { gpr_mu_lock(mu_); }
|
179
|
+
~MutexLockForGprMu() { gpr_mu_unlock(mu_); }
|
180
|
+
|
181
|
+
MutexLockForGprMu(const MutexLock&) = delete;
|
182
|
+
MutexLockForGprMu& operator=(const MutexLock&) = delete;
|
183
|
+
|
184
|
+
private:
|
185
|
+
gpr_mu* const mu_;
|
186
|
+
};
|
107
187
|
|
108
|
-
|
109
|
-
|
110
|
-
|
188
|
+
// Deprecated. Prefer MutexLock or ReleasableMutexLock
|
189
|
+
class ABSL_SCOPED_LOCKABLE LockableAndReleasableMutexLock {
|
190
|
+
public:
|
191
|
+
explicit LockableAndReleasableMutexLock(Mutex* mu)
|
192
|
+
ABSL_EXCLUSIVE_LOCK_FUNCTION(mu)
|
193
|
+
: mu_(mu) {
|
194
|
+
mu_->Lock();
|
111
195
|
}
|
196
|
+
~LockableAndReleasableMutexLock() ABSL_UNLOCK_FUNCTION() {
|
197
|
+
if (!released_) mu_->Unlock();
|
198
|
+
}
|
199
|
+
|
200
|
+
LockableAndReleasableMutexLock(const LockableAndReleasableMutexLock&) =
|
201
|
+
delete;
|
202
|
+
LockableAndReleasableMutexLock& operator=(
|
203
|
+
const LockableAndReleasableMutexLock&) = delete;
|
112
204
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
}
|
205
|
+
void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() {
|
206
|
+
GPR_DEBUG_ASSERT(released_);
|
207
|
+
mu_->Lock();
|
208
|
+
released_ = false;
|
118
209
|
}
|
119
210
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
if (Wait(mu, deadline)) return true;
|
125
|
-
}
|
126
|
-
return false;
|
211
|
+
void Release() ABSL_UNLOCK_FUNCTION() {
|
212
|
+
GPR_DEBUG_ASSERT(!released_);
|
213
|
+
released_ = true;
|
214
|
+
mu_->Unlock();
|
127
215
|
}
|
128
216
|
|
129
217
|
private:
|
130
|
-
|
218
|
+
Mutex* const mu_;
|
219
|
+
bool released_ = false;
|
131
220
|
};
|
132
221
|
|
133
222
|
} // namespace grpc_core
|
@@ -0,0 +1,77 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2021 the 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
|
+
#include <grpc/support/port_platform.h>
|
18
|
+
|
19
|
+
#include <grpc/support/log.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/gprpp/time_util.h"
|
22
|
+
|
23
|
+
namespace grpc_core {
|
24
|
+
|
25
|
+
gpr_timespec ToGprTimeSpec(absl::Duration duration) {
|
26
|
+
if (duration == absl::InfiniteDuration()) {
|
27
|
+
return gpr_inf_future(GPR_TIMESPAN);
|
28
|
+
} else if (duration == -absl::InfiniteDuration()) {
|
29
|
+
return gpr_inf_past(GPR_TIMESPAN);
|
30
|
+
} else {
|
31
|
+
int64_t s = absl::IDivDuration(duration, absl::Seconds(1), &duration);
|
32
|
+
int64_t n = absl::IDivDuration(duration, absl::Nanoseconds(1), &duration);
|
33
|
+
return gpr_time_add(gpr_time_from_seconds(s, GPR_TIMESPAN),
|
34
|
+
gpr_time_from_nanos(n, GPR_TIMESPAN));
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
gpr_timespec ToGprTimeSpec(absl::Time time) {
|
39
|
+
if (time == absl::InfiniteFuture()) {
|
40
|
+
return gpr_inf_future(GPR_CLOCK_REALTIME);
|
41
|
+
} else if (time == absl::InfinitePast()) {
|
42
|
+
return gpr_inf_past(GPR_CLOCK_REALTIME);
|
43
|
+
} else {
|
44
|
+
timespec ts = absl::ToTimespec(time);
|
45
|
+
gpr_timespec out;
|
46
|
+
out.tv_sec = static_cast<decltype(out.tv_sec)>(ts.tv_sec);
|
47
|
+
out.tv_nsec = static_cast<decltype(out.tv_nsec)>(ts.tv_nsec);
|
48
|
+
out.clock_type = GPR_CLOCK_REALTIME;
|
49
|
+
return out;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
absl::Duration ToAbslDuration(gpr_timespec ts) {
|
54
|
+
GPR_ASSERT(ts.clock_type == GPR_TIMESPAN);
|
55
|
+
if (gpr_time_cmp(ts, gpr_inf_future(GPR_TIMESPAN)) == 0) {
|
56
|
+
return absl::InfiniteDuration();
|
57
|
+
} else if (gpr_time_cmp(ts, gpr_inf_past(GPR_TIMESPAN)) == 0) {
|
58
|
+
return -absl::InfiniteDuration();
|
59
|
+
} else {
|
60
|
+
return absl::Seconds(ts.tv_sec) + absl::Nanoseconds(ts.tv_nsec);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
absl::Time ToAbslTime(gpr_timespec ts) {
|
65
|
+
GPR_ASSERT(ts.clock_type != GPR_TIMESPAN);
|
66
|
+
gpr_timespec rts = gpr_convert_clock_type(ts, GPR_CLOCK_REALTIME);
|
67
|
+
if (gpr_time_cmp(rts, gpr_inf_future(GPR_CLOCK_REALTIME)) == 0) {
|
68
|
+
return absl::InfiniteFuture();
|
69
|
+
} else if (gpr_time_cmp(rts, gpr_inf_past(GPR_CLOCK_REALTIME)) == 0) {
|
70
|
+
return absl::InfinitePast();
|
71
|
+
} else {
|
72
|
+
return absl::UnixEpoch() + absl::Seconds(rts.tv_sec) +
|
73
|
+
absl::Nanoseconds(rts.tv_nsec);
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
} // namespace grpc_core
|
@@ -0,0 +1,42 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2021 the 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_TIME_UTIL_H
|
18
|
+
#define GRPC_CORE_LIB_GPRPP_TIME_UTIL_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <grpc/support/time.h>
|
23
|
+
|
24
|
+
#include "absl/time/time.h"
|
25
|
+
|
26
|
+
namespace grpc_core {
|
27
|
+
|
28
|
+
// Converts absl::Duration to gpr_timespec(GPR_TIMESPAN)
|
29
|
+
gpr_timespec ToGprTimeSpec(absl::Duration duration);
|
30
|
+
|
31
|
+
// Converts absl::Time to gpr_timespec(GPR_CLOCK_REALTIME)
|
32
|
+
gpr_timespec ToGprTimeSpec(absl::Time time);
|
33
|
+
|
34
|
+
// Converts gpr_timespec(GPR_TIMESPAN) to absl::Duration
|
35
|
+
absl::Duration ToAbslDuration(gpr_timespec ts);
|
36
|
+
|
37
|
+
// Converts gpr_timespec(GPR_CLOCK_[MONOTONIC|REALTIME|PRECISE]) to absl::Time
|
38
|
+
absl::Time ToAbslTime(gpr_timespec ts);
|
39
|
+
|
40
|
+
} // namespace grpc_core
|
41
|
+
|
42
|
+
#endif // GRPC_CORE_LIB_GPRPP_TIME_UTIL_H
|
@@ -203,8 +203,8 @@ static void ssl_handshake(void* arg, grpc_endpoint* tcp, const char* host,
|
|
203
203
|
grpc_channel_args args = {1, &channel_arg};
|
204
204
|
c->handshake_mgr = grpc_core::MakeRefCounted<grpc_core::HandshakeManager>();
|
205
205
|
grpc_core::HandshakerRegistry::AddHandshakers(
|
206
|
-
grpc_core::HANDSHAKER_CLIENT, &args,
|
207
|
-
c->handshake_mgr.get());
|
206
|
+
grpc_core::HANDSHAKER_CLIENT, &args,
|
207
|
+
/*interested_parties=*/nullptr, c->handshake_mgr.get());
|
208
208
|
c->handshake_mgr->DoHandshake(tcp, /*channel_args=*/nullptr, deadline,
|
209
209
|
/*acceptor=*/nullptr, on_handshake_done,
|
210
210
|
/*user_data=*/c);
|
@@ -33,7 +33,10 @@
|
|
33
33
|
|
34
34
|
#include <list>
|
35
35
|
|
36
|
+
#include "absl/time/time.h"
|
37
|
+
|
36
38
|
#include "src/core/lib/gprpp/thd.h"
|
39
|
+
#include "src/core/lib/gprpp/time_util.h"
|
37
40
|
#include "src/core/lib/iomgr/ev_apple.h"
|
38
41
|
|
39
42
|
grpc_core::DebugOnlyTraceFlag grpc_apple_polling_trace(false, "apple_polling");
|
@@ -161,7 +164,7 @@ void grpc_apple_register_write_stream(CFWriteStreamRef write_stream,
|
|
161
164
|
/// Drive the run loop in a global singleton thread until the global run loop is
|
162
165
|
/// shutdown.
|
163
166
|
static void GlobalRunLoopFunc(void* arg) {
|
164
|
-
grpc_core::
|
167
|
+
grpc_core::LockableAndReleasableMutexLock lock(&gGlobalRunLoopContext->mu);
|
165
168
|
gGlobalRunLoopContext->run_loop = CFRunLoopGetCurrent();
|
166
169
|
gGlobalRunLoopContext->init_cv.Signal();
|
167
170
|
|
@@ -173,11 +176,11 @@ static void GlobalRunLoopFunc(void* arg) {
|
|
173
176
|
gGlobalRunLoopContext->input_source_cv.Wait(&gGlobalRunLoopContext->mu);
|
174
177
|
}
|
175
178
|
gGlobalRunLoopContext->input_source_registered = false;
|
176
|
-
lock.
|
179
|
+
lock.Release();
|
177
180
|
CFRunLoopRun();
|
178
181
|
lock.Lock();
|
179
182
|
}
|
180
|
-
lock.
|
183
|
+
lock.Release();
|
181
184
|
}
|
182
185
|
|
183
186
|
// pollset implementation
|
@@ -237,9 +240,9 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
237
240
|
auto it = apple_pollset->workers.begin();
|
238
241
|
|
239
242
|
while (!actual_worker.kicked && !apple_pollset->is_shutdown) {
|
240
|
-
if (actual_worker.cv.
|
241
|
-
&apple_pollset->mu,
|
242
|
-
|
243
|
+
if (actual_worker.cv.WaitWithDeadline(
|
244
|
+
&apple_pollset->mu, grpc_core::ToAbslTime(grpc_millis_to_timespec(
|
245
|
+
deadline, GPR_CLOCK_REALTIME)))) {
|
243
246
|
// timed out
|
244
247
|
break;
|
245
248
|
}
|
@@ -299,7 +302,7 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
299
302
|
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
300
303
|
GRPC_POLLING_TRACE("pollset init: %p", pollset);
|
301
304
|
GrpcApplePollset* apple_pollset = new (pollset) GrpcApplePollset();
|
302
|
-
*mu = apple_pollset->mu
|
305
|
+
*mu = grpc_core::GetUnderlyingGprMu(&apple_pollset->mu);
|
303
306
|
}
|
304
307
|
|
305
308
|
/// The caller must acquire the lock GrpcApplePollset.mu before calling this
|