grpc 1.27.0 → 1.30.2

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 (965) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8023 -11435
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +30 -9
  5. data/include/grpc/grpc_security_constants.h +1 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +24 -21
  7. data/include/grpc/impl/codegen/port_platform.h +13 -2
  8. data/include/grpc/impl/codegen/sync.h +5 -3
  9. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  10. data/include/grpc/module.modulemap +25 -37
  11. data/include/grpc/support/sync_abseil.h +26 -0
  12. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  13. data/src/core/ext/filters/client_channel/client_channel.cc +282 -269
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  15. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  16. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  17. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  18. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  19. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  20. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -11
  21. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  22. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +286 -495
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -14
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +148 -98
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  42. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +49 -77
  44. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  45. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  46. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  47. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  48. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +129 -128
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +17 -21
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +186 -135
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  58. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +42 -45
  59. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +94 -103
  60. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  61. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  62. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +61 -10
  63. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  64. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  65. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  66. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +242 -300
  67. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +21 -18
  68. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +56 -206
  69. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +11 -14
  70. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  71. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  72. data/src/core/ext/filters/client_channel/service_config.cc +144 -253
  73. data/src/core/ext/filters/client_channel/service_config.h +32 -109
  74. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  75. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  76. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  77. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  78. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  79. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1381 -301
  80. data/src/core/ext/filters/client_channel/xds/xds_api.h +211 -152
  81. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +214 -359
  82. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +28 -44
  83. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  84. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +16 -11
  85. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1118 -472
  86. data/src/core/ext/filters/client_channel/xds/xds_client.h +116 -45
  87. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -135
  88. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +122 -137
  89. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  90. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  91. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  92. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  93. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  94. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  95. data/src/core/ext/filters/message_size/message_size_filter.cc +38 -44
  96. data/src/core/ext/filters/message_size/message_size_filter.h +5 -5
  97. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -10
  98. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  99. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +26 -27
  100. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  103. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  105. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  106. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  107. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  108. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  109. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  110. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  111. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  112. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  114. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  115. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -9
  116. data/src/core/ext/transport/inproc/inproc_transport.cc +41 -42
  117. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  118. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  119. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  120. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  121. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +5 -205
  122. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -788
  123. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  124. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  125. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  126. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  127. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  128. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  129. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +5 -362
  130. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  131. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  133. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +30 -8
  134. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +2 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +2 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +7 -4
  138. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  139. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  140. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  141. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +87 -23
  142. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +262 -62
  143. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +20 -15
  144. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  145. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  146. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  147. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +27 -4
  148. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +46 -25
  150. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +98 -25
  151. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +2 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +77 -21
  153. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +201 -4
  154. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  156. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -0
  157. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +8 -68
  158. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  159. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  160. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  161. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +2 -71
  162. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  163. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  164. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  165. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +2 -0
  166. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  167. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  168. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  169. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  170. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  171. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  172. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  173. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  174. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  175. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  176. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  177. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  178. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  179. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  180. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  181. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  182. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  183. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  184. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  185. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  186. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  187. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  188. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  189. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  190. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  191. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  192. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  193. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  194. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  195. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  196. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  197. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  198. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  199. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  200. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  201. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  202. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  203. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  204. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  205. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  206. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  207. data/src/core/ext/upb-generated/envoy/type/range.upb.c +12 -0
  208. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  209. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  210. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  211. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  212. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  213. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  214. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  215. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  216. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  217. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  218. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  219. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  220. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  221. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  222. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  223. data/src/core/ext/upb-generated/validate/validate.upb.c +44 -39
  224. data/src/core/ext/upb-generated/validate/validate.upb.h +155 -119
  225. data/src/core/lib/channel/channel_args.cc +15 -14
  226. data/src/core/lib/channel/channel_args.h +3 -1
  227. data/src/core/lib/channel/channel_stack.h +20 -13
  228. data/src/core/lib/channel/channel_trace.cc +32 -41
  229. data/src/core/lib/channel/channel_trace.h +3 -3
  230. data/src/core/lib/channel/channelz.cc +163 -254
  231. data/src/core/lib/channel/channelz.h +15 -17
  232. data/src/core/lib/channel/channelz_registry.cc +52 -77
  233. data/src/core/lib/channel/channelz_registry.h +4 -4
  234. data/src/core/lib/channel/connected_channel.cc +7 -5
  235. data/src/core/lib/channel/context.h +1 -1
  236. data/src/core/lib/channel/handshaker.cc +11 -13
  237. data/src/core/lib/channel/handshaker.h +4 -2
  238. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  239. data/src/core/lib/channel/status_util.cc +2 -3
  240. data/src/core/lib/compression/message_compress.cc +5 -1
  241. data/src/core/lib/debug/stats.cc +21 -27
  242. data/src/core/lib/debug/stats.h +3 -1
  243. data/src/core/lib/gpr/spinlock.h +2 -3
  244. data/src/core/lib/gpr/string.cc +2 -26
  245. data/src/core/lib/gpr/string.h +0 -16
  246. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  247. data/src/core/lib/gpr/sync_posix.cc +8 -5
  248. data/src/core/lib/gpr/sync_windows.cc +4 -2
  249. data/src/core/lib/gpr/time.cc +4 -0
  250. data/src/core/lib/gpr/time_posix.cc +1 -1
  251. data/src/core/lib/gprpp/atomic.h +6 -6
  252. data/src/core/lib/gprpp/fork.cc +1 -1
  253. data/src/core/lib/gprpp/host_port.cc +30 -36
  254. data/src/core/lib/gprpp/host_port.h +14 -17
  255. data/src/core/lib/gprpp/map.h +5 -11
  256. data/src/core/lib/gprpp/memory.h +2 -6
  257. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  258. data/src/core/lib/gprpp/sync.h +9 -0
  259. data/src/core/lib/http/format_request.cc +46 -65
  260. data/src/core/lib/http/httpcli.cc +2 -3
  261. data/src/core/lib/http/httpcli.h +2 -3
  262. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  263. data/src/core/lib/http/parser.h +2 -3
  264. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  265. data/src/core/lib/iomgr/buffer_list.h +22 -21
  266. data/src/core/lib/iomgr/call_combiner.h +3 -2
  267. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  268. data/src/core/lib/iomgr/closure.h +2 -3
  269. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  270. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  271. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  272. data/src/core/lib/iomgr/error.cc +6 -9
  273. data/src/core/lib/iomgr/error.h +4 -5
  274. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  275. data/src/core/lib/iomgr/ev_apple.h +43 -0
  276. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  277. data/src/core/lib/iomgr/ev_epollex_linux.cc +14 -7
  278. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  279. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  280. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  281. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  282. data/src/core/lib/iomgr/load_file.cc +1 -0
  283. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  284. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  285. data/src/core/lib/iomgr/port.h +1 -0
  286. data/src/core/lib/iomgr/python_util.h +46 -0
  287. data/src/core/lib/iomgr/resolve_address.h +4 -6
  288. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  289. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  290. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  291. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  292. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  293. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  294. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  295. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  296. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  297. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
  298. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  299. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  300. data/src/core/lib/iomgr/tcp_client_posix.cc +25 -22
  301. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  302. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  303. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  304. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  305. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
  306. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  307. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
  308. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  309. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  310. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  311. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  312. data/src/core/lib/iomgr/timer_generic.h +39 -0
  313. data/src/core/lib/iomgr/timer_heap.h +2 -3
  314. data/src/core/lib/iomgr/udp_server.cc +9 -14
  315. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  316. data/src/core/lib/iomgr/work_serializer.h +65 -0
  317. data/src/core/lib/json/json.h +210 -79
  318. data/src/core/lib/json/json_reader.cc +469 -455
  319. data/src/core/lib/json/json_writer.cc +174 -169
  320. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  321. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  322. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  323. data/src/core/lib/security/credentials/credentials.cc +0 -84
  324. data/src/core/lib/security/credentials/credentials.h +8 -59
  325. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  326. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -12
  327. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  328. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  329. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  330. data/src/core/lib/security/credentials/jwt/json_token.h +4 -6
  331. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  332. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  333. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +151 -168
  334. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
  335. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +91 -60
  336. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
  337. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
  338. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  339. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  340. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +40 -12
  341. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  342. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
  343. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  344. data/src/core/lib/security/security_connector/local/local_security_connector.cc +6 -8
  345. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  346. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -37
  347. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  348. data/src/core/lib/security/security_connector/ssl_utils.cc +62 -13
  349. data/src/core/lib/security/security_connector/ssl_utils.h +12 -11
  350. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -52
  351. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +32 -6
  352. data/src/core/lib/security/transport/auth_filters.h +0 -5
  353. data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
  354. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  355. data/src/core/lib/security/util/json_util.cc +22 -15
  356. data/src/core/lib/security/util/json_util.h +2 -2
  357. data/src/core/lib/slice/slice_intern.cc +2 -3
  358. data/src/core/lib/slice/slice_internal.h +14 -0
  359. data/src/core/lib/slice/slice_utils.h +9 -0
  360. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  361. data/src/core/lib/surface/call.cc +2 -3
  362. data/src/core/lib/surface/call_log_batch.cc +50 -58
  363. data/src/core/lib/surface/channel.cc +53 -31
  364. data/src/core/lib/surface/channel.h +35 -4
  365. data/src/core/lib/surface/channel_ping.cc +2 -3
  366. data/src/core/lib/surface/completion_queue.cc +33 -33
  367. data/src/core/lib/surface/event_string.cc +18 -25
  368. data/src/core/lib/surface/event_string.h +3 -1
  369. data/src/core/lib/surface/init_secure.cc +1 -4
  370. data/src/core/lib/surface/server.cc +570 -369
  371. data/src/core/lib/surface/server.h +32 -0
  372. data/src/core/lib/surface/version.cc +2 -2
  373. data/src/core/lib/transport/byte_stream.h +7 -2
  374. data/src/core/lib/transport/connectivity_state.cc +7 -6
  375. data/src/core/lib/transport/connectivity_state.h +5 -3
  376. data/src/core/lib/transport/metadata.cc +3 -3
  377. data/src/core/lib/transport/metadata_batch.h +2 -3
  378. data/src/core/lib/transport/static_metadata.h +1 -1
  379. data/src/core/lib/transport/status_conversion.cc +6 -14
  380. data/src/core/lib/transport/transport.cc +2 -3
  381. data/src/core/lib/transport/transport.h +3 -2
  382. data/src/core/lib/transport/transport_op_string.cc +61 -102
  383. data/src/core/lib/uri/uri_parser.h +2 -3
  384. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  385. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  386. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +9 -2
  387. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  388. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -3
  389. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  390. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  391. data/src/core/tsi/fake_transport_security.cc +10 -15
  392. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  393. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  394. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  395. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  396. data/src/core/tsi/ssl_transport_security.cc +54 -40
  397. data/src/core/tsi/ssl_transport_security.h +8 -8
  398. data/src/core/tsi/ssl_types.h +0 -2
  399. data/src/core/tsi/transport_security.h +6 -9
  400. data/src/core/tsi/transport_security_grpc.h +2 -3
  401. data/src/core/tsi/transport_security_interface.h +3 -3
  402. data/src/ruby/ext/grpc/rb_call.c +9 -1
  403. data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
  404. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  405. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  406. data/src/ruby/lib/grpc/errors.rb +103 -42
  407. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  408. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  409. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  410. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  411. data/src/ruby/lib/grpc/structs.rb +1 -1
  412. data/src/ruby/lib/grpc/version.rb +1 -1
  413. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  414. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  415. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  416. data/src/ruby/spec/debug_message_spec.rb +134 -0
  417. data/src/ruby/spec/generic/service_spec.rb +2 -0
  418. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  419. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  420. data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
  421. data/src/ruby/spec/support/services.rb +10 -4
  422. data/src/ruby/spec/testdata/ca.pem +18 -13
  423. data/src/ruby/spec/testdata/client.key +26 -14
  424. data/src/ruby/spec/testdata/client.pem +18 -12
  425. data/src/ruby/spec/testdata/server1.key +26 -14
  426. data/src/ruby/spec/testdata/server1.pem +20 -14
  427. data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
  428. data/third_party/abseil-cpp/absl/base/config.h +10 -4
  429. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  430. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  431. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
  432. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
  433. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  434. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  435. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  436. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  437. data/third_party/abseil-cpp/absl/base/options.h +2 -10
  438. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  439. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  452. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  453. data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
  454. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  455. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  456. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  457. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  458. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  459. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  465. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  466. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  467. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  468. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  469. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  470. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  471. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  472. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  473. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  481. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  482. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  483. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  484. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  485. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +329 -297
  486. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  487. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  488. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  489. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  490. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  491. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  492. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +1 -1
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +7 -6
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +13 -4
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +11 -0
  564. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519.c +18 -26
  565. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519_tables.h +13 -21
  566. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/internal.h +14 -22
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +1 -1
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +16 -2
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  571. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  572. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  573. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +10 -0
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  577. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +2 -2
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +39 -38
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  584. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  585. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  603. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  604. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +4 -1
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +3 -3
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +14 -11
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +8 -8
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +30 -154
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +16 -0
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +289 -117
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +14 -28
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +25 -7
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +432 -160
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +63 -71
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +5 -14
  651. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  654. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  655. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  656. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +125 -148
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +61 -18
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  673. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  674. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  675. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  676. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  677. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  678. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  679. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  680. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  681. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +41 -5
  682. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +32 -17
  683. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +24 -114
  684. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +4 -0
  685. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +1 -0
  686. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  687. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +58 -39
  688. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +72 -49
  689. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  690. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  691. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  692. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  693. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  694. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +44 -35
  695. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  696. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  697. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  698. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  699. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  700. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  701. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  702. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +99 -12
  703. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  704. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +41 -6
  705. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  706. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  707. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  708. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  709. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  710. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  711. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  712. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  713. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  714. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  715. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  716. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  717. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  718. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  719. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  720. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  721. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  722. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  723. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  724. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  725. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  726. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  727. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +6 -10
  728. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  729. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  730. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  731. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +16 -0
  732. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  733. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  734. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  735. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  736. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  737. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  738. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  739. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  740. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  741. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +4 -0
  742. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +4 -0
  743. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  744. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  745. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  746. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  747. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  748. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  749. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  750. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  751. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  752. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  753. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  754. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  755. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  756. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  757. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  758. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  759. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  760. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  761. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  762. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  763. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  764. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  765. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  766. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  767. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  768. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  769. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  770. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  771. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  772. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  773. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +16 -0
  774. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  775. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  776. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  777. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +5 -1
  778. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  779. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  780. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +4 -3
  781. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  782. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  783. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  784. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  785. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  786. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  787. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  788. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  789. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  790. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  791. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  792. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  793. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  794. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  795. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  796. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  797. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  798. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  799. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  800. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  801. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  802. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  803. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  804. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  805. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  806. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  807. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  808. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  809. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  810. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  811. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  812. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  813. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  814. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  815. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  816. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  817. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  818. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  819. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  820. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  821. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  822. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  823. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  824. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  825. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  826. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  827. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  828. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  829. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  830. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  831. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  832. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  833. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  834. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  835. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  836. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  837. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  838. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  839. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  840. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +5 -1
  841. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  842. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  843. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  844. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  845. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  846. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  847. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  848. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  849. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  850. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  851. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  852. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  853. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  854. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +9 -4
  855. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  856. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  857. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +20 -0
  858. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +1 -0
  859. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +16 -0
  860. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  861. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  862. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  863. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  864. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  865. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +6 -0
  866. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  867. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +13 -9
  868. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  869. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  870. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  871. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  872. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  873. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  874. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  875. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  876. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  877. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  878. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +14 -0
  879. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  880. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  881. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  882. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  883. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  884. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  885. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  886. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  887. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  888. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  889. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  890. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  891. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +3 -17
  892. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  893. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  894. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +31 -0
  895. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  896. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +26 -0
  897. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  898. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  899. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  900. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +182 -97
  901. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  902. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  903. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  904. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +1 -3
  905. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  906. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  907. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +5 -3
  908. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +1 -0
  909. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  910. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  911. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -5
  912. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +3 -3
  913. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  914. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  915. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +13 -5
  916. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  917. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +237 -51
  918. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +19 -7
  919. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +51 -32
  920. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +12 -8
  921. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +94 -71
  922. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +10 -10
  923. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +4 -5
  924. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +21 -22
  925. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  926. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +30 -2
  927. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  928. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +4 -1
  929. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  930. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  931. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  932. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +19 -15
  933. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +13 -2
  934. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +66 -6
  935. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +6 -0
  936. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  937. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  938. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  939. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +6 -2
  940. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +53 -219
  941. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +1 -1
  942. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +101 -31
  943. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +28 -76
  944. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +111 -104
  945. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +64 -26
  946. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  947. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +245 -175
  948. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +135 -75
  949. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  950. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +512 -503
  951. metadata +648 -499
  952. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1917
  953. data/src/core/lib/gprpp/inlined_vector.h +0 -246
  954. data/src/core/lib/gprpp/optional.h +0 -74
  955. data/src/core/lib/gprpp/string_view.h +0 -169
  956. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  957. data/src/core/lib/iomgr/logical_thread.h +0 -52
  958. data/src/core/lib/json/json.cc +0 -94
  959. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3297
  960. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
  961. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
  962. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
  963. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
  964. data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
  965. data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
