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
@@ -71,7 +71,7 @@ class time_zone::Impl {
71
71
  return zone_->PrevTransition(tp, trans);
72
72
  }
73
73
 
74
- // Returns an implementation-defined version std::string for this time zone.
74
+ // Returns an implementation-defined version string for this time zone.
75
75
  std::string Version() const { return zone_->Version(); }
76
76
 
77
77
  // Returns an implementation-defined description of this time zone.
@@ -40,7 +40,6 @@
40
40
  #include <cstdlib>
41
41
  #include <cstring>
42
42
  #include <functional>
43
- #include <iostream>
44
43
  #include <memory>
45
44
  #include <sstream>
46
45
  #include <string>
@@ -83,6 +82,27 @@ const std::int_least32_t kSecsPerYear[2] = {
83
82
  366 * kSecsPerDay,
84
83
  };
85
84
 
85
+ // Convert a cctz::weekday to a POSIX TZ weekday number (0==Sun, ..., 6=Sat).
86
+ inline int ToPosixWeekday(weekday wd) {
87
+ switch (wd) {
88
+ case weekday::sunday:
89
+ return 0;
90
+ case weekday::monday:
91
+ return 1;
92
+ case weekday::tuesday:
93
+ return 2;
94
+ case weekday::wednesday:
95
+ return 3;
96
+ case weekday::thursday:
97
+ return 4;
98
+ case weekday::friday:
99
+ return 5;
100
+ case weekday::saturday:
101
+ return 6;
102
+ }
103
+ return 0; /*NOTREACHED*/
104
+ }
105
+
86
106
  // Single-byte, unsigned numeric values are encoded directly.
