grpc 1.33.0.pre1 → 1.34.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 (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -57,6 +57,10 @@ class KernelTimeout {
57
57
 
58
58
  bool has_timeout() const { return ns_ != 0; }
59
59
 
60
+ // Convert to parameter for sem_timedwait/futex/similar. Only for approved
61
+ // users. Do not call if !has_timeout.
62
+ struct timespec MakeAbsTimespec();
63
+
60
64
  private:
61
65
  // internal rep, not user visible: ns after unix epoch.
62
66
  // zero = no timeout.
@@ -82,34 +86,6 @@ class KernelTimeout {
82
86
  return x;
83
87
  }
84
88
 
85
- // Convert to parameter for sem_timedwait/futex/similar. Only for approved
86
- // users. Do not call if !has_timeout.
87
- struct timespec MakeAbsTimespec() {
88
- int64_t n = ns_;
89
- static const int64_t kNanosPerSecond = 1000 * 1000 * 1000;
90
- if (n == 0) {
91
- ABSL_RAW_LOG(
92
- ERROR,
93
- "Tried to create a timespec from a non-timeout; never do this.");
94
- // But we'll try to continue sanely. no-timeout ~= saturated timeout.
95
- n = (std::numeric_limits<int64_t>::max)();
96
- }
97
-
98
- // Kernel APIs validate timespecs as being at or after the epoch,
99
- // despite the kernel time type being signed. However, no one can
100
- // tell the difference between a timeout at or before the epoch (since
101
- // all such timeouts have expired!)
102
- if (n < 0) n = 0;
103
-
104
- struct timespec abstime;
105
- int64_t seconds = (std::min)(n / kNanosPerSecond,
106
- int64_t{(std::numeric_limits<time_t>::max)()});
107
- abstime.tv_sec = static_cast<time_t>(seconds);
108
- abstime.tv_nsec =
109
- static_cast<decltype(abstime.tv_nsec)>(n % kNanosPerSecond);
110
- return abstime;
111
- }
112
-
113
89
  #ifdef _WIN32
114
90
  // Converts to milliseconds from now, or INFINITE when
115
91
  // !has_timeout(). For use by SleepConditionVariableSRW on
@@ -148,6 +124,30 @@ class KernelTimeout {
148
124
  friend class Waiter;
149
125
  };
150
126
 
127
+ inline struct timespec KernelTimeout::MakeAbsTimespec() {
128
+ int64_t n = ns_;
129
+ static const int64_t kNanosPerSecond = 1000 * 1000 * 1000;
130
+ if (n == 0) {
131
+ ABSL_RAW_LOG(
132
+ ERROR, "Tried to create a timespec from a non-timeout; never do this.");
133
+ // But we'll try to continue sanely. no-timeout ~= saturated timeout.
134
+ n = (std::numeric_limits<int64_t>::max)();
135
+ }
136
+
137
+ // Kernel APIs validate timespecs as being at or after the epoch,
138
+ // despite the kernel time type being signed. However, no one can
139
+ // tell the difference between a timeout at or before the epoch (since
140
+ // all such timeouts have expired!)
141
+ if (n < 0) n = 0;
142
+
143
+ struct timespec abstime;
144
+ int64_t seconds = (std::min)(n / kNanosPerSecond,
145
+ int64_t{(std::numeric_limits<time_t>::max)()});
146
+ abstime.tv_sec = static_cast<time_t>(seconds);
147
+ abstime.tv_nsec = static_cast<decltype(abstime.tv_nsec)>(n % kNanosPerSecond);
148
+ return abstime;
149
+ }
150
+
151
151
  } // namespace synchronization_internal
152
152
  ABSL_NAMESPACE_END
153
153
  } // namespace absl