@@ -25,196 +25,255 @@
25
25
 
26
26
  #include <set>
27
27
 
28
+ #include "absl/container/inlined_vector.h"
29
+ #include "absl/types/optional.h"
30
+
28
31
  #include <grpc/slice_buffer.h>
29
32
 
30
33
  #include "src/core/ext/filters/client_channel/server_address.h"
31
34
  #include "src/core/ext/filters/client_channel/xds/xds_bootstrap.h"
32
35
  #include "src/core/ext/filters/client_channel/xds/xds_client_stats.h"
33
- #include "src/core/lib/gprpp/optional.h"
34
36
 
35
37
  namespace grpc_core {
36
38
 
37
- constexpr char kCdsTypeUrl[] = "type.googleapis.com/envoy.api.v2.Cluster";
38
- constexpr char kEdsTypeUrl[] =
39
- "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
40
-
41
- // The version state for each specific ADS resource type.
42
- struct VersionState {
43
- // The version of the latest response that is accepted and used.
44
- std::string version_info;
45
- // The nonce of the latest response.
46
- std::string nonce;
47
- // The error message to be included in a NACK with the nonce. Consumed when a
48
- // nonce is NACK'ed for the first time.
49
- grpc_error* error = GRPC_ERROR_NONE;
50
-
51
- ~VersionState() { GRPC_ERROR_UNREF(error); }
52
- };
53
-
54
- struct CdsUpdate {
55
- // The name to use in the EDS request.
56
- // If empty, the cluster name will be used.
57
- std::string eds_service_name;
58
- // The LRS server to use for load reporting.
59
- // If not set, load reporting will be disabled.
60
- // If set to the empty string, will use the same server we obtained the CDS
61
- // data from.
62
- Optional<std::string> lrs_load_reporting_server_name;
63
- };
64
-
65
- using CdsUpdateMap = std::map<std::string /*cluster_name*/, CdsUpdate>;
39
+ class XdsClient;
66
40
 
67
- class XdsPriorityListUpdate {
41
+ class XdsApi {
68
42
  public:
69
- struct LocalityMap {
70
- struct Locality {
71
- bool operator==(const Locality& other) const {
72
- return *name == *other.name && serverlist == other.serverlist &&
73
- lb_weight == other.lb_weight && priority == other.priority;
74
- }
75
-
76
- // This comparator only compares the locality names.
77
- struct Less {
78
- bool operator()(const Locality& lhs, const Locality& rhs) const {
79
- return XdsLocalityName::Less()(lhs.name, rhs.name);
43
+ static const char* kLdsTypeUrl;
44
+ static const char* kRdsTypeUrl;
45
+ static const char* kCdsTypeUrl;
46
+ static const char* kEdsTypeUrl;
47
+
48
+ struct RdsUpdate {
49
+ struct RdsRoute {
50
+ std::string service;
51
+ std::string method;
52
+ // TODO(donnadionne): When we can use absl::variant<>, consider using that
53
+ // here, to enforce the fact that only one of cluster_name and
54
+ // weighted_clusters can be set.
55
+ std::string cluster_name;
56
+ struct ClusterWeight {
57
+ std::string name;
58
+ uint32_t weight;
59
+
60
+ bool operator==(const ClusterWeight& other) const {
61
+ return (name == other.name && weight == other.weight);
80
62
  }
81
63
  };
64
+ std::vector<ClusterWeight> weighted_clusters;
82
65
 
83
- RefCountedPtr<XdsLocalityName> name;
84
- ServerAddressList serverlist;
85
- uint32_t lb_weight;
86
- uint32_t priority;
66
+ bool operator==(const RdsRoute& other) const {
67
+ return (service == other.service && method == other.method &&
68
+ cluster_name == other.cluster_name &&
69
+ weighted_clusters == other.weighted_clusters);
70
+ }
87
71
  };
88
72
 
89
- bool Contains(const RefCountedPtr<XdsLocalityName>& name) const {
90
- return localities.find(name) != localities.end();
73
+ std::vector<RdsRoute> routes;
74
+
75
+ bool operator==(const RdsUpdate& other) const {
76
+ return routes == other.routes;
91
77
  }
78
+ };
92
79
 
93
- size_t size() const { return localities.size(); }
80
+ // TODO(roth): When we can use absl::variant<>, consider using that
81
+ // here, to enforce the fact that only one of the two fields can be set.
82
+ struct LdsUpdate {
83
+ // The name to use in the RDS request.
84
+ std::string route_config_name;
85
+ // The name to use in the CDS request. Present if the LDS response has it
86
+ // inlined.
87
+ absl::optional<RdsUpdate> rds_update;
88
+
89
+ bool operator==(const LdsUpdate& other) const {
90
+ return route_config_name == other.route_config_name &&
91
+ rds_update == other.rds_update;
92
+ }
93
+ };
94
94
 
95
- std::map<RefCountedPtr<XdsLocalityName>, Locality, XdsLocalityName::Less>
96
- localities;
95
+ using LdsUpdateMap = std::map<std::string /*server_name*/, LdsUpdate>;
96
+
97
+ using RdsUpdateMap = std::map<std::string /*route_config_name*/, RdsUpdate>;
98
+
99
+ struct CdsUpdate {
100
+ // The name to use in the EDS request.
101
+ // If empty, the cluster name will be used.
102
+ std::string eds_service_name;
103
+ // The LRS server to use for load reporting.
104
+ // If not set, load reporting will be disabled.
105
+ // If set to the empty string, will use the same server we obtained the CDS
106
+ // data from.
107
+ absl::optional<std::string> lrs_load_reporting_server_name;
97
108
  };
98
109
 
99
- bool operator==(const XdsPriorityListUpdate& other) const;
100
- bool operator!=(const XdsPriorityListUpdate& other) const {
101
- return !(*this == other);
102
- }
110
+ using CdsUpdateMap = std::map<std::string /*cluster_name*/, CdsUpdate>;
103
111
 
104
- void Add(LocalityMap::Locality locality);
112
+ class PriorityListUpdate {
113
+ public:
114
+ struct LocalityMap {
115
+ struct Locality {
116
+ bool operator==(const Locality& other) const {
117
+ return *name == *other.name && serverlist == other.serverlist &&
118
+ lb_weight == other.lb_weight && priority == other.priority;
119
+ }
105
120
 
106
- const LocalityMap* Find(uint32_t priority) const;
121
+ // This comparator only compares the locality names.
122
+ struct Less {
123
+ bool operator()(const Locality& lhs, const Locality& rhs) const {
124
+ return XdsLocalityName::Less()(lhs.name, rhs.name);
125
+ }
126
+ };
127
+
128
+ RefCountedPtr<XdsLocalityName> name;
129
+ ServerAddressList serverlist;
130
+ uint32_t lb_weight;
131
+ uint32_t priority;
132
+ };
107
133
 
108
- bool Contains(uint32_t priority) const {
109
- return priority < priorities_.size();
110
- }
111
- bool Contains(const RefCountedPtr<XdsLocalityName>& name);
134
+ bool Contains(const RefCountedPtr<XdsLocalityName>& name) const {
135
+ return localities.find(name) != localities.end();
136
+ }
112
137
 
113
- bool empty() const { return priorities_.empty(); }
114
- size_t size() const { return priorities_.size(); }
138
+ size_t size() const { return localities.size(); }
115
139
 
116
- // Callers should make sure the priority list is non-empty.
117
- uint32_t LowestPriority() const {
118
- return static_cast<uint32_t>(priorities_.size()) - 1;
119
- }
140
+ std::map<RefCountedPtr<XdsLocalityName>, Locality, XdsLocalityName::Less>
141
+ localities;
142
+ };
120
143
 
121
- private:
122
- InlinedVector<LocalityMap, 2> priorities_;
123
- };
144
+ bool operator==(const PriorityListUpdate& other) const;
145
+ bool operator!=(const PriorityListUpdate& other) const {
146
+ return !(*this == other);
147
+ }
124
148
 
125
- // There are two phases of accessing this class's content:
126
- // 1. to initialize in the control plane combiner;
127
- // 2. to use in the data plane combiner.
128
- // So no additional synchronization is needed.
129
- class XdsDropConfig : public RefCounted<XdsDropConfig> {
130
- public:
131
- struct DropCategory {
132
- bool operator==(const DropCategory& other) const {
133
- return name == other.name && parts_per_million == other.parts_per_million;
149
+ void Add(LocalityMap::Locality locality);
150
+
151
+ const LocalityMap* Find(uint32_t priority) const;
152
+
153
+ bool Contains(uint32_t priority) const {
154
+ return priority < priorities_.size();
155
+ }
156
+ bool Contains(const RefCountedPtr<XdsLocalityName>& name);
157
+
158
+ bool empty() const { return priorities_.empty(); }
159
+ size_t size() const { return priorities_.size(); }
160
+
161
+ // Callers should make sure the priority list is non-empty.
162
+ uint32_t LowestPriority() const {
163
+ return static_cast<uint32_t>(priorities_.size()) - 1;
134
164
  }
135
165
 
136
- std::string name;
137
- const uint32_t parts_per_million;
166
+ private:
167
+ absl::InlinedVector<LocalityMap, 2> priorities_;
138
168
  };
139
169
 
140
- using DropCategoryList = InlinedVector<DropCategory, 2>;
170
+ // There are two phases of accessing this class's content:
171
+ // 1. to initialize in the control plane combiner;
172
+ // 2. to use in the data plane combiner.
173
+ // So no additional synchronization is needed.
174
+ class DropConfig : public RefCounted<DropConfig> {
175
+ public:
176
+ struct DropCategory {
177
+ bool operator==(const DropCategory& other) const {
178
+ return name == other.name &&
179
+ parts_per_million == other.parts_per_million;
180
+ }
141
181
 
142
- void AddCategory(std::string name, uint32_t parts_per_million) {
143
- drop_category_list_.emplace_back(
144
- DropCategory{std::move(name), parts_per_million});
145
- }
182
+ std::string name;
183
+ const uint32_t parts_per_million;
184
+ };
146
185
 
147
- // The only method invoked from the data plane combiner.
148
- bool ShouldDrop(const std::string** category_name) const;
186
+ using DropCategoryList = absl::InlinedVector<DropCategory, 2>;
149
187
 
150
- const DropCategoryList& drop_category_list() const {
151
- return drop_category_list_;
152
- }
188
+ void AddCategory(std::string name, uint32_t parts_per_million) {
189
+ drop_category_list_.emplace_back(
190
+ DropCategory{std::move(name), parts_per_million});
191
+ if (parts_per_million == 1000000) drop_all_ = true;
192
+ }
153
193
 
154
- bool operator==(const XdsDropConfig& other) const {
155
- return drop_category_list_ == other.drop_category_list_;
156
- }
157
- bool operator!=(const XdsDropConfig& other) const {
158
- return !(*this == other);
159
- }
194
+ // The only method invoked from the data plane combiner.
195
+ bool ShouldDrop(const std::string** category_name) const;
160
196
 
161
- private:
162
- DropCategoryList drop_category_list_;
163
- };
197
+ const DropCategoryList& drop_category_list() const {
198
+ return drop_category_list_;
199
+ }
164
200
 
165
- struct EdsUpdate {
166
- XdsPriorityListUpdate priority_list_update;
167
- RefCountedPtr<XdsDropConfig> drop_config;
168
- bool drop_all = false;
169
- };
201
+ bool drop_all() const { return drop_all_; }
170
202
 
171
- using EdsUpdateMap = std::map<std::string /*eds_service_name*/, EdsUpdate>;
172
-
173
- // Creates a request to nack an unsupported resource type.
174
- // Takes ownership of \a error.
175
- grpc_slice XdsUnsupportedTypeNackRequestCreateAndEncode(
176
- const std::string& type_url, const std::string& nonce, grpc_error* error);
177
-
178
- // Creates a CDS request querying \a cluster_names.
179
- // Takes ownership of \a error.
180
- grpc_slice XdsCdsRequestCreateAndEncode(
181
- const std::set<StringView>& cluster_names, const XdsBootstrap::Node* node,
182
- const char* build_version, const std::string& version,
183
- const std::string& nonce, grpc_error* error);
184
-
185
- // Creates an EDS request querying \a eds_service_names.
186
- // Takes ownership of \a error.
187
- grpc_slice XdsEdsRequestCreateAndEncode(
188
- const std::set<StringView>& eds_service_names,
189
- const XdsBootstrap::Node* node, const char* build_version,
190
- const std::string& version, const std::string& nonce, grpc_error* error);
191
-
192
- // Parses the ADS response and outputs the validated update for either CDS or
193
- // EDS. If the response can't be parsed at the top level, \a type_url will point
194
- // to an empty string; otherwise, it will point to the received data.
195
- grpc_error* XdsAdsResponseDecodeAndParse(
196
- const grpc_slice& encoded_response,
197
- const std::set<StringView>& expected_eds_service_names,
198
- CdsUpdateMap* cds_update_map, EdsUpdateMap* eds_update_map,
199
- std::string* version, std::string* nonce, std::string* type_url);
200
-
201
- // Creates an LRS request querying \a server_name.
202
- grpc_slice XdsLrsRequestCreateAndEncode(const std::string& server_name,
203
- const XdsBootstrap::Node* node,
204
- const char* build_version);
205
-
206
- // Creates an LRS request sending client-side load reports. If all the counters
207
- // are zero, returns empty slice.
208
- grpc_slice XdsLrsRequestCreateAndEncode(
209
- std::map<StringView /*cluster_name*/, std::set<XdsClientStats*>>
210
- client_stats_map);
211
-
212
- // Parses the LRS response and returns \a
213
- // load_reporting_interval for client-side load reporting. If there is any
214
- // error, the output config is invalid.
215
- grpc_error* XdsLrsResponseDecodeAndParse(const grpc_slice& encoded_response,
216
- std::set<std::string>* cluster_names,
217
- grpc_millis* load_reporting_interval);
203
+ bool operator==(const DropConfig& other) const {
204
+ return drop_category_list_ == other.drop_category_list_;
205
+ }
206
+ bool operator!=(const DropConfig& other) const { return !(*this == other); }
207
+
208
+ private:
209
+ DropCategoryList drop_category_list_;
210
+ bool drop_all_ = false;
211
+ };
212
+
213
+ struct EdsUpdate {
214
+ PriorityListUpdate priority_list_update;
215
+ RefCountedPtr<DropConfig> drop_config;
216
+ };
217
+
218
+ using EdsUpdateMap = std::map<std::string /*eds_service_name*/, EdsUpdate>;
219
+
220
+ struct ClusterLoadReport {
221
+ XdsClusterDropStats::DroppedRequestsMap dropped_requests;
222
+ std::map<RefCountedPtr<XdsLocalityName>, XdsClusterLocalityStats::Snapshot,
223
+ XdsLocalityName::Less>
224
+ locality_stats;
225
+ grpc_millis load_report_interval;
226
+ };
227
+ using ClusterLoadReportMap = std::map<
228
+ std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
229
+ ClusterLoadReport>;
230
+
231
+ XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap::Node* node);
232
+
233
+ // Creates an ADS request.
234
+ // Takes ownership of \a error.
235
+ grpc_slice CreateAdsRequest(const std::string& type_url,
236
+ const std::set<absl::string_view>& resource_names,
237
+ const std::string& version,
238
+ const std::string& nonce, grpc_error* error,
239
+ bool populate_node);
240
+
241
+ // Parses the ADS response and outputs the validated update for either CDS or
242
+ // EDS. If the response can't be parsed at the top level, \a type_url will
243
+ // point to an empty string; otherwise, it will point to the received data.
244
+ grpc_error* ParseAdsResponse(
245
+ const grpc_slice& encoded_response,
246
+ const std::string& expected_server_name,
247
+ const std::set<absl::string_view>& expected_route_configuration_names,
248
+ const std::set<absl::string_view>& expected_cluster_names,
249
+ const std::set<absl::string_view>& expected_eds_service_names,
250
+ absl::optional<LdsUpdate>* lds_update,
251
+ absl::optional<RdsUpdate>* rds_update, CdsUpdateMap* cds_update_map,
252
+ EdsUpdateMap* eds_update_map, std::string* version, std::string* nonce,
253
+ std::string* type_url);
254
+
255
+ // Creates an LRS request querying \a server_name.
256
+ grpc_slice CreateLrsInitialRequest(const std::string& server_name);
257
+
258
+ // Creates an LRS request sending a client-side load report.
259
+ grpc_slice CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
260
+
261
+ // Parses the LRS response and returns \a
262
+ // load_reporting_interval for client-side load reporting. If there is any
263
+ // error, the output config is invalid.
264
+ grpc_error* ParseLrsResponse(const grpc_slice& encoded_response,
265
+ bool* send_all_clusters,
266
+ std::set<std::string>* cluster_names,
267
+ grpc_millis* load_reporting_interval);
268
+
269
+ private:
270
+ XdsClient* client_;
271
+ TraceFlag* tracer_;
272
+ const bool xds_routing_enabled_;
273
+ const XdsBootstrap::Node* node_;
274
+ const std::string build_version_;
275
+ const std::string user_agent_name_;
276
+ };
218
277
 
219
278
  } // namespace grpc_core
220
279
 
@@ -18,107 +18,148 @@
18
18
 
19
19
  #include "src/core/ext/filters/client_channel/xds/xds_bootstrap.h"
20
20
 
21
+ #include <vector>
22
+
21
23
  #include <errno.h>
22
24
  #include <stdlib.h>
23
25
 
26
+ #include "absl/strings/str_format.h"
27
+ #include "absl/strings/str_join.h"
28
+ #include "absl/strings/string_view.h"
29
+
24
30
  #include <grpc/support/string_util.h>
25
31
 
26
32
  #include "src/core/lib/gpr/env.h"
33
+ #include "src/core/lib/gpr/string.h"
27
34
  #include "src/core/lib/iomgr/load_file.h"
28
35
  #include "src/core/lib/slice/slice_internal.h"
29
36
 
30
37
  namespace grpc_core {
31
38
 
32
- std::unique_ptr<XdsBootstrap> XdsBootstrap::ReadFromFile(grpc_error** error) {
39
+ namespace {
40
+
41
+ std::string BootstrapString(const XdsBootstrap& bootstrap) {
42
+ std::vector<std::string> parts;
43
+ if (bootstrap.node() != nullptr) {
44
+ parts.push_back(absl::StrFormat(
45
+ "node={\n"
46
+ " id=\"%s\",\n"
47
+ " cluster=\"%s\",\n"
48
+ " locality={\n"
49
+ " region=\"%s\",\n"
50
+ " zone=\"%s\",\n"
51
+ " subzone=\"%s\"\n"
52
+ " },\n"
53
+ " metadata=%s,\n"
54
+ "},\n",
55
+ bootstrap.node()->id, bootstrap.node()->cluster,
56
+ bootstrap.node()->locality_region, bootstrap.node()->locality_zone,
57
+ bootstrap.node()->locality_subzone, bootstrap.node()->metadata.Dump()));
58
+ }
59
+ parts.push_back(
60
+ absl::StrFormat("servers=[\n"
61
+ " {\n"
62
+ " uri=\"%s\",\n"
63
+ " creds=[\n",
64
+ bootstrap.server().server_uri));
65
+ for (const auto& creds : bootstrap.server().channel_creds) {
66
+ parts.push_back(absl::StrFormat(" {type=\"%s\", config=%s},\n",
67
+ creds.type, creds.config.Dump()));
68
+ }
69
+ parts.push_back(" ]\n }\n]");
70
+ return absl::StrJoin(parts, "");
71
+ }
72
+
73
+ } // namespace
74
+
75
+ std::unique_ptr<XdsBootstrap> XdsBootstrap::ReadFromFile(XdsClient* client,
76
+ TraceFlag* tracer,
77
+ grpc_error** error) {
33
78
  grpc_core::UniquePtr<char> path(gpr_getenv("GRPC_XDS_BOOTSTRAP"));
34
79
  if (path == nullptr) {
35
80
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
36
- "GRPC_XDS_BOOTSTRAP env var not set");
81
+ "Environment variable GRPC_XDS_BOOTSTRAP not defined");
37
82
  return nullptr;
38
83
  }
84
+ if (GRPC_TRACE_FLAG_ENABLED(*tracer)) {
85
+ gpr_log(GPR_INFO,
86
+ "[xds_client %p] Got bootstrap file location from "
87
+ "GRPC_XDS_BOOTSTRAP environment variable: %s",
88
+ client, path.get());
89
+ }
39
90
  grpc_slice contents;
40
91
  *error = grpc_load_file(path.get(), /*add_null_terminator=*/true, &contents);
41
92
  if (*error != GRPC_ERROR_NONE) return nullptr;
42
- return MakeUnique<XdsBootstrap>(contents, error);
93
+ absl::string_view contents_str_view = StringViewFromSlice(contents);
94
+ if (GRPC_TRACE_FLAG_ENABLED(*tracer)) {
95
+ gpr_log(GPR_DEBUG, "[xds_client %p] Bootstrap file contents: %s", client,
96
+ std::string(contents_str_view).c_str());
97
+ }
98
+ Json json = Json::Parse(contents_str_view, error);
99
+ grpc_slice_unref_internal(contents);
100
+ if (*error != GRPC_ERROR_NONE) {
101
+ char* msg;
102
+ gpr_asprintf(&msg, "Failed to parse bootstrap file %s", path.get());
103
+ grpc_error* error_out =
104
+ GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(msg, error, 1);
105
+ gpr_free(msg);
106
+ GRPC_ERROR_UNREF(*error);
107
+ *error = error_out;
108
+ return nullptr;
109
+ }
110
+ std::unique_ptr<XdsBootstrap> result =
111
+ absl::make_unique<XdsBootstrap>(std::move(json), error);
112
+ if (*error == GRPC_ERROR_NONE && GRPC_TRACE_FLAG_ENABLED(*tracer)) {
113
+ gpr_log(GPR_INFO,
114
+ "[xds_client %p] Bootstrap config for creating xds client:\n%s",
115
+ client, BootstrapString(*result).c_str());
116
+ }
117
+ return result;
43
118
  }
44
119
 
45
- XdsBootstrap::XdsBootstrap(grpc_slice contents, grpc_error** error)
46
- : contents_(contents) {
47
- tree_ = grpc_json_parse_string_with_len(
48
- reinterpret_cast<char*>(GPR_SLICE_START_PTR(contents_)),
49
- GPR_SLICE_LENGTH(contents_));
50
- if (tree_ == nullptr) {
51
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
52
- "failed to parse bootstrap file JSON");
53
- return;
54
- }
55
- if (tree_->type != GRPC_JSON_OBJECT || tree_->key != nullptr) {
120
+ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
121
+ if (json.type() != Json::Type::OBJECT) {
56
122
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
57
123
  "malformed JSON in bootstrap file");
58
124
  return;
59
125
  }
60
- InlinedVector<grpc_error*, 1> error_list;
61
- bool seen_xds_servers = false;
62
- bool seen_node = false;
63
- for (grpc_json* child = tree_->child; child != nullptr; child = child->next) {
64
- if (child->key == nullptr) {
65
- error_list.push_back(
66
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
67
- } else if (strcmp(child->key, "xds_servers") == 0) {
68
- if (child->type != GRPC_JSON_ARRAY) {
69
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
70
- "\"xds_servers\" field is not an array"));
71
- }
72
- if (seen_xds_servers) {
73
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
74
- "duplicate \"xds_servers\" field"));
75
- }
76
- seen_xds_servers = true;
77
- grpc_error* parse_error = ParseXdsServerList(child);
78
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
79
- } else if (strcmp(child->key, "node") == 0) {
80
- if (child->type != GRPC_JSON_OBJECT) {
81
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
82
- "\"node\" field is not an object"));
83
- }
84
- if (seen_node) {
85
- error_list.push_back(
86
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"node\" field"));
87
- }
88
- seen_node = true;
89
- grpc_error* parse_error = ParseNode(child);
90
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
91
- }
92
- }
93
- if (!seen_xds_servers) {
126
+ std::vector<grpc_error*> error_list;
127
+ auto it = json.mutable_object()->find("xds_servers");
128
+ if (it == json.mutable_object()->end()) {
94
129
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
95
130
  "\"xds_servers\" field not present"));
