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
@@ -83,13 +83,13 @@ struct tzhead {
83
83
  ** If tzh_version is '2' or greater, the above is followed by a second instance
84
84
  ** of tzhead and a second instance of the data in which each coded transition
85
85
  ** time uses 8 rather than 4 chars,
86
- ** then a POSIX-TZ-environment-variable-style std::string for use in handling
86
+ ** then a POSIX-TZ-environment-variable-style string for use in handling
87
87
  ** instants after the last transition time stored in the file
88
88
  ** (with nothing between the newlines if there is no POSIX representation for
89
89
  ** such instants).
90
90
  **
91
91
  ** If tz_version is '3' or greater, the above is extended as follows.
92
- ** First, the POSIX TZ std::string's hour offset may range from -167
92
+ ** First, the POSIX TZ string's hour offset may range from -167
93
93
  ** through 167 as compared to the POSIX-required 0 through 24.
94
94
  ** Second, its DST start time may be January 1 at 00:00 and its stop
95
95
  ** time December 31 at 24:00 plus the difference between DST and
@@ -108,15 +108,15 @@ struct tzhead {
108
108
  #ifndef TZ_MAX_TYPES
109
109
  /* This must be at least 17 for Europe/Samara and Europe/Vilnius. */
110
110
  #define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */
111
- #endif /* !defined TZ_MAX_TYPES */
111
+ #endif /* !defined TZ_MAX_TYPES */
112
112
 
113
113
  #ifndef TZ_MAX_CHARS
114
114
  #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */
115
- /* (limited by what unsigned chars can hold) */
116
- #endif /* !defined TZ_MAX_CHARS */
115
+ /* (limited by what unsigned chars can hold) */
116
+ #endif /* !defined TZ_MAX_CHARS */
117
117
 
118
118
  #ifndef TZ_MAX_LEAPS
119
119
  #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */
120
- #endif /* !defined TZ_MAX_LEAPS */
120
+ #endif /* !defined TZ_MAX_LEAPS */
121
121
 
122
122
  #endif /* !defined TZFILE_H */
@@ -83,7 +83,8 @@ ZoneInfoSourceFactory default_factory = DefaultFactory;
83
83
  "@@U?$default_delete@VZoneInfoSource@cctz@time_internal@" ABSL_INTERNAL_MANGLED_NS \
84
84
  "@@@std@@@std@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z@" ABSL_INTERNAL_MANGLED_BACKREFERENCE \
85
85
  "@@ZA")
86
- #elif defined(_M_IA_64) || defined(_M_AMD64) || defined(_M_ARM64)
86
+ #elif defined(_M_IA_64) || defined(_M_AMD64) || defined(_M_ARM) || \
87
+ defined(_M_ARM64)
87
88
  #pragma comment( \
88
89
  linker, \
89
90
  "/alternatename:?zone_info_source_factory@cctz_extension@time_internal@" ABSL_INTERNAL_MANGLED_NS \
@@ -545,7 +545,7 @@ inline std::ostream& operator<<(std::ostream& os, Duration d) {
545
545
  // suffix. The valid suffixes are "ns", "us" "ms", "s", "m", and "h".
546
546
  // Simple examples include "300ms", "-1.5h", and "2h45m". Parses "0" as
547
547
  // `ZeroDuration()`. Parses "inf" and "-inf" as +/- `InfiniteDuration()`.
548
- bool ParseDuration(const std::string& dur_string, Duration* d);
548
+ bool ParseDuration(absl::string_view dur_string, Duration* d);
549
549
 
550
550
  // Support for flag values of type Duration. Duration flags must be specified
551
551
  // in a format that is valid input for absl::ParseDuration().
@@ -1021,13 +1021,13 @@ class TimeZone {
1021
1021
  // Loads the named zone. May perform I/O on the initial load of the named
1022
1022
  // zone. If the name is invalid, or some other kind of error occurs, returns
1023
1023
  // `false` and `*tz` is set to the UTC time zone.
1024
- inline bool LoadTimeZone(const std::string& name, TimeZone* tz) {
1024
+ inline bool LoadTimeZone(absl::string_view name, TimeZone* tz) {
1025
1025
  if (name == "localtime") {
1026
1026
  *tz = TimeZone(time_internal::cctz::local_time_zone());
1027
1027
  return true;
1028
1028
  }
1029
1029
  time_internal::cctz::time_zone cz;
1030
- const bool b = time_internal::cctz::load_time_zone(name, &cz);
1030
+ const bool b = time_internal::cctz::load_time_zone(std::string(name), &cz);
1031
1031
  *tz = TimeZone(cz);
1032
1032
  return b;
1033
1033
  }
@@ -1203,18 +1203,15 @@ struct tm ToTM(Time t, TimeZone tz);
1203
1203
  // time with UTC offset. Also note the use of "%Y": RFC3339 mandates that
1204
1204
  // years have exactly four digits, but we allow them to take their natural
1205
1205
  // width.
1206
- ABSL_DLL extern const char
1207
- RFC3339_full[]; // %Y-%m-%dT%H:%M:%E*S%Ez
1208
- ABSL_DLL extern const char RFC3339_sec[]; // %Y-%m-%dT%H:%M:%S%Ez
1206
+ ABSL_DLL extern const char RFC3339_full[]; // %Y-%m-%d%ET%H:%M:%E*S%Ez
1207
+ ABSL_DLL extern const char RFC3339_sec[]; // %Y-%m-%d%ET%H:%M:%S%Ez
1209
1208
 
1210
1209
  // RFC1123_full
1211
1210
  // RFC1123_no_wday
1212
1211
  //
1213
1212
  // FormatTime()/ParseTime() format specifiers for RFC1123 date/time strings.
1214
- ABSL_DLL extern const char
1215
- RFC1123_full[]; // %a, %d %b %E4Y %H:%M:%S %z
1216
- ABSL_DLL extern const char
1217
- RFC1123_no_wday[]; // %d %b %E4Y %H:%M:%S %z
1213
+ ABSL_DLL extern const char RFC1123_full[]; // %a, %d %b %E4Y %H:%M:%S %z
1214
+ ABSL_DLL extern const char RFC1123_no_wday[]; // %d %b %E4Y %H:%M:%S %z
1218
1215
 
1219
1216
  // FormatTime()
1220
1217
  //
@@ -1229,6 +1226,7 @@ ABSL_DLL extern const char
1229
1226
  // - %E#f - Fractional seconds with # digits of precision
1230
1227
  // - %E*f - Fractional seconds with full precision (a literal '*')
1231
1228
  // - %E4Y - Four-character years (-999 ... -001, 0000, 0001 ... 9999)
1229
+ // - %ET - The RFC3339 "date-time" separator "T"
1232
1230
  //
1233
1231
  // Note that %E0S behaves like %S, and %E0f produces no characters. In
1234
1232
  // contrast %E*f always produces at least one digit, which may be '0'.
@@ -1252,7 +1250,7 @@ ABSL_DLL extern const char
1252
1250
  // `absl::InfinitePast()`, the returned string will be exactly "infinite-past".
1253
1251
  // In both cases the given format string and `absl::TimeZone` are ignored.
1254
1252
  //
1255
- std::string FormatTime(const std::string& format, Time t, TimeZone tz);
1253
+ std::string FormatTime(absl::string_view format, Time t, TimeZone tz);
1256
1254
 
1257
1255
  // Convenience functions that format the given time using the RFC3339_full
1258
1256
  // format. The first overload uses the provided TimeZone, while the second
@@ -1271,7 +1269,8 @@ inline std::ostream& operator<<(std::ostream& os, Time t) {
1271
1269
  // returns the corresponding `absl::Time`. Uses strftime()-like formatting
1272
1270
  // options, with the same extensions as FormatTime(), but with the
1273
1271
  // exceptions that %E#S is interpreted as %E*S, and %E#f as %E*f. %Ez
1274
- // and %E*z also accept the same inputs.
1272
+ // and %E*z also accept the same inputs, which (along with %z) includes
1273
+ // 'z' and 'Z' as synonyms for +00:00. %ET accepts either 'T' or 't'.
1275
1274
  //
1276
1275
  // %Y consumes as many numeric characters as it can, so the matching data
1277
1276
  // should always be terminated with a non-numeric. %E4Y always consumes
@@ -1313,7 +1312,7 @@ inline std::ostream& operator<<(std::ostream& os, Time t) {
1313
1312
  // If the input string is "infinite-past", the returned `absl::Time` will be
1314
1313
  // `absl::InfinitePast()` and `true` will be returned.
1315
1314
  //
1316
- bool ParseTime(const std::string& format, const std::string& input, Time* time,
1315
+ bool ParseTime(absl::string_view format, absl::string_view input, Time* time,
1317
1316
  std::string* err);
1318
1317
 
1319
1318
  // Like ParseTime() above, but if the format string does not contain a UTC
@@ -1323,7 +1322,7 @@ bool ParseTime(const std::string& format, const std::string& input, Time* time,
1323
1322
  // of ambiguity or non-existence, in which case the "pre" time (as defined
1324
1323
  // by TimeZone::TimeInfo) is returned. For these reasons we recommend that
1325
1324
  // all date/time strings include a UTC offset so they're context independent.
1326
- bool ParseTime(const std::string& format, const std::string& input, TimeZone tz,
1325
+ bool ParseTime(absl::string_view format, absl::string_view input, TimeZone tz,
1327
1326
  Time* time, std::string* err);
1328
1327
 
1329
1328
  // ============================================================================
@@ -1348,8 +1347,8 @@ constexpr Duration MakeDuration(int64_t hi, int64_t lo) {
1348
1347
  // it's positive and can be converted to int64_t without risk of UB.
1349
1348
  inline Duration MakePosDoubleDuration(double n) {
1350
1349
  const int64_t int_secs = static_cast<int64_t>(n);
1351
- const uint32_t ticks =
1352
- static_cast<uint32_t>((n - int_secs) * kTicksPerSecond + 0.5);
1350
+ const uint32_t ticks = static_cast<uint32_t>(
1351
+ (n - static_cast<double>(int_secs)) * kTicksPerSecond + 0.5);
1353
1352
  return ticks < kTicksPerSecond
1354
1353
  ? MakeDuration(int_secs, ticks)
1355
1354
  : MakeDuration(int_secs + 1, ticks - kTicksPerSecond);
@@ -292,7 +292,7 @@ struct UnreachableSwitchCase {
292
292
  template <class Op, std::size_t I>
293
293
  struct ReachableSwitchCase {
294
294
  static VisitIndicesResultT<Op, std::size_t> Run(Op&& op) {
295
- return absl::base_internal::Invoke(absl::forward<Op>(op), SizeT<I>());
295
+ return absl::base_internal::invoke(absl::forward<Op>(op), SizeT<I>());
296
296
  }
297
297
  };
298
298
 
@@ -424,7 +424,7 @@ struct VisitIndicesSwitch {
424
424
  return PickCase<Op, 32, EndIndex>::Run(absl::forward<Op>(op));
425
425
  default:
426
426
  ABSL_ASSERT(i == variant_npos);
427
- return absl::base_internal::Invoke(absl::forward<Op>(op), NPos());
427
+ return absl::base_internal::invoke(absl::forward<Op>(op), NPos());
428
428
  }
429
429
  }
430
430
  };
@@ -488,7 +488,7 @@ struct VisitIndicesVariadicImpl<absl::index_sequence<N...>, EndIndices...> {
488
488
  template <std::size_t I>
489
489
  VisitIndicesResultT<Op, decltype(EndIndices)...> operator()(
490
490
  SizeT<I> /*index*/) && {
491
- return base_internal::Invoke(
491
+ return base_internal::invoke(
492
492
  absl::forward<Op>(op),
493
493
  SizeT<UnflattenIndex<I, N, (EndIndices + 1)...>::value -
494
494
  std::size_t{1}>()...);
@@ -930,7 +930,7 @@ struct PerformVisitation {
930
930
  absl::result_of_t<Op(VariantAccessResult<
931
931
  Is, QualifiedVariants>...)>>::value,
932
932
  "All visitation overloads must have the same return type.");
933
- return absl::base_internal::Invoke(
933
+ return absl::base_internal::invoke(
934
934
  absl::forward<Op>(op),
935
935
  VariantCoreAccess::Access<Is>(
936
936
  absl::forward<QualifiedVariants>(std::get<TupIs>(variant_tup)))...);
@@ -136,10 +136,10 @@ class optional : private optional_internal::optional_data<T>,
136
136
  constexpr optional(nullopt_t) noexcept {} // NOLINT(runtime/explicit)
137
137
 
138
138
  // Copy constructor, standard semantics
139
- optional(const optional& src) = default;
139
+ optional(const optional&) = default;
140
140
 
141
141
  // Move constructor, standard semantics
142
- optional(optional&& src) = default;
142
+ optional(optional&&) = default;
143
143
 
144
144
  // Constructs a non-empty `optional` direct-initialized value of type `T` from
145
145
  // the arguments `std::forward<Args>(args)...` within the `optional`.
@@ -412,11 +412,11 @@ class optional : private optional_internal::optional_data<T>,
412
412
  //
413
413
  // If you need myOpt->foo in constexpr, use (*myOpt).foo instead.
414
414
  const T* operator->() const {
415
- assert(this->engaged_);
415
+ ABSL_HARDENING_ASSERT(this->engaged_);
416
416
  return std::addressof(this->data_);
417
417
  }
418
418
  T* operator->() {
419
- assert(this->engaged_);
419
+ ABSL_HARDENING_ASSERT(this->engaged_);
420
420
  return std::addressof(this->data_);
421
421
  }
422
422
 
@@ -425,17 +425,17 @@ class optional : private optional_internal::optional_data<T>,
425
425
  // Accesses the underlying `T` value of an `optional`. If the `optional` is
426
426
  // empty, behavior is undefined.
427
427
  constexpr const T& operator*() const& {
428
- return ABSL_ASSERT(this->engaged_), reference();
428
+ return ABSL_HARDENING_ASSERT(this->engaged_), reference();
429
429
  }
430
430
  T& operator*() & {
431
- assert(this->engaged_);
431
+ ABSL_HARDENING_ASSERT(this->engaged_);
432
432
  return reference();
433
433
  }
434
434
  constexpr const T&& operator*() const && {
435
- return absl::move(reference());
435
+ return ABSL_HARDENING_ASSERT(this->engaged_), absl::move(reference());
436
436
  }
437
437
  T&& operator*() && {
438
- assert(this->engaged_);
438
+ ABSL_HARDENING_ASSERT(this->engaged_);
439
439
  return std::move(reference());
440
440
  }
441
441
 
@@ -444,7 +444,7 @@ class optional : private optional_internal::optional_data<T>,
444
444
  // Returns false if and only if the `optional` is empty.
445
445
  //
446
446
  // if (opt) {
447
- // // do something with opt.value();
447
+ // // do something with *opt or opt->;
448
448
  // } else {
449
449
  // // opt is empty.
450
450
  // }
@@ -17,32 +17,30 @@
17
17
  // span.h
18
18
  // -----------------------------------------------------------------------------
19
19
  //
20
- // This header file defines a `Span<T>` type for holding a view of an existing
21
- // array of data. The `Span` object, much like the `absl::string_view` object,
22
- // does not own such data itself. A span provides a lightweight way to pass
23
- // around view of such data.
20
+ // This header file defines a `Span<T>` type for holding a reference to existing
21
+ // array data. The `Span` object, much like the `absl::string_view` object,
22
+ // does not own such data itself, and the data being referenced by the span must
23
+ // outlive the span itself. Unlike `view` type references, a span can hold a
24
+ // reference to mutable data (and can mutate it for underlying types of
25
+ // non-const T.) A span provides a lightweight way to pass a reference to such
26
+ // data.
24
27
  //
25
28
  // Additionally, this header file defines `MakeSpan()` and `MakeConstSpan()`
26
29
  // factory functions, for clearly creating spans of type `Span<T>` or read-only
27
30
  // `Span<const T>` when such types may be difficult to identify due to issues
28
31
  // with implicit conversion.
29
32
  //
30
- // The C++ standards committee currently has a proposal for a `std::span` type,
31
- // (http://wg21.link/p0122), which is not yet part of the standard (though may
32
- // become part of C++20). As of August 2017, the differences between
33
- // `absl::Span` and this proposal are:
34
- // * `absl::Span` uses `size_t` for `size_type`
35
- // * `absl::Span` has no `operator()`
36
- // * `absl::Span` has no constructors for `std::unique_ptr` or
37
- // `std::shared_ptr`
33
+ // The C++20 draft standard includes a `std::span` type. As of June 2020, the
34
+ // differences between `absl::Span` and `std::span` are:
35
+ // * `absl::Span` has `operator==` (which is likely a design bug,
36
+ // per https://abseil.io/blog/20180531-regular-types)
38
37
  // * `absl::Span` has the factory functions `MakeSpan()` and
39
38
  // `MakeConstSpan()`
40
- // * `absl::Span` has `front()` and `back()` methods
41
39
  // * bounds-checked access to `absl::Span` is accomplished with `at()`
42
40
  // * `absl::Span` has compiler-provided move and copy constructors and
43
41
  // assignment. This is due to them being specified as `constexpr`, but that
44
42
  // implies const in C++11.
45
- // * `absl::Span` has no `element_type` or `index_type` typedefs
43
+ // * `absl::Span` has no `element_type` typedef
46
44
  // * A read-only `absl::Span<const T>` can be implicitly constructed from an
47
45
  // initializer list.
48
46
  // * `absl::Span` has no `bytes()`, `size_bytes()`, `as_bytes()`, or
@@ -77,9 +75,9 @@ ABSL_NAMESPACE_BEGIN
77
75
  // Span
78
76
  //------------------------------------------------------------------------------
79
77
  //
80
- // A `Span` is an "array view" type for holding a view of a contiguous data
81
- // array; the `Span` object does not and cannot own such data itself. A span
82
- // provides an easy way to provide overloads for anything operating on
78
+ // A `Span` is an "array reference" type for holding a reference of contiguous
79
+ // array data; the `Span` object does not and cannot own such data itself. A
80
+ // span provides an easy way to provide overloads for anything operating on
83
81
  // contiguous sequences without needing to manage pointers and array lengths
84
82
  // manually.
85
83
 
@@ -97,7 +95,8 @@ ABSL_NAMESPACE_BEGIN
97
95
  // constructors.
98
96
  //
99
97
  // A `Span<T>` is somewhat analogous to an `absl::string_view`, but for an array
100
- // of elements of type `T`. A user of `Span` must ensure that the data being
98
+ // of elements of type `T`, and unlike an `absl::string_view`, a span can hold a
99
+ // reference to mutable data. A user of `Span` must ensure that the data being
101
100
  // pointed to outlives the `Span` itself.
102
101
  //
103
102
  // You can construct a `Span<T>` in several ways:
@@ -127,7 +126,7 @@ ABSL_NAMESPACE_BEGIN
127
126
  // Note that `Span` objects, in addition to requiring that the memory they
128
127
  // point to remains alive, must also ensure that such memory does not get
129
128
  // reallocated. Therefore, to avoid undefined behavior, containers with
130
- // associated span views should not invoke operations that may reallocate memory
129
+ // associated spans should not invoke operations that may reallocate memory
131
130
  // (such as resizing) or invalidate iterators into the container.
132
131
  //
133
132
  // One common use for a `Span` is when passing arguments to a routine that can
@@ -276,7 +275,7 @@ class Span {
276
275
  // Returns a reference to the i'th element of this span.
277
276
  constexpr reference operator[](size_type i) const noexcept {
278
277
  // MSVC 2015 accepts this as constexpr, but not ptr_[i]
279
- return *(data() + i);
278
+ return ABSL_HARDENING_ASSERT(i < size()), *(data() + i);
280
279
  }
281
280
 
282
281
  // Span::at()
@@ -292,60 +291,74 @@ class Span {
292
291
 
293
292
  // Span::front()
294
293
  //
295
- // Returns a reference to the first element of this span.
294
+ // Returns a reference to the first element of this span. The span must not
295
+ // be empty.
296
296
  constexpr reference front() const noexcept {
297
- return ABSL_ASSERT(size() > 0), *data();
297
+ return ABSL_HARDENING_ASSERT(size() > 0), *data();
298
298
  }
299
299
 
300
300
  // Span::back()
301
301
  //
302
- // Returns a reference to the last element of this span.
302
+ // Returns a reference to the last element of this span. The span must not
303
+ // be empty.
303
304
  constexpr reference back() const noexcept {
304
- return ABSL_ASSERT(size() > 0), *(data() + size() - 1);
305
+ return ABSL_HARDENING_ASSERT(size() > 0), *(data() + size() - 1);
305
306
  }
306
307
 
307
308
  // Span::begin()
308
309
  //
309
- // Returns an iterator to the first element of this span.
310
+ // Returns an iterator pointing to the first element of this span, or `end()`
311
+ // if the span is empty.
310
312
  constexpr iterator begin() const noexcept { return data(); }
311
313
 
312
314
  // Span::cbegin()
313
315
  //
314
- // Returns a const iterator to the first element of this span.
316
+ // Returns a const iterator pointing to the first element of this span, or
317
+ // `end()` if the span is empty.
315
318
  constexpr const_iterator cbegin() const noexcept { return begin(); }
316
319
 
317
320
  // Span::end()
318
321
  //
319
- // Returns an iterator to the last element of this span.
322
+ // Returns an iterator pointing just beyond the last element at the
323
+ // end of this span. This iterator acts as a placeholder; attempting to
324
+ // access it results in undefined behavior.
320
325
  constexpr iterator end() const noexcept { return data() + size(); }
321
326
 
322
327
  // Span::cend()
323
328
  //
324
- // Returns a const iterator to the last element of this span.
329
+ // Returns a const iterator pointing just beyond the last element at the
330
+ // end of this span. This iterator acts as a placeholder; attempting to
331
+ // access it results in undefined behavior.
325
332
  constexpr const_iterator cend() const noexcept { return end(); }
326
333
 
327
334
  // Span::rbegin()
328
335
  //
329
- // Returns a reverse iterator starting at the last element of this span.
336
+ // Returns a reverse iterator pointing to the last element at the end of this
337
+ // span, or `rend()` if the span is empty.
330
338
  constexpr reverse_iterator rbegin() const noexcept {
331
339
  return reverse_iterator(end());
332
340
  }
333
341
 
334
342
  // Span::crbegin()
335
343
  //
336
- // Returns a reverse const iterator starting at the last element of this span.
344
+ // Returns a const reverse iterator pointing to the last element at the end of
345
+ // this span, or `crend()` if the span is empty.
337
346
  constexpr const_reverse_iterator crbegin() const noexcept { return rbegin(); }
338
347
 
339
348
  // Span::rend()
340
349
  //
341
- // Returns a reverse iterator starting at the first element of this span.
350
+ // Returns a reverse iterator pointing just before the first element
351
+ // at the beginning of this span. This pointer acts as a placeholder;
352
+ // attempting to access its element results in undefined behavior.
342
353
  constexpr reverse_iterator rend() const noexcept {
343
354
  return reverse_iterator(begin());
344
355
  }
345
356
 
346
357
  // Span::crend()
347
358
  //
348
- // Returns a reverse iterator starting at the first element of this span.
359
+ // Returns a reverse const iterator pointing just before the first element
360
+ // at the beginning of this span. This pointer acts as a placeholder;
361
+ // attempting to access its element results in undefined behavior.
349
362
  constexpr const_reverse_iterator crend() const noexcept { return rend(); }
350
363
 
351
364
  // Span mutations
@@ -354,7 +367,7 @@ class Span {
354
367
  //
355
368
  // Removes the first `n` elements from the span.
356
369
  void remove_prefix(size_type n) noexcept {
357
- assert(size() >= n);
370
+ ABSL_HARDENING_ASSERT(size() >= n);
358
371
  ptr_ += n;
359
372
  len_ -= n;
360
373
  }
@@ -363,7 +376,7 @@ class Span {
363
376
  //
364
377
  // Removes the last `n` elements from the span.
365
378
  void remove_suffix(size_type n) noexcept {
366
- assert(size() >= n);
379
+ ABSL_HARDENING_ASSERT(size() >= n);
367
380
  len_ -= n;
368
381
  }
369
382
 
@@ -651,7 +664,7 @@ constexpr Span<T> MakeSpan(T* ptr, size_t size) noexcept {
651
664
 
652
665
  template <int&... ExplicitArgumentBarrier, typename T>
653
666
  Span<T> MakeSpan(T* begin, T* end) noexcept {
654
- return ABSL_ASSERT(begin <= end), Span<T>(begin, end - begin);
667
+ return ABSL_HARDENING_ASSERT(begin <= end), Span<T>(begin, end - begin);
655
668
  }
656
669
 
657
670
  template <int&... ExplicitArgumentBarrier, typename C>
@@ -696,7 +709,7 @@ constexpr Span<const T> MakeConstSpan(T* ptr, size_t size) noexcept {
696
709
 
697
710
  template <int&... ExplicitArgumentBarrier, typename T>
698
711
  Span<const T> MakeConstSpan(T* begin, T* end) noexcept {
699
- return ABSL_ASSERT(begin <= end), Span<const T>(begin, end - begin);
712
+ return ABSL_HARDENING_ASSERT(begin <= end), Span<const T>(begin, end - begin);
700
713
  }
701
714
 
702
715
  template <int&... ExplicitArgumentBarrier, typename C>
@@ -236,10 +236,10 @@ namespace utility_internal {
236
236
  // Helper method for expanding tuple into a called method.
237
237
  template <typename Functor, typename Tuple, std::size_t... Indexes>
238
238
  auto apply_helper(Functor&& functor, Tuple&& t, index_sequence<Indexes...>)
239
- -> decltype(absl::base_internal::Invoke(
239
+ -> decltype(absl::base_internal::invoke(
240
240
  absl::forward<Functor>(functor),
241
241
  std::get<Indexes>(absl::forward<Tuple>(t))...)) {
242
- return absl::base_internal::Invoke(
242
+ return absl::base_internal::invoke(
243
243
  absl::forward<Functor>(functor),
244
244
  std::get<Indexes>(absl::forward<Tuple>(t))...);
245
245
  }