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.

Files changed (335) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +60 -57
  3. data/include/grpc/grpc_security.h +16 -11
  4. data/src/core/ext/filters/client_channel/client_channel.cc +32 -26
  5. data/src/core/ext/filters/client_channel/client_channel.h +0 -2
  6. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  7. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -2
  8. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +3 -5
  9. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  10. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
  11. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +8 -6
  13. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +289 -170
  14. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  15. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -3
  16. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +231 -109
  17. data/src/core/ext/filters/client_channel/resolver.cc +2 -5
  18. data/src/core/ext/filters/client_channel/resolver.h +1 -12
  19. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +36 -45
  20. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +29 -41
  21. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +16 -14
  22. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -15
  23. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +362 -0
  24. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  25. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +22 -74
  26. data/src/core/ext/filters/client_channel/server_address.cc +6 -0
  27. data/src/core/ext/filters/client_channel/server_address.h +31 -0
  28. data/src/core/ext/filters/client_channel/subchannel.cc +2 -2
  29. data/src/core/ext/filters/max_age/max_age_filter.cc +35 -32
  30. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  31. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +47 -22
  32. data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
  33. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +11 -1
  34. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +62 -18
  35. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
  36. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
  37. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
  38. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
  39. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
  40. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
  41. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
  42. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
  43. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
  44. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
  45. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
  46. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
  47. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
  48. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
  49. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
  50. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
  51. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  52. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
  53. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
  54. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
  55. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
  56. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
  57. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +42 -16
  58. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +106 -0
  59. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
  60. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  61. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  62. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +13 -16
  63. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +51 -42
  64. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
  65. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
  66. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
  67. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
  68. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
  69. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
  70. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
  71. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
  72. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
  73. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
  74. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
  75. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
  76. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
  77. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
  78. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
  79. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
  80. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  81. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  82. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  83. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  84. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  85. data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
  86. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  87. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  88. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  89. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  90. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
  92. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
  93. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
  94. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
  101. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
  102. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
  103. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
  104. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
  105. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
  106. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +747 -724
  107. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
  109. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  110. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  111. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +369 -376
  112. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
  113. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
  114. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
  115. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
  116. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
  117. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
  118. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
  119. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
  120. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
  121. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
  122. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
  123. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
  124. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  125. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  126. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  127. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  128. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  129. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  130. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  131. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  132. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  133. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  134. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  135. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  136. data/src/core/ext/xds/xds_api.cc +738 -567
  137. data/src/core/ext/xds/xds_api.h +46 -84
  138. data/src/core/ext/xds/xds_bootstrap.cc +59 -40
  139. data/src/core/ext/xds/xds_bootstrap.h +12 -4
  140. data/src/core/ext/xds/xds_certificate_provider.cc +180 -74
  141. data/src/core/ext/xds/xds_certificate_provider.h +83 -44
  142. data/src/core/ext/xds/xds_client.cc +13 -11
  143. data/src/core/ext/xds/xds_client.h +3 -0
  144. data/src/core/ext/xds/xds_client_stats.cc +2 -1
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +147 -11
  146. data/src/core/lib/channel/handshaker.cc +2 -5
  147. data/src/core/lib/channel/handshaker.h +1 -1
  148. data/src/core/lib/gpr/log.cc +6 -1
  149. data/src/core/lib/gprpp/mpscq.cc +2 -2
  150. data/src/core/lib/gprpp/ref_counted.h +1 -1
  151. data/src/core/lib/gprpp/sync.h +129 -40
  152. data/src/core/lib/gprpp/time_util.cc +77 -0
  153. data/src/core/lib/gprpp/time_util.h +42 -0
  154. data/src/core/lib/http/httpcli_security_connector.cc +2 -2
  155. data/src/core/lib/iomgr/ev_apple.cc +10 -7
  156. data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -4
  157. data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
  158. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -1
  159. data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
  160. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  161. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  162. data/src/core/lib/iomgr/tcp_posix.cc +4 -4
  163. data/src/core/lib/security/authorization/matchers.cc +339 -0
  164. data/src/core/lib/security/authorization/matchers.h +158 -0
  165. data/src/core/lib/security/authorization/mock_cel/activation.h +1 -1
  166. data/src/core/lib/security/authorization/mock_cel/cel_value.h +9 -7
  167. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  168. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  169. data/src/core/lib/security/credentials/credentials.h +2 -1
  170. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -1
  171. data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -2
  172. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -1
  173. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -1
  174. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -1
  175. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -6
  176. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  177. data/src/core/lib/security/credentials/jwt/json_token.cc +0 -3
  178. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -3
  179. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  180. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  181. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
  182. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  183. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
  184. data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
  185. data/src/core/lib/security/credentials/xds/xds_credentials.cc +128 -59
  186. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  187. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  188. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -0
  189. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +26 -14
  190. data/src/core/lib/security/transport/security_handshaker.cc +1 -3
  191. data/src/core/lib/slice/slice_intern.cc +1 -1
  192. data/src/core/lib/surface/init.cc +13 -15
  193. data/src/core/lib/surface/server.cc +3 -3
  194. data/src/core/lib/surface/server.h +3 -0
  195. data/src/core/lib/surface/version.cc +2 -2
  196. data/src/core/lib/transport/metadata.cc +6 -2
  197. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  198. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +17 -20
  199. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +16 -21
  200. data/src/core/tsi/fake_transport_security.cc +1 -1
  201. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
  202. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  203. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
  204. data/src/core/tsi/ssl_transport_security.cc +0 -3
  205. data/src/core/tsi/ssl_transport_security.h +0 -3
  206. data/src/ruby/lib/grpc/version.rb +1 -1
  207. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  208. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  209. data/third_party/boringssl-with-bazel/err_data.c +725 -723
  210. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  211. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  212. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  213. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -10
  214. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  215. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +4 -2
  216. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  217. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -14
  218. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
  219. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  220. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
  221. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
  222. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  225. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  226. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  227. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  228. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  229. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  230. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  231. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
  232. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  233. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  234. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  236. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +3 -1
  238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +9 -1
  241. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
  243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +12 -0
  244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +128 -38
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -7
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +147 -0
  250. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +18 -29
  251. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +13 -4
  252. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  253. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  255. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  256. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
  257. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  258. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  259. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +1 -1
  260. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
  261. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
  262. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +8 -8
  263. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
  264. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
  265. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +1 -2
  266. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  267. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -6
  268. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  269. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  270. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
  271. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  272. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
  273. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
  274. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  275. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  276. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  277. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  278. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +6 -6
  280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
  281. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
  282. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +652 -545
  283. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  284. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -5
  285. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  286. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
  287. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -0
  288. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
  289. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  290. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
  291. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +12 -2
  292. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -0
  293. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  294. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +42 -24
  295. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -8
  296. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +287 -98
  297. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +139 -36
  298. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +4 -3
  299. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
  300. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +10 -5
  301. data/third_party/boringssl-with-bazel/src/ssl/internal.h +37 -16
  302. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  303. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  304. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +20 -14
  305. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
  306. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
  307. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  308. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +329 -31
  309. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
  310. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
  311. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +66 -24
  312. metadata +77 -65
  313. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  314. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  315. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  316. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  317. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  318. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  319. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  320. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  321. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  322. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  323. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  324. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  325. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  326. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  327. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  328. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  329. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  330. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  331. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  332. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  333. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  334. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  335. 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