131
+ } else if (it->second.type() != Json::Type::ARRAY) {
132
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
133
+ "\"xds_servers\" field is not an array"));
134
+ } else {
135
+ grpc_error* parse_error = ParseXdsServerList(&it->second);
136
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
137
+ }
138
+ it = json.mutable_object()->find("node");
139
+ if (it != json.mutable_object()->end()) {
140
+ if (it->second.type() != Json::Type::OBJECT) {
141
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
142
+ "\"node\" field is not an object"));
143
+ } else {
144
+ grpc_error* parse_error = ParseNode(&it->second);
145
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
146
+ }
96
147
  }
97
148
  *error = GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing xds bootstrap file",
98
149
  &error_list);
99
150
  }
100
151
 
101
- XdsBootstrap::~XdsBootstrap() {
102
- grpc_json_destroy(tree_);
103
- grpc_slice_unref_internal(contents_);
104
- }
105
-
106
- grpc_error* XdsBootstrap::ParseXdsServerList(grpc_json* json) {
107
- InlinedVector<grpc_error*, 1> error_list;
108
- size_t idx = 0;
109
- for (grpc_json *child = json->child; child != nullptr;
110
- child = child->next, ++idx) {
111
- if (child->key != nullptr) {
152
+ grpc_error* XdsBootstrap::ParseXdsServerList(Json* json) {
153
+ std::vector<grpc_error*> error_list;
154
+ for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
155
+ Json& child = json->mutable_array()->at(i);
156
+ if (child.type() != Json::Type::OBJECT) {
112
157
  char* msg;
113
- gpr_asprintf(&msg, "array element %" PRIuPTR " key is not null", idx);
114
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
115
- }
116
- if (child->type != GRPC_JSON_OBJECT) {
117
- char* msg;
118
- gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", idx);
158
+ gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", i);
119
159
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
160
+ gpr_free(msg);
120
161
  } else {
121
- grpc_error* parse_error = ParseXdsServer(child, idx);
162
+ grpc_error* parse_error = ParseXdsServer(&child, i);
122
163
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
123
164
  }
124
165
  }
@@ -126,42 +167,29 @@ grpc_error* XdsBootstrap::ParseXdsServerList(grpc_json* json) {
126
167
  &error_list);
127
168
  }
128
169
 
129
- grpc_error* XdsBootstrap::ParseXdsServer(grpc_json* json, size_t idx) {
130
- InlinedVector<grpc_error*, 1> error_list;
170
+ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
171
+ std::vector<grpc_error*> error_list;
131
172
  servers_.emplace_back();
132
173
  XdsServer& server = servers_[servers_.size() - 1];
133
- bool seen_channel_creds = false;
134
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
135
- if (child->key == nullptr) {
136
- error_list.push_back(
137
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
138
- } else if (strcmp(child->key, "server_uri") == 0) {
139
- if (child->type != GRPC_JSON_STRING) {
140
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
141
- "\"server_uri\" field is not a string"));
142
- }
143
- if (server.server_uri != nullptr) {
144
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
145
- "duplicate \"server_uri\" field"));
146
- }
147
- server.server_uri = child->value;
148
- } else if (strcmp(child->key, "channel_creds") == 0) {
149
- if (child->type != GRPC_JSON_ARRAY) {
150
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
151
- "\"channel_creds\" field is not an array"));
152
- }
153
- if (seen_channel_creds) {
154
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
155
- "duplicate \"channel_creds\" field"));
156
- }
157
- seen_channel_creds = true;
158
- grpc_error* parse_error = ParseChannelCredsArray(child, &server);
159
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
160
- }
161
- }
162
- if (server.server_uri == nullptr) {
174
+ auto it = json->mutable_object()->find("server_uri");
175
+ if (it == json->mutable_object()->end()) {
163
176
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
164
177
  "\"server_uri\" field not present"));