@@ -209,31 +209,22 @@ class SynchronizationStorage {
209
209
  // Instances allocated on the heap or on the stack should use the default
210
210
  // constructor.
211
211
  SynchronizationStorage()
212
- : is_dynamic_(true), once_() {}
213
-
214
- // Instances allocated in static storage (not on the heap, not on the
215
- // stack) should use this constructor.
216
- explicit SynchronizationStorage(base_internal::LinkerInitialized) {}
212
+ : destruct_(true), once_() {}
217
213
 
218
214
  constexpr explicit SynchronizationStorage(absl::ConstInitType)
219
- : is_dynamic_(false), once_(), space_{{0}} {}
215
+ : destruct_(false), once_(), space_{{0}} {}
220
216
 
221
217
  SynchronizationStorage(SynchronizationStorage&) = delete;
222
218
  SynchronizationStorage& operator=(SynchronizationStorage&) = delete;
223
219
 
224
220
  ~SynchronizationStorage() {
225
- if (is_dynamic_) {
221
+ if (destruct_) {
226
222
  get()->~T();
227
223
  }
228
224
  }
229
225
 
230
226
  // Retrieve the object in storage. This is fast and thread safe, but does
231
227
  // incur the cost of absl::call_once().
232
- //
233
- // For instances in static storage constructed with the
234
- // LinkerInitialized constructor, may be called at any time without
235
- // regard for order of dynamic initialization or destruction of objects
236
- // in static storage. See the class comment for caveats.
237
228
  T* get() {
238
229
  absl::call_once(once_, SynchronizationStorage::Construct, this);
239
230
  return reinterpret_cast<T*>(&space_);
@@ -245,10 +236,7 @@ class SynchronizationStorage {
245
236
  }
246
237
 
247
238
  // When true, T's destructor is run when this is destructed.
248
- //
249
- // The LinkerInitialized constructor assumes this value will be set
250
- // false by static initialization.
251
- bool is_dynamic_;
239
+ const bool destruct_;
252
240
 
253
241
  absl::once_flag once_;
254
242
 
@@ -78,7 +78,7 @@ class PerThreadSem {
78
78
  // !t.has_timeout() => Wait(t) will return true.
79
79
  static inline bool Wait(KernelTimeout t);
80
80
 
81
- // White-listed callers.
81
+ // Permitted callers.
82
82
  friend class PerThreadSemTest;
83
83
  friend class absl::Mutex;
84
84
  friend absl::base_internal::ThreadIdentity* CreateThreadIdentity();
@@ -86,6 +86,14 @@ static void MaybeBecomeIdle() {
86
86
  #endif
87
87
  #endif
88
88
 
89
+ #if defined(__NR_futex_time64) && !defined(SYS_futex_time64)
90
+ #define SYS_futex_time64 __NR_futex_time64
91
+ #endif
92
+
93
+ #if defined(SYS_futex_time64) && !defined(SYS_futex)
94
+ #define SYS_futex SYS_futex_time64
95
+ #endif
96
+
89
97
  class Futex {
90
98
  public:
91
99
  static int WaitUntil(std::atomic<int32_t> *v, int32_t val,
@@ -100,8 +100,8 @@ class Waiter {
100
100
  }
101
101
 
102
102
  // How many periods to remain idle before releasing resources
103
- #ifndef THREAD_SANITIZER
104
- static const int kIdlePeriods = 60;
103
+ #ifndef ABSL_HAVE_THREAD_SANITIZER
104
+ static constexpr int kIdlePeriods = 60;
105
105
  #else
106
106
  // Memory consumption under ThreadSanitizer is a serious concern,
107
107
  // so we release resources sooner. The value of 1 leads to 1 to 2 second
@@ -39,6 +39,7 @@
39
39
  #include <thread> // NOLINT(build/c++11)
40
40
 
41
41
  #include "absl/base/attributes.h"
42
+ #include "absl/base/call_once.h"
42
43
  #include "absl/base/config.h"
43
44
  #include "absl/base/dynamic_annotations.h"
44
45
  #include "absl/base/internal/atomic_hook.h"
@@ -49,6 +50,7 @@
49
50
  #include "absl/base/internal/spinlock.h"
50
51
  #include "absl/base/internal/sysinfo.h"
51
52
  #include "absl/base/internal/thread_identity.h"
53
+ #include "absl/base/internal/tsan_mutex_interface.h"
52
54
  #include "absl/base/port.h"
53
55
  #include "absl/debugging/stacktrace.h"
54
56
  #include "absl/debugging/symbolize.h"
@@ -58,6 +60,7 @@
58
60
 
59
61
  using absl::base_internal::CurrentThreadIdentityIfPresent;
60
62
  using absl::base_internal::PerThreadSynch;
63
+ using absl::base_internal::SchedulingGuard;
61
64
  using absl::base_internal::ThreadIdentity;
62
65
  using absl::synchronization_internal::GetOrCreateCurrentThreadIdentity;
63
66
  using absl::synchronization_internal::GraphCycles;
@@ -75,7 +78,7 @@ ABSL_NAMESPACE_BEGIN
75
78
 
76
79
  namespace {
77
80
 
78
- #if defined(THREAD_SANITIZER)
81
+ #if defined(ABSL_HAVE_THREAD_SANITIZER)
79
82
  constexpr OnDeadlockCycle kDeadlockDetectionDefault = OnDeadlockCycle::kIgnore;
80
83
  #else
81
84
  constexpr OnDeadlockCycle kDeadlockDetectionDefault = OnDeadlockCycle::kAbort;
@@ -85,28 +88,6 @@ ABSL_CONST_INIT std::atomic<OnDeadlockCycle> synch_deadlock_detection(
85
88
  kDeadlockDetectionDefault);
86
89
  ABSL_CONST_INIT std::atomic<bool> synch_check_invariants(false);
87
90
 
88
- // ------------------------------------------ spinlock support
89
-
90
- // Make sure read-only globals used in the Mutex code are contained on the
91
- // same cacheline and cacheline aligned to eliminate any false sharing with
92
- // other globals from this and other modules.
93
- static struct MutexGlobals {
94
- MutexGlobals() {
95
- // Find machine-specific data needed for Delay() and
96
- // TryAcquireWithSpinning(). This runs in the global constructor
97
- // sequence, and before that zeros are safe values.
98
- num_cpus = absl::base_internal::NumCPUs();
99
- spinloop_iterations = num_cpus > 1 ? 1500 : 0;
100
- }
101
- int num_cpus;
102
- int spinloop_iterations;
103
- // Pad this struct to a full cacheline to prevent false sharing.
104
- char padding[ABSL_CACHELINE_SIZE - 2 * sizeof(int)];
105
- } ABSL_CACHELINE_ALIGNED mutex_globals;
106
- static_assert(
107
- sizeof(MutexGlobals) == ABSL_CACHELINE_SIZE,
108
- "MutexGlobals must occupy an entire cacheline to prevent false sharing");
109
-
110
91
  ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES
111
92
  absl::base_internal::AtomicHook<void (*)(int64_t wait_cycles)>
112
93
  submit_profile_data;
@@ -143,33 +124,55 @@ void RegisterSymbolizer(bool (*fn)(const void *pc, char *out, int out_size)) {
143
124
  symbolizer.Store(fn);
144
125
  }
145
126
 
146
- // spinlock delay on iteration c. Returns new c.
127
+ struct ABSL_CACHELINE_ALIGNED MutexGlobals {
128
+ absl::once_flag once;
129
+ int num_cpus = 0;
130
+ int spinloop_iterations = 0;
131
+ };
132
+
133
+ static const MutexGlobals& GetMutexGlobals() {
134
+ ABSL_CONST_INIT static MutexGlobals data;
135
+ absl::base_internal::LowLevelCallOnce(&data.once, [&]() {
136
+ data.num_cpus = absl::base_internal::NumCPUs();
137
+ data.spinloop_iterations = data.num_cpus > 1 ? 1500 : 0;
138
+ });
139
+ return data;
140
+ }
141
+
142
+ // Spinlock delay on iteration c. Returns new c.
147
143
  namespace {
148
144
  enum DelayMode { AGGRESSIVE, GENTLE };
149
145
  };
150
- static int Delay(int32_t c, DelayMode mode) {
146
+
147
+ namespace synchronization_internal {
148
+ int MutexDelay(int32_t c, int mode) {
151
149
  // If this a uniprocessor, only yield/sleep. Otherwise, if the mode is
152
150
  // aggressive then spin many times before yielding. If the mode is
153
151
  // gentle then spin only a few times before yielding. Aggressive spinning is
154
152
  // used to ensure that an Unlock() call, which must get the spin lock for
155
153
  // any thread to make progress gets it without undue delay.
156
- int32_t limit = (mutex_globals.num_cpus > 1) ?
157
- ((mode == AGGRESSIVE) ? 5000 : 250) : 0;
154
+ const int32_t limit =
155
+ GetMutexGlobals().num_cpus > 1 ? (mode == AGGRESSIVE ? 5000 : 250) : 0;
158
156
  if (c < limit) {
159
- c++; // spin
157
+ // Spin.
158
+ c++;
160
159
  } else {
160
+ SchedulingGuard::ScopedEnable enable_rescheduling;
161
161
  ABSL_TSAN_MUTEX_PRE_DIVERT(nullptr, 0);
162
- if (c == limit) { // yield once
162
+ if (c == limit) {
163
+ // Yield once.
163
164
  AbslInternalMutexYield();
164
165
  c++;
165
- } else { // then wait
166
+ } else {
167
+ // Then wait.
166
168
  absl::SleepFor(absl::Microseconds(10));
167
169
  c = 0;
168
170
  }
169
171
  ABSL_TSAN_MUTEX_POST_DIVERT(nullptr, 0);
170
172
  }
171
- return (c);
173
+ return c;
172
174
  }
175
+ } // namespace synchronization_internal
173
176
 
174
177
  // --------------------------Generic atomic ops
175
178
  // Ensure that "(*pv & bits) == bits" by doing an atomic update of "*pv" to
@@ -207,12 +210,12 @@ static void AtomicClearBits(std::atomic<intptr_t>* pv, intptr_t bits,
207
210
  //------------------------------------------------------------------
208
211
 
209
212
  // Data for doing deadlock detection.
210
- static absl::base_internal::SpinLock deadlock_graph_mu(
211
- absl::base_internal::kLinkerInitialized);
213
+ ABSL_CONST_INIT static absl::base_internal::SpinLock deadlock_graph_mu(
214
+ absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY);
212
215
 
213
- // graph used to detect deadlocks.
214
- static GraphCycles *deadlock_graph ABSL_GUARDED_BY(deadlock_graph_mu)
215
- ABSL_PT_GUARDED_BY(deadlock_graph_mu);
216
+ // Graph used to detect deadlocks.
217
+ ABSL_CONST_INIT static GraphCycles *deadlock_graph
218
+ ABSL_GUARDED_BY(deadlock_graph_mu) ABSL_PT_GUARDED_BY(deadlock_graph_mu);
216
219
 
217
220
  //------------------------------------------------------------------
218
221
  // An event mechanism for debugging mutex use.
@@ -273,13 +276,12 @@ static const struct {
273
276
  {0, "SignalAll on "},
274
277
  };
275
278
 
276
- static absl::base_internal::SpinLock synch_event_mu(
277
- absl::base_internal::kLinkerInitialized);
278
- // protects synch_event
279
+ ABSL_CONST_INIT static absl::base_internal::SpinLock synch_event_mu(
280
+ absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY);
279
281
 
280
282
  // Hash table size; should be prime > 2.
281
283
  // Can't be too small, as it's used for deadlock detection information.
282
- static const uint32_t kNSynchEvent = 1031;
284
+ static constexpr uint32_t kNSynchEvent = 1031;
283
285
 
284
286
  static struct SynchEvent { // this is a trivial hash table for the events
285
287
  // struct is freed when refcount reaches 0
@@ -299,7 +301,7 @@ static struct SynchEvent { // this is a trivial hash table for the events
299
301
  bool log; // logging turned on
300
302
 
301
303
  // Constant after initialization
302
- char name[1]; // actually longer---NUL-terminated std::string
304
+ char name[1]; // actually longer---NUL-terminated string
303
305
  } * synch_event[kNSynchEvent] ABSL_GUARDED_BY(synch_event_mu);
304
306
 
305
307
  // Ensure that the object at "addr" has a SynchEvent struct associated with it,
@@ -704,7 +706,7 @@ static constexpr bool kDebugMode = false;
704
706
  static constexpr bool kDebugMode = true;
705
707
  #endif
706
708
 
707
- #ifdef THREAD_SANITIZER
709
+ #ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
708
710
  static unsigned TsanFlags(Mutex::MuHow how) {
709
711
  return how == kShared ? __tsan_mutex_read_lock : 0;
710
712
  }
@@ -1055,6 +1057,7 @@ static PerThreadSynch *DequeueAllWakeable(PerThreadSynch *head,
1055
1057
  // Try to remove thread s from the list of waiters on this mutex.
1056
1058
  // Does nothing if s is not on the waiter list.
1057
1059
  void Mutex::TryRemove(PerThreadSynch *s) {
1060
+ SchedulingGuard::ScopedDisable disable_rescheduling;
1058
1061
  intptr_t v = mu_.load(std::memory_order_relaxed);
1059
1062
  // acquire spinlock & lock
1060
1063
  if ((v & (kMuWait | kMuSpin | kMuWriter | kMuReader)) == kMuWait &&
@@ -1119,7 +1122,7 @@ ABSL_XRAY_LOG_ARGS(1) void Mutex::Block(PerThreadSynch *s) {
1119
1122
  this->TryRemove(s);
1120
1123
  int c = 0;
1121
1124
  while (s->next != nullptr) {
1122
- c = Delay(c, GENTLE);
1125
+ c = synchronization_internal::MutexDelay(c, GENTLE);
1123
1126
  this->TryRemove(s);
1124
1127
  }
1125
1128
  if (kDebugMode) {
@@ -1438,21 +1441,19 @@ void Mutex::AssertNotHeld() const {
1438
1441
  // Attempt to acquire *mu, and return whether successful. The implementation
1439
1442
  // may spin for a short while if the lock cannot be acquired immediately.
1440
1443
  static bool TryAcquireWithSpinning(std::atomic<intptr_t>* mu) {
1441
- int c = mutex_globals.spinloop_iterations;
1442
- int result = -1; // result of operation: 0=false, 1=true, -1=unknown
1443
-
1444
+ int c = GetMutexGlobals().spinloop_iterations;
1444
1445
  do { // do/while somewhat faster on AMD
1445
1446
  intptr_t v = mu->load(std::memory_order_relaxed);
1446
- if ((v & (kMuReader|kMuEvent)) != 0) { // a reader or tracing -> give up
1447
- result = 0;
1447
+ if ((v & (kMuReader|kMuEvent)) != 0) {
1448
+ return false; // a reader or tracing -> give up
1448
1449
  } else if (((v & kMuWriter) == 0) && // no holder -> try to acquire
1449
1450
  mu->compare_exchange_strong(v, kMuWriter | v,
1450
1451
  std::memory_order_acquire,
1451
1452
  std::memory_order_relaxed)) {
1452
- result = 1;
1453
+ return true;
1453
1454
  }
1454
- } while (result == -1 && --c > 0);
1455
- return result == 1;
1455
+ } while (--c > 0);
1456
+ return false;
1456
1457
  }
1457
1458
 
1458
1459
  ABSL_XRAY_LOG_ARGS(1) void Mutex::Lock() {
@@ -1751,7 +1752,8 @@ static const intptr_t ignore_waiting_writers[] = {
1751
1752
  };
1752
1753
 
1753
1754
  // Internal version of LockWhen(). See LockSlowWithDeadline()
1754
- void Mutex::LockSlow(MuHow how, const Condition *cond, int flags) {
1755
+ ABSL_ATTRIBUTE_NOINLINE void Mutex::LockSlow(MuHow how, const Condition *cond,
1756
+ int flags) {
1755
1757
  ABSL_RAW_CHECK(
1756
1758
  this->LockSlowWithDeadline(how, cond, KernelTimeout::Never(), flags),
1757
1759
  "condition untrue on return from LockSlow");
@@ -1766,7 +1768,7 @@ static inline bool EvalConditionAnnotated(const Condition *cond, Mutex *mu,
1766
1768
  // All memory accesses are ignored inside of mutex operations + for unlock
1767
1769
  // operation tsan considers that we've already released the mutex.
1768
1770
  bool res = false;
1769
- #ifdef THREAD_SANITIZER
1771
+ #ifdef ABSL_INTERNAL_HAVE_TSAN_INTERFACE
1770
1772
  const int flags = read_lock ? __tsan_mutex_read_lock : 0;
1771
1773
  const int tryflags = flags | (trylock ? __tsan_mutex_try_lock : 0);
1772
1774
  #endif
@@ -1816,9 +1818,9 @@ static inline bool EvalConditionIgnored(Mutex *mu, const Condition *cond) {
1816
1818
  // So we "divert" (which un-ignores both memory accesses and synchronization)
1817
1819
  // and then separately turn on ignores of memory accesses.
1818
1820
  ABSL_TSAN_MUTEX_PRE_DIVERT(mu, 0);
1819
- ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN();
1821
+ ABSL_ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN();
1820
1822
  bool res = cond->Eval();
1821
- ANNOTATE_IGNORE_READS_AND_WRITES_END();
1823
+ ABSL_ANNOTATE_IGNORE_READS_AND_WRITES_END();
1822
1824
  ABSL_TSAN_MUTEX_POST_DIVERT(mu, 0);
1823
1825
  static_cast<void>(mu); // Prevent unused param warning in non-TSAN builds.
1824
1826
  return res;
@@ -1899,6 +1901,7 @@ static void CheckForMutexCorruption(intptr_t v, const char* label) {
1899
1901
  }
1900
1902
 
1901
1903
  void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) {
1904
+ SchedulingGuard::ScopedDisable disable_rescheduling;
1902
1905
  int c = 0;
1903
1906
  intptr_t v = mu_.load(std::memory_order_relaxed);
1904
1907
  if ((v & kMuEvent) != 0) {
@@ -2000,7 +2003,8 @@ void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) {
2000
2003
  ABSL_RAW_CHECK(
2001
2004
  waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors,
2002
2005
  "detected illegal recursion into Mutex code");
2003
- c = Delay(c, GENTLE); // delay, then try again
2006
+ // delay, then try again
2007
+ c = synchronization_internal::MutexDelay(c, GENTLE);
2004
2008
  }
2005
2009
  ABSL_RAW_CHECK(
2006
2010
  waitp->thread->waitp == nullptr || waitp->thread->suppress_fatal_errors,
@@ -2017,7 +2021,8 @@ void Mutex::LockSlowLoop(SynchWaitParams *waitp, int flags) {
2017
2021
  // which holds the lock but is not runnable because its condition is false
2018
2022
  // or it is in the process of blocking on a condition variable; it must requeue
2019
2023
  // itself on the mutex/condvar to wait for its condition to become true.
2020
- void Mutex::UnlockSlow(SynchWaitParams *waitp) {
2024
+ ABSL_ATTRIBUTE_NOINLINE void Mutex::UnlockSlow(SynchWaitParams *waitp) {
2025
+ SchedulingGuard::ScopedDisable disable_rescheduling;
2021
2026
  intptr_t v = mu_.load(std::memory_order_relaxed);
2022
2027
  this->AssertReaderHeld();
2023
2028
  CheckForMutexCorruption(v, "Unlock");
@@ -2294,7 +2299,8 @@ void Mutex::UnlockSlow(SynchWaitParams *waitp) {
2294
2299
  mu_.store(nv, std::memory_order_release);
2295
2300
  break; // out of for(;;)-loop
2296
2301
  }
2297
- c = Delay(c, AGGRESSIVE); // aggressive here; no one can proceed till we do
2302
+ // aggressive here; no one can proceed till we do
2303
+ c = synchronization_internal::MutexDelay(c, AGGRESSIVE);
2298
2304
  } // end of for(;;)-loop
2299
2305
 
2300
2306
  if (wake_list != kPerThreadSynchNull) {
@@ -2333,6 +2339,7 @@ void Mutex::Trans(MuHow how) {
2333
2339
  // It will later acquire the mutex with high probability. Otherwise, we
2334
2340
  // enqueue thread w on this mutex.
2335
2341
  void Mutex::Fer(PerThreadSynch *w) {
2342
+ SchedulingGuard::ScopedDisable disable_rescheduling;
2336
2343
  int c = 0;
2337
2344
  ABSL_RAW_CHECK(w->waitp->cond == nullptr,
2338
2345
  "Mutex::Fer while waiting on Condition");
@@ -2382,7 +2389,7 @@ void Mutex::Fer(PerThreadSynch *w) {
2382
2389
  return;
2383
2390
  }
2384
2391
  }
2385
- c = Delay(c, GENTLE);
2392
+ c = synchronization_internal::MutexDelay(c, GENTLE);
2386
2393
  }
2387
2394
  }
2388
2395
 
@@ -2431,6 +2438,7 @@ CondVar::~CondVar() {
2431
2438
 
2432
2439
  // Remove thread s from the list of waiters on this condition variable.
2433
2440
  void CondVar::Remove(PerThreadSynch *s) {
2441
+ SchedulingGuard::ScopedDisable disable_rescheduling;
2434
2442
  intptr_t v;
2435
2443
  int c = 0;
2436
2444
  for (v = cv_.load(std::memory_order_relaxed);;
@@ -2459,7 +2467,8 @@ void CondVar::Remove(PerThreadSynch *s) {
2459
2467
  std::memory_order_release);
2460
2468
  return;
2461
2469
  } else {
2462
- c = Delay(c, GENTLE); // try again after a delay
2470
+ // try again after a delay
2471
+ c = synchronization_internal::MutexDelay(c, GENTLE);
2463
2472
  }
2464
2473
  }
2465
2474
  }
@@ -2492,7 +2501,7 @@ static void CondVarEnqueue(SynchWaitParams *waitp) {
2492
2501
  !cv_word->compare_exchange_weak(v, v | kCvSpin,
2493
2502
  std::memory_order_acquire,
2494
2503
  std::memory_order_relaxed)) {
2495
- c = Delay(c, GENTLE);
2504
+ c = synchronization_internal::MutexDelay(c, GENTLE);
2496
2505
  v = cv_word->load(std::memory_order_relaxed);
2497
2506
  }
2498
2507
  ABSL_RAW_CHECK(waitp->thread->waitp == nullptr, "waiting when shouldn't be");
@@ -2591,6 +2600,7 @@ void CondVar::Wakeup(PerThreadSynch *w) {
2591
2600
  }
2592
2601
 
2593
2602
  void CondVar::Signal() {
2603
+ SchedulingGuard::ScopedDisable disable_rescheduling;
2594
2604
  ABSL_TSAN_MUTEX_PRE_SIGNAL(nullptr, 0);
2595
2605
  intptr_t v;
2596
2606
  int c = 0;
@@ -2623,7 +2633,7 @@ void CondVar::Signal() {
2623
2633
  ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
2624
2634
  return;
2625
2635
  } else {
2626
- c = Delay(c, GENTLE);
2636
+ c = synchronization_internal::MutexDelay(c, GENTLE);
2627
2637
  }
2628
2638
  }
2629
2639
  ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
@@ -2660,7 +2670,8 @@ void CondVar::SignalAll () {
2660
2670
  ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
2661
2671
  return;
2662
2672
  } else {
2663
- c = Delay(c, GENTLE); // try again after a delay
2673
+ // try again after a delay
2674
+ c = synchronization_internal::MutexDelay(c, GENTLE);
2664
2675
  }
2665
2676
  }
2666
2677
  ABSL_TSAN_MUTEX_POST_SIGNAL(nullptr, 0);
@@ -2673,7 +2684,7 @@ void ReleasableMutexLock::Release() {
2673
2684
  this->mu_ = nullptr;
2674
2685
  }
2675
2686
 
2676
- #ifdef THREAD_SANITIZER
2687
+ #ifdef ABSL_HAVE_THREAD_SANITIZER
2677
2688
  extern "C" void __tsan_read1(void *addr);
2678
2689
  #else
2679
2690
  #define __tsan_read1(addr) // do nothing if TSan not enabled