- gpr_mu mu_;
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>
@@ -28,7 +28,12 @@
28
28
  #include <stdio.h>
29
29
  #include <string.h>
30
30
 
31
- GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_verbosity, "ERROR",
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 "
@@ -86,9 +86,9 @@ bool LockedMultiProducerSingleConsumerQueue::Push(Node* node) {
86
86
 
87
87
  LockedMultiProducerSingleConsumerQueue::Node*
88
88
  LockedMultiProducerSingleConsumerQueue::TryPop() {
89
- if (gpr_mu_trylock(mu_.get())) {
89
+ if (mu_.TryLock()) {
90
90
  Node* node = queue_.Pop();
91
- gpr_mu_unlock(mu_.get());
91
+ mu_.Unlock();
92
92
  return node;
93
93
  }
94
94
  return nullptr;
@@ -226,7 +226,7 @@ class Delete<T, true> {
226
226
  template <typename T>
227
227
  class Delete<T, false> {
228
228
  public:
229
- explicit Delete(T* t) {}
229
+ explicit Delete(T* /*t*/) {}
230
230
  };
231
231
  } // namespace internal
232
232
 
@@ -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
- class Mutex {
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
- gpr_mu* get() { return &mu_; }
49
- const gpr_mu* get() const { return &mu_; }
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
- // MutexLock is a std::
56
- class MutexLock {
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->get()) { gpr_mu_lock(mu_); }
59
- explicit MutexLock(gpr_mu* mu) : mu_(mu) { gpr_mu_lock(mu_); }
60
- ~MutexLock() { gpr_mu_unlock(mu_); }
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
- gpr_mu* const mu_;
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) : mu_(mu->get()) { gpr_mu_lock(mu_); }
72
- explicit ReleasableMutexLock(gpr_mu* mu) : mu_(mu) { gpr_mu_lock(mu_); }
73
- ~ReleasableMutexLock() {
74
- if (!released_) gpr_mu_unlock(mu_);
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 Lock() {
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
- gpr_mu_unlock(mu_);
115
+ mu_->Unlock();
90
116
  }
91
117
 
92
118
  private:
93
- gpr_mu* const mu_;
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 Broadcast() { gpr_cv_broadcast(&cv_); }
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
- int Wait(Mutex* mu) { return Wait(mu, gpr_inf_future(GPR_CLOCK_REALTIME)); }
109
- int Wait(Mutex* mu, const gpr_timespec& deadline) {
110
- return gpr_cv_wait(&cv_, mu->get(), deadline);
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
- template <typename Predicate>
114
- void WaitUntil(Mutex* mu, Predicate pred) {
115
- while (!pred()) {
116
- Wait(mu, gpr_inf_future(GPR_CLOCK_REALTIME));
117
- }
205
+ void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION() {
206
+ GPR_DEBUG_ASSERT(released_);
207
+ mu_->Lock();
208
+ released_ = false;
118
209
  }
119
210
 
120
- // Returns true iff we timed-out
121
- template <typename Predicate>
122
- bool WaitUntil(Mutex* mu, Predicate pred, const gpr_timespec& deadline) {
123
- while (!pred()) {
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
- gpr_cv cv_;
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, /*interested_parties=*/nullptr,
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::ReleasableMutexLock lock(&gGlobalRunLoopContext->mu);
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.Unlock();
179
+ lock.Release();
177
180
  CFRunLoopRun();
178
181
  lock.Lock();
179
182
  }
180
- lock.Unlock();
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.Wait(
241
- &apple_pollset->mu,
242
- grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME))) {
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.get();
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