178
+ } else if (it->second.type() != Json::Type::STRING) {
179
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
180
+ "\"server_uri\" field is not a string"));
181
+ } else {
182
+ server.server_uri = std::move(*it->second.mutable_string_value());
183
+ }
184
+ it = json->mutable_object()->find("channel_creds");
185
+ if (it != json->mutable_object()->end()) {
186
+ if (it->second.type() != Json::Type::ARRAY) {
187
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
188
+ "\"channel_creds\" field is not an array"));
189
+ } else {
190
+ grpc_error* parse_error = ParseChannelCredsArray(&it->second, &server);
191
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
192
+ }
165
193
  }
166
194
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
167
195
  // string is not static in this case.
@@ -176,23 +204,18 @@ grpc_error* XdsBootstrap::ParseXdsServer(grpc_json* json, size_t idx) {
176
204
  return error;
177
205
  }
178
206
 
179
- grpc_error* XdsBootstrap::ParseChannelCredsArray(grpc_json* json,
207
+ grpc_error* XdsBootstrap::ParseChannelCredsArray(Json* json,
180
208
  XdsServer* server) {
181
- InlinedVector<grpc_error*, 1> error_list;
182
- size_t idx = 0;
183
- for (grpc_json *child = json->child; child != nullptr;
184
- child = child->next, ++idx) {
185
- if (child->key != nullptr) {
209
+ std::vector<grpc_error*> error_list;
210
+ for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
211
+ Json& child = json->mutable_array()->at(i);
212
+ if (child.type() != Json::Type::OBJECT) {
186
213
  char* msg;
187
- gpr_asprintf(&msg, "array element %" PRIuPTR " key is not null", idx);
188
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
189
- }
190
- if (child->type != GRPC_JSON_OBJECT) {
191
- char* msg;
192
- gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", idx);
214
+ gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", i);
193
215
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
216
+ gpr_free(msg);
194
217
  } else {
195
- grpc_error* parse_error = ParseChannelCreds(child, idx, server);
218
+ grpc_error* parse_error = ParseChannelCreds(&child, i, server);
196
219
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
197
220
  }
198
221
  }
@@ -200,38 +223,31 @@ grpc_error* XdsBootstrap::ParseChannelCredsArray(grpc_json* json,
200
223
  &error_list);
201
224
  }
202
225
 
203
- grpc_error* XdsBootstrap::ParseChannelCreds(grpc_json* json, size_t idx,
226
+ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
204
227
  XdsServer* server) {
205
- InlinedVector<grpc_error*, 1> error_list;
228
+ std::vector<grpc_error*> error_list;
206
229
  ChannelCreds channel_creds;
207
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
208
- if (child->key == nullptr) {
209
- error_list.push_back(
210
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
211
- } else if (strcmp(child->key, "type") == 0) {
212
- if (child->type != GRPC_JSON_STRING) {
213
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
214
- "\"type\" field is not a string"));
215
- }
216
- if (channel_creds.type != nullptr) {
217
- error_list.push_back(
218
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"type\" field"));
219
- }
220
- channel_creds.type = child->value;
221
- } else if (strcmp(child->key, "config") == 0) {
222
- if (child->type != GRPC_JSON_OBJECT) {
223
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
224
- "\"config\" field is not an object"));
225
- }
226
- if (channel_creds.config != nullptr) {
227
- error_list.push_back(
228
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"config\" field"));
229
- }
230
- channel_creds.config = child;
230
+ auto it = json->mutable_object()->find("type");
231
+ if (it == json->mutable_object()->end()) {
232
+ error_list.push_back(
233
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"type\" field not present"));
234
+ } else if (it->second.type() != Json::Type::STRING) {
235
+ error_list.push_back(
236
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"type\" field is not a string"));
237
+ } else {
238
+ channel_creds.type = std::move(*it->second.mutable_string_value());
239
+ }
240
+ it = json->mutable_object()->find("config");
241
+ if (it != json->mutable_object()->end()) {
242
+ if (it->second.type() != Json::Type::OBJECT) {
243
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
244
+ "\"config\" field is not an object"));
245
+ } else {
246
+ channel_creds.config = std::move(it->second);
231
247
  }