87
107
  inline std::uint_fast8_t Decode8(const char* cp) {
88
108
  return static_cast<std::uint_fast8_t>(*cp) & 0xff;
@@ -188,15 +208,13 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) {
188
208
  tt.is_dst = false;
189
209
  tt.abbr_index = 0;
190
210
 
191
- // We temporarily add some redundant, contemporary (2013 through 2023)
211
+ // We temporarily add some redundant, contemporary (2015 through 2025)
192
212
  // transitions for performance reasons. See TimeZoneInfo::LocalTime().
193
213
  // TODO: Fix the performance issue and remove the extra transitions.
194
214
  transitions_.clear();
195
215
  transitions_.reserve(12);
196
216
  for (const std::int_fast64_t unix_time : {
197
- -(1LL << 59), // BIG_BANG
198
- 1356998400LL, // 2013-01-01T00:00:00+00:00
199
- 1388534400LL, // 2014-01-01T00:00:00+00:00
217
+ -(1LL << 59), // a "first half" transition
200
218
  1420070400LL, // 2015-01-01T00:00:00+00:00
201
219
  1451606400LL, // 2016-01-01T00:00:00+00:00
202
220
  1483228800LL, // 2017-01-01T00:00:00+00:00
@@ -206,7 +224,8 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) {
206
224
  1609459200LL, // 2021-01-01T00:00:00+00:00
207
225
  1640995200LL, // 2022-01-01T00:00:00+00:00
208
226
  1672531200LL, // 2023-01-01T00:00:00+00:00
209
- 2147483647LL, // 2^31 - 1
227
+ 1704067200LL, // 2024-01-01T00:00:00+00:00
228
+ 1735689600LL, // 2025-01-01T00:00:00+00:00
210
229
  }) {
211
230
  Transition& tr(*transitions_.emplace(transitions_.end()));
212
231
  tr.unix_time = unix_time;
@@ -217,8 +236,8 @@ bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) {
217
236
 
218
237
  default_transition_type_ = 0;
219
238
  abbreviations_ = FixedOffsetToAbbr(offset);
220
- abbreviations_.append(1, '\0'); // add NUL
221
- future_spec_.clear(); // never needed for a fixed-offset zone
239
+ abbreviations_.append(1, '\0');
240
+ future_spec_.clear(); // never needed for a fixed-offset zone
222
241
  extended_ = false;
223
242
 
224
243
  tt.civil_max = LocalTime(seconds::max().count(), tt).cs;
@@ -259,21 +278,6 @@ std::size_t TimeZoneInfo::Header::DataLength(std::size_t time_len) const {
259
278
  return len;
260
279
  }
261
280
 
262
- // Check that the TransitionType has the expected offset/is_dst/abbreviation.
263
- void TimeZoneInfo::CheckTransition(const std::string& name,
264
- const TransitionType& tt,
265
- std::int_fast32_t offset, bool is_dst,
266
- const std::string& abbr) const {
267
- if (tt.utc_offset != offset || tt.is_dst != is_dst ||
268
- &abbreviations_[tt.abbr_index] != abbr) {
269
- std::clog << name << ": Transition"
270
- << " offset=" << tt.utc_offset << "/"
271
- << (tt.is_dst ? "DST" : "STD")
272
- << "/abbr=" << &abbreviations_[tt.abbr_index]
273
- << " does not match POSIX spec '" << future_spec_ << "'\n";
274
- }
275
- }
276
-
277
281
  // zic(8) can generate no-op transitions when a zone changes rules at an
278
282
  // instant when there is actually no discontinuity. So we check whether
279
283
  // two transitions have equivalent types (same offset/is_dst/abbr).
@@ -282,117 +286,108 @@ bool TimeZoneInfo::EquivTransitions(std::uint_fast8_t tt1_index,
282
286
  if (tt1_index == tt2_index) return true;
283
287
  const TransitionType& tt1(transition_types_[tt1_index]);
284
288
  const TransitionType& tt2(transition_types_[tt2_index]);
285
- if (tt1.is_dst != tt2.is_dst) return false;
286
289
  if (tt1.utc_offset != tt2.utc_offset) return false;
290
+ if (tt1.is_dst != tt2.is_dst) return false;
287
291
  if (tt1.abbr_index != tt2.abbr_index) return false;
288
292
  return true;
289
293
  }
290
294
 
295
+ // Find/make a transition type with these attributes.
296
+ bool TimeZoneInfo::GetTransitionType(std::int_fast32_t utc_offset, bool is_dst,
297
+ const std::string& abbr,
298
+ std::uint_least8_t* index) {
299
+ std::size_t type_index = 0;
300
+ std::size_t abbr_index = abbreviations_.size();
301
+ for (; type_index != transition_types_.size(); ++type_index) {
302
+ const TransitionType& tt(transition_types_[type_index]);
303
+ const char* tt_abbr = &abbreviations_[tt.abbr_index];
304
+ if (tt_abbr == abbr) abbr_index = tt.abbr_index;
305
+ if (tt.utc_offset == utc_offset && tt.is_dst == is_dst) {
306
+ if (abbr_index == tt.abbr_index) break; // reuse
307
+ }
308
+ }
309
+ if (type_index > 255 || abbr_index > 255) {
310
+ // No index space (8 bits) available for a new type or abbreviation.
311
+ return false;
312
+ }
313
+ if (type_index == transition_types_.size()) {
314
+ TransitionType& tt(*transition_types_.emplace(transition_types_.end()));
315
+ tt.utc_offset = static_cast<std::int_least32_t>(utc_offset);
316
+ tt.is_dst = is_dst;
317
+ if (abbr_index == abbreviations_.size()) {
318
+ abbreviations_.append(abbr);
319
+ abbreviations_.append(1, '\0');
320
+ }
321
+ tt.abbr_index = static_cast<std::uint_least8_t>(abbr_index);
322
+ }
323
+ *index = static_cast<std::uint_least8_t>(type_index);
324
+ return true;
325
+ }
326
+
291
327
  // Use the POSIX-TZ-environment-variable-style string to handle times
292
328
  // in years after the last transition stored in the zoneinfo data.
293
- void TimeZoneInfo::ExtendTransitions(const std::string& name,
294
- const Header& hdr) {
329
+ bool TimeZoneInfo::ExtendTransitions() {
295
330
  extended_ = false;
296
- bool extending = !future_spec_.empty();
331
+ if (future_spec_.empty()) return true; // last transition prevails
297
332
 
298
333
  PosixTimeZone posix;
299
- if (extending && !ParsePosixSpec(future_spec_, &posix)) {
300
- std::clog << name << ": Failed to parse '" << future_spec_ << "'\n";
301
- extending = false;
302
- }
303
-
304
- if (extending && posix.dst_abbr.empty()) { // std only
305
- // The future specification should match the last/default transition,
306
- // and that means that handling the future will fall out naturally.
307
- std::uint_fast8_t index = default_transition_type_;
308
- if (hdr.timecnt != 0) index = transitions_[hdr.timecnt - 1].type_index;
309
- const TransitionType& tt(transition_types_[index]);
310
- CheckTransition(name, tt, posix.std_offset, false, posix.std_abbr);
311
- extending = false;
312
- }
313
-
314
- if (extending && hdr.timecnt < 2) {
315
- std::clog << name << ": Too few transitions for POSIX spec\n";
316
- extending = false;
317
- }
318
-
319
- if (!extending) {
320
- // Ensure that there is always a transition in the second half of the
321
- // time line (the BIG_BANG transition is in the first half) so that the
322
- // signed difference between a civil_second and the civil_second of its
323
- // previous transition is always representable, without overflow.
324
- const Transition& last(transitions_.back());
325
- if (last.unix_time < 0) {
326
- const std::uint_fast8_t type_index = last.type_index;
327
- Transition& tr(*transitions_.emplace(transitions_.end()));
328
- tr.unix_time = 2147483647; // 2038-01-19T03:14:07+00:00
329
- tr.type_index = type_index;
330
- }
331
- return; // last transition wins
334
+ if (!ParsePosixSpec(future_spec_, &posix)) return false;
335
+
336
+ // Find transition type for the future std specification.
337
+ std::uint_least8_t std_ti;
338
+ if (!GetTransitionType(posix.std_offset, false, posix.std_abbr, &std_ti))
339
+ return false;
340
+
341
+ if (posix.dst_abbr.empty()) { // std only
342
+ // The future specification should match the last transition, and
343
+ // that means that handling the future will fall out naturally.
344
+ return EquivTransitions(transitions_.back().type_index, std_ti);
332
345
  }
333
346
 
347
+ // Find transition type for the future dst specification.
348
+ std::uint_least8_t dst_ti;
349
+ if (!GetTransitionType(posix.dst_offset, true, posix.dst_abbr, &dst_ti))
350
+ return false;
351
+
334
352
  // Extend the transitions for an additional 400 years using the
335
353
  // future specification. Years beyond those can be handled by
336
354
  // mapping back to a cycle-equivalent year within that range.
337
- // zic(8) should probably do this so that we don't have to.
338
- // TODO: Reduce the extension by the number of compatible
339
- // transitions already in place.
340
- transitions_.reserve(hdr.timecnt + 400 * 2 + 1);
341
- transitions_.resize(hdr.timecnt + 400 * 2);
355
+ // We may need two additional transitions for the current year.
356
+ transitions_.reserve(transitions_.size() + 400 * 2 + 2);
342
357
  extended_ = true;
343
358
 
344
- // The future specification should match the last two transitions,
345
- // and those transitions should have different is_dst flags. Note
346
- // that nothing says the UTC offset used by the is_dst transition
347
- // must be greater than that used by the !is_dst transition. (See
348
- // Europe/Dublin, for example.)
349
- const Transition* tr0 = &transitions_[hdr.timecnt - 1];
350
- const Transition* tr1 = &transitions_[hdr.timecnt - 2];
351
- const TransitionType* tt0 = &transition_types_[tr0->type_index];
352
- const TransitionType* tt1 = &transition_types_[tr1->type_index];
353
- const TransitionType& dst(tt0->is_dst ? *tt0 : *tt1);
354
- const TransitionType& std(tt0->is_dst ? *tt1 : *tt0);
355
- CheckTransition(name, dst, posix.dst_offset, true, posix.dst_abbr);
356
- CheckTransition(name, std, posix.std_offset, false, posix.std_abbr);
357
-
358
- // Add the transitions to tr1 and back to tr0 for each extra year.
359
- last_year_ = LocalTime(tr0->unix_time, *tt0).cs.year();
359
+ const Transition& last(transitions_.back());
360
+ const std::int_fast64_t last_time = last.unix_time;
361
+ const TransitionType& last_tt(transition_types_[last.type_index]);
362
+ last_year_ = LocalTime(last_time, last_tt).cs.year();
360
363
  bool leap_year = IsLeap(last_year_);
361
- const civil_day jan1(last_year_, 1, 1);
362
- std::int_fast64_t jan1_time = civil_second(jan1) - civil_second();
363
- int jan1_weekday = (static_cast<int>(get_weekday(jan1)) + 1) % 7;
364
- Transition* tr = &transitions_[hdr.timecnt]; // next trans to fill
365
- if (LocalTime(tr1->unix_time, *tt1).cs.year() != last_year_) {
366
- // Add a single extra transition to align to a calendar year.
367
- transitions_.resize(transitions_.size() + 1);
368
- assert(tr == &transitions_[hdr.timecnt]); // no reallocation
369
- const PosixTransition& pt1(tt0->is_dst ? posix.dst_end : posix.dst_start);
370
- std::int_fast64_t tr1_offset = TransOffset(leap_year, jan1_weekday, pt1);
371
- tr->unix_time = jan1_time + tr1_offset - tt0->utc_offset;
372
- tr++->type_index = tr1->type_index;
373
- tr0 = &transitions_[hdr.timecnt];
374
- tr1 = &transitions_[hdr.timecnt - 1];
375
- tt0 = &transition_types_[tr0->type_index];
376
- tt1 = &transition_types_[tr1->type_index];
377
- }
378
- const PosixTransition& pt1(tt0->is_dst ? posix.dst_end : posix.dst_start);
379
- const PosixTransition& pt0(tt0->is_dst ? posix.dst_start : posix.dst_end);
380
- for (const year_t limit = last_year_ + 400; last_year_ < limit;) {
381
- last_year_ += 1; // an additional year of generated transitions
364
+ const civil_second jan1(last_year_);
365
+ std::int_fast64_t jan1_time = jan1 - civil_second();
366
+ int jan1_weekday = ToPosixWeekday(get_weekday(jan1));
367
+
368
+ Transition dst = {0, dst_ti, civil_second(), civil_second()};
369
+ Transition std = {0, std_ti, civil_second(), civil_second()};
370
+ for (const year_t limit = last_year_ + 400;; ++last_year_) {
371
+ auto dst_trans_off = TransOffset(leap_year, jan1_weekday, posix.dst_start);
372
+ auto std_trans_off = TransOffset(leap_year, jan1_weekday, posix.dst_end);
373
+ dst.unix_time = jan1_time + dst_trans_off - posix.std_offset;
374
+ std.unix_time = jan1_time + std_trans_off - posix.dst_offset;
375
+ const auto* ta = dst.unix_time < std.unix_time ? &dst : &std;
376
+ const auto* tb = dst.unix_time < std.unix_time ? &std : &dst;
377
+ if (last_time < tb->unix_time) {
378
+ if (last_time < ta->unix_time) transitions_.push_back(*ta);
379
+ transitions_.push_back(*tb);
380
+ }
381
+ if (last_year_ == limit) break;
382
382
  jan1_time += kSecsPerYear[leap_year];
383
383
  jan1_weekday = (jan1_weekday + kDaysPerYear[leap_year]) % 7;
384
- leap_year = !leap_year && IsLeap(last_year_);
385
- std::int_fast64_t tr1_offset = TransOffset(leap_year, jan1_weekday, pt1);
386
- tr->unix_time = jan1_time + tr1_offset - tt0->utc_offset;
387
- tr++->type_index = tr1->type_index;
388
- std::int_fast64_t tr0_offset = TransOffset(leap_year, jan1_weekday, pt0);
389
- tr->unix_time = jan1_time + tr0_offset - tt1->utc_offset;
390
- tr++->type_index = tr0->type_index;
391
- }
392
- assert(tr == &transitions_[0] + transitions_.size());
384
+ leap_year = !leap_year && IsLeap(last_year_ + 1);
385
+ }
386
+
387
+ return true;
393
388
  }
394
389
 
395
- bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) {
390
+ bool TimeZoneInfo::Load(ZoneInfoSource* zip) {
396
391
  // Read and validate the header.
397
392
  tzhead tzh;
398
393
  if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) return false;
@@ -430,7 +425,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) {
430
425
  const char* bp = tbuf.data();
431
426
 
432
427
  // Decode and validate the transitions.
433
- transitions_.reserve(hdr.timecnt + 2); // We might add a couple.
428
+ transitions_.reserve(hdr.timecnt + 2);
434
429
  transitions_.resize(hdr.timecnt);
435
430
  for (std::size_t i = 0; i != hdr.timecnt; ++i) {
436
431
  transitions_[i].unix_time = (time_len == 4) ? Decode32(bp) : Decode64(bp);
@@ -449,6 +444,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) {
449
444
  }
450
445
 
451
446
  // Decode and validate the transition types.
447
+ transition_types_.reserve(hdr.typecnt + 2);
452
448
  transition_types_.resize(hdr.typecnt);
453
449
  for (std::size_t i = 0; i != hdr.typecnt; ++i) {
454
450
  transition_types_[i].utc_offset =
@@ -475,6 +471,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) {
475
471
  }
476
472
 
477
473
  // Copy all the abbreviations.
474
+ abbreviations_.reserve(hdr.charcnt + 10);
478
475
  abbreviations_.assign(bp, hdr.charcnt);
479
476
  bp += hdr.charcnt;
480
477
 
@@ -506,7 +503,7 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) {
506
503
 
507
504
  // If we did not find version information during the standard loading
508
505
  // process (as of tzh_version '3' that is unsupported), then ask the
509
- // ZoneInfoSource for any out-of-bound version std::string it may be privy to.
506
+ // ZoneInfoSource for any out-of-bound version string it may be privy to.
510
507
  if (version_.empty()) {
511
508
  version_ = zip->Version();
512
509
  }
@@ -525,19 +522,29 @@ bool TimeZoneInfo::Load(const std::string& name, ZoneInfoSource* zip) {
525
522
  transitions_.resize(hdr.timecnt);
526
523
 
527
524
  // Ensure that there is always a transition in the first half of the
528
- // time line (the second half is handled in ExtendTransitions()) so that
529
- // the signed difference between a civil_second and the civil_second of
530
- // its previous transition is always representable, without overflow.
531
- // A contemporary zic will usually have already done this for us.
525
+ // time line (the second half is handled below) so that the signed
526
+ // difference between a civil_second and the civil_second of its
527
+ // previous transition is always representable, without overflow.
532
528
  if (transitions_.empty() || transitions_.front().unix_time >= 0) {
533
529
  Transition& tr(*transitions_.emplace(transitions_.begin()));
534
- tr.unix_time = -(1LL << 59); // see tz/zic.c "BIG_BANG"
530
+ tr.unix_time = -(1LL << 59); // -18267312070-10-26T17:01:52+00:00
535
531
  tr.type_index = default_transition_type_;
536
- hdr.timecnt += 1;
537
532
  }
538
533
 
539
534
  // Extend the transitions using the future specification.
540
- ExtendTransitions(name, hdr);
535
+ if (!ExtendTransitions()) return false;
536
+
537
+ // Ensure that there is always a transition in the second half of the
538
+ // time line (the first half is handled above) so that the signed
539
+ // difference between a civil_second and the civil_second of its
540
+ // previous transition is always representable, without overflow.
541
+ const Transition& last(transitions_.back());
542
+ if (last.unix_time < 0) {
543
+ const std::uint_fast8_t type_index = last.type_index;
544
+ Transition& tr(*transitions_.emplace(transitions_.end()));
545
+ tr.unix_time = 2147483647; // 2038-01-19T03:14:07+00:00
546
+ tr.type_index = type_index;
547
+ }
541
548
 
542
549
  // Compute the local civil time for each transition and the preceding
543
550
  // second. These will be used for reverse conversions in MakeTime().
@@ -718,12 +725,12 @@ bool TimeZoneInfo::Load(const std::string& name) {
718
725
 
719
726
  // Find and use a ZoneInfoSource to load the named zone.
720
727
  auto zip = cctz_extension::zone_info_source_factory(
721
- name, [](const std::string& name) -> std::unique_ptr<ZoneInfoSource> {
722
- if (auto zip = FileZoneInfoSource::Open(name)) return zip;
723
- if (auto zip = AndroidZoneInfoSource::Open(name)) return zip;
728
+ name, [](const std::string& n) -> std::unique_ptr<ZoneInfoSource> {
729
+ if (auto z = FileZoneInfoSource::Open(n)) return z;
730
+ if (auto z = AndroidZoneInfoSource::Open(n)) return z;
724
731
  return nullptr;
725
732
  });
726
- return zip != nullptr && Load(name, zip.get());
733
+ return zip != nullptr && Load(zip.get());
727
734
  }
728
735
 
729
736
  // BreakTime() translation for a particular transition type.
@@ -897,8 +904,8 @@ bool TimeZoneInfo::NextTransition(const time_point<seconds>& tp,
897
904
  const Transition* begin = &transitions_[0];
898
905
  const Transition* end = begin + transitions_.size();
899
906
  if (begin->unix_time <= -(1LL << 59)) {
900
- // Do not report the BIG_BANG found in recent zoneinfo data as it is
901
- // really a sentinel, not a transition. See tz/zic.c.
907
+ // Do not report the BIG_BANG found in some zoneinfo data as it is
908
+ // really a sentinel, not a transition. See pre-2018f tz/zic.c.
902
909
  ++begin;
903
910
  }
904
911
  std::int_fast64_t unix_time = ToUnixSeconds(tp);
@@ -923,8 +930,8 @@ bool TimeZoneInfo::PrevTransition(const time_point<seconds>& tp,
923
930
  const Transition* begin = &transitions_[0];
924
931
  const Transition* end = begin + transitions_.size();
925
932
  if (begin->unix_time <= -(1LL << 59)) {
926
- // Do not report the BIG_BANG found in recent zoneinfo data as it is
927
- // really a sentinel, not a transition. See tz/zic.c.
933
+ // Do not report the BIG_BANG found in some zoneinfo data as it is
934
+ // really a sentinel, not a transition. See pre-2018f tz/zic.c.
928
935
  ++begin;
929
936
  }
930
937
  std::int_fast64_t unix_time = ToUnixSeconds(tp);
@@ -95,15 +95,14 @@ class TimeZoneInfo : public TimeZoneIf {
95
95
  std::size_t DataLength(std::size_t time_len) const;
96
96
  };
97
97
 
98
- void CheckTransition(const std::string& name, const TransitionType& tt,
99
- std::int_fast32_t offset, bool is_dst,
100
- const std::string& abbr) const;
98
+ bool GetTransitionType(std::int_fast32_t utc_offset, bool is_dst,
99
+ const std::string& abbr, std::uint_least8_t* index);
101
100
  bool EquivTransitions(std::uint_fast8_t tt1_index,
102
101
  std::uint_fast8_t tt2_index) const;
103
- void ExtendTransitions(const std::string& name, const Header& hdr);
102
+ bool ExtendTransitions();
104
103
 
105
104
  bool ResetToBuiltinUTC(const seconds& offset);
106
- bool Load(const std::string& name, ZoneInfoSource* zip);
105
+ bool Load(ZoneInfoSource* zip);
107
106
 
108
107
  // Helpers for BreakTime() and MakeTime().
109
108
  time_zone::absolute_lookup LocalTime(std::int_fast64_t unix_time,
@@ -153,7 +153,8 @@ std::time_t find_trans(std::time_t lo, std::time_t hi, int offset) {
153
153
  std::tm tm;
154
154
  while (lo + 1 != hi) {
155
155
  const std::time_t mid = lo + (hi - lo) / 2;
156
- if (std::tm* tmp = local_time(&mid, &tm)) {
156
+ std::tm* tmp = local_time(&mid, &tm);
157
+ if (tmp != nullptr) {
157
158
  if (tm_gmtoff(*tmp) == offset) {
158
159
  hi = mid;
159
160
  } else {
@@ -163,7 +164,8 @@ std::time_t find_trans(std::time_t lo, std::time_t hi, int offset) {
163
164
  // If std::tm cannot hold some result we resort to a linear search,
164
165
  // ignoring all failed conversions. Slow, but never really happens.
165
166
  while (++lo != hi) {
166
- if (std::tm* tmp = local_time(&lo, &tm)) {
167
+ tmp = local_time(&lo, &tm);
168
+ if (tmp != nullptr) {
167
169
  if (tm_gmtoff(*tmp) == offset) break;
168
170
  }
169
171
  }
@@ -223,11 +225,10 @@ time_zone::civil_lookup TimeZoneLibC::MakeTime(const civil_second& cs) const {
223
225
  civil_second() + ToUnixSeconds(time_point<seconds>::min());
224
226
  static const civil_second max_tp_cs =
225
227
  civil_second() + ToUnixSeconds(time_point<seconds>::max());
226
- const time_point<seconds> tp =
227
- (cs < min_tp_cs)
228
- ? time_point<seconds>::min()
229
- : (cs > max_tp_cs) ? time_point<seconds>::max()
230
- : FromUnixSeconds(cs - civil_second());
228
+ const time_point<seconds> tp = (cs < min_tp_cs) ? time_point<seconds>::min()
229
+ : (cs > max_tp_cs)
230
+ ? time_point<seconds>::max()
231
+ : FromUnixSeconds(cs - civil_second());
231
232
  return {time_zone::civil_lookup::UNIQUE, tp, tp, tp};
232
233
  }
233
234