232
248
  }
233
- if (channel_creds.type != nullptr) {
234
- server->channel_creds.push_back(channel_creds);
249
+ if (!channel_creds.type.empty()) {
250
+ server->channel_creds.emplace_back(std::move(channel_creds));
235
251
  }
236
252
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
237
253
  // string is not static in this case.
@@ -246,242 +262,81 @@ grpc_error* XdsBootstrap::ParseChannelCreds(grpc_json* json, size_t idx,
246
262
  return error;
247
263
  }
248
264
 
249
- grpc_error* XdsBootstrap::ParseNode(grpc_json* json) {
250
- InlinedVector<grpc_error*, 1> error_list;
251
- node_ = MakeUnique<Node>();
252
- bool seen_metadata = false;
253
- bool seen_locality = false;
254
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
255
- if (child->key == nullptr) {
265
+ grpc_error* XdsBootstrap::ParseNode(Json* json) {
266
+ std::vector<grpc_error*> error_list;
267
+ node_ = absl::make_unique<Node>();
268
+ auto it = json->mutable_object()->find("id");
269
+ if (it != json->mutable_object()->end()) {
270
+ if (it->second.type() != Json::Type::STRING) {
256
271
  error_list.push_back(
257
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
258
- } else if (strcmp(child->key, "id") == 0) {
259
- if (child->type != GRPC_JSON_STRING) {
260
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
261
- "\"id\" field is not a string"));
262
- }
263
- if (node_->id != nullptr) {
264
- error_list.push_back(
265
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"id\" field"));
266
- }
267
- node_->id = child->value;
268
- } else if (strcmp(child->key, "cluster") == 0) {
269
- if (child->type != GRPC_JSON_STRING) {
270
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
271
- "\"cluster\" field is not a string"));
272
- }
273
- if (node_->cluster != nullptr) {
274
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
275
- "duplicate \"cluster\" field"));
276
- }
277
- node_->cluster = child->value;
278
- } else if (strcmp(child->key, "locality") == 0) {
279
- if (child->type != GRPC_JSON_OBJECT) {
280
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
281
- "\"locality\" field is not an object"));
282
- }
283
- if (seen_locality) {
284
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
285
- "duplicate \"locality\" field"));
286
- }
287
- seen_locality = true;
288
- grpc_error* parse_error = ParseLocality(child);
289
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
290
- } else if (strcmp(child->key, "metadata") == 0) {
291
- if (child->type != GRPC_JSON_OBJECT) {
292
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
293
- "\"metadata\" field is not an object"));
294
- }
295
- if (seen_metadata) {
296
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
297
- "duplicate \"metadata\" field"));
298
- }
299
- seen_metadata = true;
300
- InlinedVector<grpc_error*, 1> parse_errors =
301
- ParseMetadataStruct(child, &node_->metadata);
302
- if (!parse_errors.empty()) {
303
- grpc_error* parse_error = GRPC_ERROR_CREATE_FROM_VECTOR(
304
- "errors parsing \"metadata\" object", &parse_errors);
305
- error_list.push_back(parse_error);
306
- }
272
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"id\" field is not a string"));
273
+ } else {
274
+ node_->id = std::move(*it->second.mutable_string_value());
307
275
  }
308
276
  }
309
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"node\" object",
310
- &error_list);
311
- }
312
-
313
- grpc_error* XdsBootstrap::ParseLocality(grpc_json* json) {
314
- InlinedVector<grpc_error*, 1> error_list;
315
- node_->locality_region = nullptr;
316
- node_->locality_zone = nullptr;
317
- node_->locality_subzone = nullptr;
318
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
319
- if (child->key == nullptr) {
320
- error_list.push_back(
321
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
322
- } else if (strcmp(child->key, "region") == 0) {
323
- if (child->type != GRPC_JSON_STRING) {
324
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
325
- "\"region\" field is not a string"));
326
- }
327
- if (node_->locality_region != nullptr) {
328
- error_list.push_back(
329
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"region\" field"));
330
- }
331
- node_->locality_region = child->value;
332
- } else if (strcmp(child->key, "zone") == 0) {
333
- if (child->type != GRPC_JSON_STRING) {
334
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
335
- "\"zone\" field is not a string"));
336
- }
337
- if (node_->locality_zone != nullptr) {
338
- error_list.push_back(
339
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"zone\" field"));
340
- }
341
- node_->locality_zone = child->value;
342
- } else if (strcmp(child->key, "subzone") == 0) {
343
- if (child->type != GRPC_JSON_STRING) {
344
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
345
- "\"subzone\" field is not a string"));
346
- }
347
- if (node_->locality_subzone != nullptr) {
348
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
349
- "duplicate \"subzone\" field"));
350
- }
351
- node_->locality_subzone = child->value;
277
+ it = json->mutable_object()->find("cluster");
278
+ if (it != json->mutable_object()->end()) {
279
+ if (it->second.type() != Json::Type::STRING) {
280
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
281
+ "\"cluster\" field is not a string"));
282
+ } else {
283
+ node_->cluster = std::move(*it->second.mutable_string_value());
352
284
  }
353
285
  }
354
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"locality\" object",
355
- &error_list);
356
- }
357
-
358
- InlinedVector<grpc_error*, 1> XdsBootstrap::ParseMetadataStruct(
359
- grpc_json* json,
360
- std::map<const char*, XdsBootstrap::MetadataValue, StringLess>* result) {
361
- InlinedVector<grpc_error*, 1> error_list;
362
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
363
- if (child->key == nullptr) {
364
- error_list.push_back(
365
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
366
- continue;
367
- }
368
- if (result->find(child->key) != result->end()) {
369
- char* msg;
370
- gpr_asprintf(&msg, "duplicate metadata key \"%s\"", child->key);
371
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
372
- gpr_free(msg);
286
+ it = json->mutable_object()->find("locality");
287
+ if (it != json->mutable_object()->end()) {
288
+ if (it->second.type() != Json::Type::OBJECT) {
289
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
290
+ "\"locality\" field is not an object"));
291
+ } else {
292
+ grpc_error* parse_error = ParseLocality(&it->second);
293
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
373
294
  }
374
- MetadataValue& value = (*result)[child->key];
375
- grpc_error* parse_error = ParseMetadataValue(child, 0, &value);
376
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
377
295
  }
378
- return error_list;
379
- }
380
-
381
- InlinedVector<grpc_error*, 1> XdsBootstrap::ParseMetadataList(
382
- grpc_json* json, std::vector<MetadataValue>* result) {
383
- InlinedVector<grpc_error*, 1> error_list;
384
- size_t idx = 0;
385
- for (grpc_json *child = json->child; child != nullptr;
386
- child = child->next, ++idx) {
387
- if (child->key != nullptr) {
388
- char* msg;
389
- gpr_asprintf(&msg, "JSON key is non-null for index %" PRIuPTR, idx);
390
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
391
- gpr_free(msg);
296
+ it = json->mutable_object()->find("metadata");
297
+ if (it != json->mutable_object()->end()) {
298
+ if (it->second.type() != Json::Type::OBJECT) {
299
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
300
+ "\"metadata\" field is not an object"));
301
+ } else {
302
+ node_->metadata = std::move(it->second);
392
303
  }
393
- result->emplace_back();
394
- grpc_error* parse_error = ParseMetadataValue(child, idx, &result->back());
395
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
396
304
  }
397
- return error_list;
305
+ return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"node\" object",
306
+ &error_list);
398
307
  }
399
308
 
400
- grpc_error* XdsBootstrap::ParseMetadataValue(grpc_json* json, size_t idx,
401
- MetadataValue* result) {
402
- grpc_error* error = GRPC_ERROR_NONE;
403
- auto context_func = [json, idx]() {
404
- char* context;
405
- if (json->key != nullptr) {
406
- gpr_asprintf(&context, "key \"%s\"", json->key);
309
+ grpc_error* XdsBootstrap::ParseLocality(Json* json) {
310
+ std::vector<grpc_error*> error_list;
311
+ auto it = json->mutable_object()->find("region");
312
+ if (it != json->mutable_object()->end()) {
313
+ if (it->second.type() != Json::Type::STRING) {
314
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
315
+ "\"region\" field is not a string"));
407
316
  } else {
408
- gpr_asprintf(&context, "index %" PRIuPTR, idx);
317
+ node_->locality_region = std::move(*it->second.mutable_string_value());
409
318
  }
410
- return context;
411
- };
412
- switch (json->type) {
413
- case GRPC_JSON_STRING:
414
- result->type = MetadataValue::Type::STRING;
415
- result->string_value = json->value;
416
- break;
417
- case GRPC_JSON_NUMBER:
418
- result->type = MetadataValue::Type::DOUBLE;
419
- errno = 0; // To distinguish error.
420
- result->double_value = strtod(json->value, nullptr);
421
- if (errno != 0) {
422
- char* context = context_func();
423
- char* msg;
424
- gpr_asprintf(&msg, "error parsing numeric value for %s: \"%s\"",
425
- context, json->value);
426
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
427
- gpr_free(context);
428
- gpr_free(msg);
429
- }
430
- break;
431
- case GRPC_JSON_TRUE:
432
- result->type = MetadataValue::Type::BOOL;
433
- result->bool_value = true;
434
- break;
435
- case GRPC_JSON_FALSE:
436
- result->type = MetadataValue::Type::BOOL;
437
- result->bool_value = false;
438
- break;
439
- case GRPC_JSON_NULL:
440
- result->type = MetadataValue::Type::MD_NULL;
441
- break;
442
- case GRPC_JSON_ARRAY: {
443
- result->type = MetadataValue::Type::LIST;
444
- InlinedVector<grpc_error*, 1> error_list =
445
- ParseMetadataList(json, &result->list_value);
446
- if (!error_list.empty()) {
447
- // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
448
- // string is not static in this case.
449
- char* context = context_func();
450
- char* msg;
451
- gpr_asprintf(&msg, "errors parsing struct for %s", context);
452
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
453
- gpr_free(context);
454
- gpr_free(msg);
455
- for (size_t i = 0; i < error_list.size(); ++i) {
456
- error = grpc_error_add_child(error, error_list[i]);
457
- }
458
- }
459
- break;
319
+ }
320
+ it = json->mutable_object()->find("zone");
321
+ if (it != json->mutable_object()->end()) {
322
+ if (it->second.type() != Json::Type::STRING) {
323
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
324
+ "\"zone\" field is not a string"));
325
+ } else {
326
+ node_->locality_zone = std::move(*it->second.mutable_string_value());
460
327
  }
461
- case GRPC_JSON_OBJECT: {
462
- result->type = MetadataValue::Type::STRUCT;
463
- InlinedVector<grpc_error*, 1> error_list =
464
- ParseMetadataStruct(json, &result->struct_value);
465
- if (!error_list.empty()) {
466
- // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
467
- // string is not static in this case.
468
- char* context = context_func();
469
- char* msg;
470
- gpr_asprintf(&msg, "errors parsing struct for %s", context);
471
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
472
- gpr_free(context);
473
- gpr_free(msg);
474
- for (size_t i = 0; i < error_list.size(); ++i) {
475
- error = grpc_error_add_child(error, error_list[i]);
476
- GRPC_ERROR_UNREF(error_list[i]);
477
- }
478
- }
479
- break;
328
+ }
329
+ it = json->mutable_object()->find("subzone");
330
+ if (it != json->mutable_object()->end()) {
331
+ if (it->second.type() != Json::Type::STRING) {
332
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
333
+ "\"subzone\" field is not a string"));
334
+ } else {
335
+ node_->locality_subzone = std::move(*it->second.mutable_string_value());
480
336
  }
481
- default:
482
- break;
483
337
  }
484
- return error;
338
+ return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"locality\" object",
339
+ &error_list);
485
340
  }
486
341
 
487
342
  } // namespace grpc_core