grpc 1.27.0 → 1.28.0.pre2

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 (678) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +707 -629
  3. data/include/grpc/impl/codegen/grpc_types.h +5 -0
  4. data/include/grpc/impl/codegen/port_platform.h +7 -0
  5. data/include/grpc/impl/codegen/sync.h +5 -3
  6. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  7. data/include/grpc/module.modulemap +3 -0
  8. data/include/grpc/support/sync_abseil.h +26 -0
  9. data/src/core/ext/filters/client_channel/client_channel.cc +47 -29
  10. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  12. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +4 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +21 -28
  15. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  16. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
  17. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -72
  18. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +413 -422
  19. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  20. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
  21. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  22. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
  23. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  27. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
  28. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  29. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
  32. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  33. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +13 -14
  34. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -7
  35. data/src/core/ext/filters/client_channel/service_config.cc +91 -160
  36. data/src/core/ext/filters/client_channel/service_config.h +14 -21
  37. data/src/core/ext/filters/client_channel/xds/xds_api.cc +581 -251
  38. data/src/core/ext/filters/client_channel/xds/xds_api.h +189 -151
  39. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +133 -350
  40. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +18 -39
  41. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  42. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +12 -9
  43. data/src/core/ext/filters/client_channel/xds/xds_client.cc +559 -242
  44. data/src/core/ext/filters/client_channel/xds/xds_client.h +54 -34
  45. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -128
  46. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +105 -132
  47. data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
  48. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  49. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
  50. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -6
  51. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  52. data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
  53. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  54. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  55. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  56. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  57. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
  58. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
  59. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
  60. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  61. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
  62. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
  63. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
  64. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  65. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  66. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  67. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
  68. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  69. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
  70. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
  71. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
  72. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  73. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
  74. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  75. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
  76. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
  77. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
  80. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  81. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
  82. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  83. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
  84. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  85. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
  86. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  87. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
  88. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
  89. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  90. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
  91. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  92. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
  93. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
  94. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
  95. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  96. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
  97. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  100. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
  101. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  102. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
  103. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  104. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
  105. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
  107. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
  108. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  112. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
  113. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  114. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
  115. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
  116. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
  117. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  118. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
  119. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
  120. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
  121. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  122. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
  123. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  124. data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
  125. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  126. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
  127. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  128. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
  129. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  130. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  131. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  132. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  133. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  134. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  135. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  136. data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
  137. data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
  138. data/src/core/lib/channel/channel_trace.cc +32 -41
  139. data/src/core/lib/channel/channel_trace.h +3 -3
  140. data/src/core/lib/channel/channelz.cc +158 -248
  141. data/src/core/lib/channel/channelz.h +12 -15
  142. data/src/core/lib/channel/channelz_registry.cc +47 -74
  143. data/src/core/lib/channel/channelz_registry.h +4 -4
  144. data/src/core/lib/gpr/sync_abseil.cc +114 -0
  145. data/src/core/lib/gpr/sync_posix.cc +8 -5
  146. data/src/core/lib/gpr/sync_windows.cc +4 -2
  147. data/src/core/lib/gprpp/host_port.cc +1 -1
  148. data/src/core/lib/gprpp/inlined_vector.h +1 -210
  149. data/src/core/lib/gprpp/memory.h +2 -6
  150. data/src/core/lib/gprpp/optional.h +0 -41
  151. data/src/core/lib/gprpp/string_view.h +5 -114
  152. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  153. data/src/core/lib/iomgr/error.h +4 -4
  154. data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
  155. data/src/core/lib/iomgr/load_file.cc +1 -0
  156. data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
  157. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  158. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  159. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  160. data/src/core/lib/iomgr/work_serializer.h +65 -0
  161. data/src/core/lib/json/json.h +209 -79
  162. data/src/core/lib/json/json_reader.cc +469 -455
  163. data/src/core/lib/json/json_writer.cc +173 -169
  164. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  165. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
  166. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  167. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  168. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  169. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
  170. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  171. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -34
  172. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  173. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
  174. data/src/core/lib/security/security_connector/local/local_security_connector.cc +5 -7
  175. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
  176. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
  177. data/src/core/lib/security/security_connector/ssl_utils.h +0 -1
  178. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +24 -1
  179. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -1
  180. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  181. data/src/core/lib/security/util/json_util.cc +22 -15
  182. data/src/core/lib/security/util/json_util.h +2 -2
  183. data/src/core/lib/surface/version.cc +1 -1
  184. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  185. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  186. data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
  187. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  188. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  189. data/src/core/tsi/ssl_transport_security.cc +2 -1
  190. data/src/ruby/lib/grpc/version.rb +1 -1
  191. data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
  192. data/third_party/abseil-cpp/absl/base/config.h +10 -4
  193. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  194. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  195. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
  196. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
  197. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  198. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  199. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  200. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  201. data/third_party/abseil-cpp/absl/base/options.h +2 -10
  202. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  203. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  204. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  205. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  206. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  207. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  208. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  209. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  210. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  211. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  212. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  213. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  214. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  215. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  216. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  217. data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
  218. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
  219. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  220. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  221. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  222. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  223. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  224. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  225. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  226. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  227. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  228. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  229. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  230. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  231. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  232. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  233. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  234. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  235. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  236. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  237. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  238. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  239. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  240. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  241. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  242. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  243. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  244. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  245. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  246. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  247. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  248. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  249. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  250. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  251. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  252. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  253. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  254. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  255. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  256. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  257. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  258. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  259. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  260. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  261. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  262. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  263. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  264. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  265. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  266. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  267. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  268. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  269. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  270. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  271. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  272. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  273. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  274. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
  275. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  276. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  277. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  278. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  279. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  280. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  281. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  282. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  283. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  284. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  285. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  286. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  287. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  288. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  289. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  290. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  291. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
  292. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  293. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  294. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
  295. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  296. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
  297. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
  298. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  299. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
  300. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  301. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  302. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  303. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
  304. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  305. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  306. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  307. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
  308. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  309. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  310. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
  311. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  312. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  313. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  314. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  315. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  316. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  317. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  318. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  319. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  320. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  321. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  322. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  323. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  324. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  325. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  326. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  327. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  328. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  329. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  330. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  331. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  332. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  333. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  334. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  335. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  336. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
  337. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  338. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  339. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  340. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  341. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  342. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  343. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  344. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  345. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
  346. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  347. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  348. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  349. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
  350. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  351. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
  352. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  353. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
  354. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  355. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  356. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  357. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  358. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  359. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  360. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  361. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  362. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  363. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  364. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  365. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  366. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  367. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  368. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  369. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
  370. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  371. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  372. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
  373. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
  374. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
  375. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
  376. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
  377. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
  378. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
  379. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
  380. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
  381. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  382. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
  383. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
  384. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
  385. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  386. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
  387. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
  388. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
  389. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  390. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  391. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  392. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  393. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  394. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  395. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  396. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  397. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  398. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  400. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  401. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  402. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  403. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  404. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
  405. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
  406. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
  407. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
  408. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
  409. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  410. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
  411. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
  412. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  413. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  414. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  415. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  416. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  417. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
  418. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  419. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  420. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  421. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  422. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  423. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  424. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  425. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
  426. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  427. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
  428. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  429. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  430. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  431. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  432. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  433. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  434. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  435. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  436. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  437. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  438. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  439. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  440. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  441. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  442. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  443. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  444. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  445. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  446. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  447. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  448. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  449. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  450. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
  451. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  452. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  453. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  454. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
  455. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  456. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  457. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  458. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  459. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  460. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  461. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  462. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  463. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  464. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
  465. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
  466. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  467. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  468. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  469. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  470. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  471. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  472. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  473. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  474. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  475. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  476. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  477. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  478. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  479. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  480. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  481. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  482. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  483. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  484. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  485. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  486. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  487. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  488. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  489. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  490. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  491. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  492. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  571. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  572. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  573. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  584. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  585. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  658. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
  674. metadata +562 -491
  675. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  676. data/src/core/lib/iomgr/logical_thread.h +0 -52
  677. data/src/core/lib/json/json.cc +0 -94
  678. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -70,7 +70,7 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
70
70
  virtual ~Parser() = default;
71
71
 
72
72
  virtual std::unique_ptr<ParsedConfig> ParseGlobalParams(
73
- const grpc_json* /* json */, grpc_error** error) {
73
+ const Json& /* json */, grpc_error** error) {
74
74
  // Avoid unused parameter warning on debug-only parameter
75
75
  (void)error;
76
76
  GPR_DEBUG_ASSERT(error != nullptr);
@@ -78,7 +78,7 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
78
78
  }
79
79
 
80
80
  virtual std::unique_ptr<ParsedConfig> ParsePerMethodParams(
81
- const grpc_json* /* json */, grpc_error** error) {
81
+ const Json& /* json */, grpc_error** error) {
82
82
  // Avoid unused parameter warning on debug-only parameter
83
83
  (void)error;
84
84
  GPR_DEBUG_ASSERT(error != nullptr);
@@ -125,16 +125,12 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
125
125
 
126
126
  /// Creates a new service config from parsing \a json_string.
127
127
  /// Returns null on parse error.
128
- static RefCountedPtr<ServiceConfig> Create(const char* json,
128
+ static RefCountedPtr<ServiceConfig> Create(StringView json_string,
129
129
  grpc_error** error);
130
130
 
131
- // Takes ownership of \a json_tree.
132
- ServiceConfig(grpc_core::UniquePtr<char> service_config_json,
133
- grpc_core::UniquePtr<char> json_string, grpc_json* json_tree,
134
- grpc_error** error);
135
- ~ServiceConfig();
131
+ ServiceConfig(std::string json_string, Json json, grpc_error** error);
136
132
 
137
- const char* service_config_json() const { return service_config_json_.get(); }
133
+ const std::string& json_string() const { return json_string_; }
138
134
 
139
135
  /// Retrieves the global parsed config at index \a index. The
140
136
  /// lifetime of the returned object is tied to the lifetime of the
@@ -163,24 +159,21 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
163
159
 
164
160
  private:
165
161
  // Helper functions to parse the service config
166
- grpc_error* ParseGlobalParams(const grpc_json* json_tree);
167
- grpc_error* ParsePerMethodParams(const grpc_json* json_tree);
168
-
169
- // Returns the number of names specified in the method config \a json.
170
- static int CountNamesInMethodConfig(grpc_json* json);
162
+ grpc_error* ParseGlobalParams();
163
+ grpc_error* ParsePerMethodParams();
171
164
 
172
165
  // Returns a path string for the JSON name object specified by \a json.
173
166
  // Returns null on error, and stores error in \a error.
174
- static grpc_core::UniquePtr<char> ParseJsonMethodName(grpc_json* json,
175
- grpc_error** error);
167
+ static UniquePtr<char> ParseJsonMethodName(const Json& json,
168
+ grpc_error** error);
176
169
 
177
170
  grpc_error* ParseJsonMethodConfigToServiceConfigVectorTable(
178
- const grpc_json* json,
179
- SliceHashTable<const ParsedConfigVector*>::Entry* entries, size_t* idx);
171
+ const Json& json,
172
+ InlinedVector<SliceHashTable<const ParsedConfigVector*>::Entry, 10>*
173
+ entries);
180
174
 
181
- grpc_core::UniquePtr<char> service_config_json_;
182
- grpc_core::UniquePtr<char> json_string_; // Underlying storage for json_tree.
183
- grpc_json* json_tree_;
175
+ std::string json_string_;
176
+ Json json_;
184
177
 
185
178
  InlinedVector<std::unique_ptr<ParsedConfig>, kNumPreallocatedParsers>
186
179
  parsed_global_configs_;
@@ -19,6 +19,10 @@
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
21
  #include <algorithm>
22
+ #include <cctype>
23
+ #include <cstdlib>
24
+
25
+ #include "absl/strings/str_cat.h"
22
26
 
23
27
  #include <grpc/impl/codegen/log.h>
24
28
  #include <grpc/support/alloc.h>
@@ -38,6 +42,11 @@
38
42
  #include "envoy/api/v2/eds.upb.h"
39
43
  #include "envoy/api/v2/endpoint/endpoint.upb.h"
40
44
  #include "envoy/api/v2/endpoint/load_report.upb.h"
45
+ #include "envoy/api/v2/lds.upb.h"
46
+ #include "envoy/api/v2/rds.upb.h"
47
+ #include "envoy/api/v2/route/route.upb.h"
48
+ #include "envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h"
49
+ #include "envoy/config/listener/v2/api_listener.upb.h"
41
50
  #include "envoy/service/load_stats/v2/lrs.upb.h"
42
51
  #include "envoy/type/percent.upb.h"
43
52
  #include "google/protobuf/any.upb.h"
@@ -49,8 +58,12 @@
49
58
 
50
59
  namespace grpc_core {
51
60
 
52
- bool XdsPriorityListUpdate::operator==(
53
- const XdsPriorityListUpdate& other) const {
61
+ //
62
+ // XdsApi::PriorityListUpdate
63
+ //
64
+
65
+ bool XdsApi::PriorityListUpdate::operator==(
66
+ const XdsApi::PriorityListUpdate& other) const {
54
67
  if (priorities_.size() != other.priorities_.size()) return false;
55
68
  for (size_t i = 0; i < priorities_.size(); ++i) {
56
69
  if (priorities_[i].localities != other.priorities_[i].localities) {
@@ -60,8 +73,8 @@ bool XdsPriorityListUpdate::operator==(
60
73
  return true;
61
74
  }
62
75
 
63
- void XdsPriorityListUpdate::Add(
64
- XdsPriorityListUpdate::LocalityMap::Locality locality) {
76
+ void XdsApi::PriorityListUpdate::Add(
77
+ XdsApi::PriorityListUpdate::LocalityMap::Locality locality) {
65
78
  // Pad the missing priorities in case the localities are not ordered by
66
79
  // priority.
67
80
  if (!Contains(locality.priority)) priorities_.resize(locality.priority + 1);
@@ -69,13 +82,13 @@ void XdsPriorityListUpdate::Add(
69
82
  locality_map.localities.emplace(locality.name, std::move(locality));
70
83
  }
71
84
 
72
- const XdsPriorityListUpdate::LocalityMap* XdsPriorityListUpdate::Find(
85
+ const XdsApi::PriorityListUpdate::LocalityMap* XdsApi::PriorityListUpdate::Find(
73
86
  uint32_t priority) const {
74
87
  if (!Contains(priority)) return nullptr;
75
88
  return &priorities_[priority];
76
89
  }
77
90
 
78
- bool XdsPriorityListUpdate::Contains(
91
+ bool XdsApi::PriorityListUpdate::Contains(
79
92
  const RefCountedPtr<XdsLocalityName>& name) {
80
93
  for (size_t i = 0; i < priorities_.size(); ++i) {
81
94
  const LocalityMap& locality_map = priorities_[i];
@@ -84,7 +97,11 @@ bool XdsPriorityListUpdate::Contains(
84
97
  return false;
85
98
  }
86
99
 
87
- bool XdsDropConfig::ShouldDrop(const std::string** category_name) const {
100
+ //
101
+ // XdsApi::DropConfig
102
+ //
103
+
104
+ bool XdsApi::DropConfig::ShouldDrop(const std::string** category_name) const {
88
105
  for (size_t i = 0; i < drop_category_list_.size(); ++i) {
89
106
  const auto& drop_category = drop_category_list_[i];
90
107
  // Generate a random number in [0, 1000000).
@@ -97,13 +114,30 @@ bool XdsDropConfig::ShouldDrop(const std::string** category_name) const {
97
114
  return false;
98
115
  }
99
116
 
117
+ //
118
+ // XdsApi
119
+ //
120
+
121
+ const char* XdsApi::kLdsTypeUrl = "type.googleapis.com/envoy.api.v2.Listener";
122
+ const char* XdsApi::kRdsTypeUrl =
123
+ "type.googleapis.com/envoy.api.v2.RouteConfiguration";
124
+ const char* XdsApi::kCdsTypeUrl = "type.googleapis.com/envoy.api.v2.Cluster";
125
+ const char* XdsApi::kEdsTypeUrl =
126
+ "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
127
+
128
+ XdsApi::XdsApi(const XdsBootstrap::Node* node)
129
+ : node_(node),
130
+ build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
131
+ grpc_version_string())),
132
+ user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) {}
133
+
100
134
  namespace {
101
135
 
102
136
  void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
103
- const XdsBootstrap::MetadataValue& value);
137
+ const Json& value);
104
138
 
105
139
  void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
106
- const std::vector<XdsBootstrap::MetadataValue>& values) {
140
+ const Json::Array& values) {
107
141
  for (const auto& value : values) {
108
142
  auto* value_pb = google_protobuf_ListValue_add_values(list_value, arena);
109
143
  PopulateMetadataValue(arena, value_pb, value);
@@ -111,13 +145,12 @@ void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
111
145
  }
112
146
 
113
147
  void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb,
114
- const std::map<const char*, XdsBootstrap::MetadataValue,
115
- StringLess>& metadata) {
148
+ const Json::Object& metadata) {
116
149
  for (const auto& p : metadata) {
117
150
  google_protobuf_Struct_FieldsEntry* field =
118
151
  google_protobuf_Struct_add_fields(metadata_pb, arena);
119
- google_protobuf_Struct_FieldsEntry_set_key(field,
120
- upb_strview_makez(p.first));
152
+ google_protobuf_Struct_FieldsEntry_set_key(
153
+ field, upb_strview_makez(p.first.c_str()));
121
154
  google_protobuf_Value* value =
122
155
  google_protobuf_Struct_FieldsEntry_mutable_value(field, arena);
123
156
  PopulateMetadataValue(arena, value, p.second);
@@ -125,134 +158,115 @@ void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb,
125
158
  }
126
159
 
127
160
  void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
128
- const XdsBootstrap::MetadataValue& value) {
129
- switch (value.type) {
130
- case XdsBootstrap::MetadataValue::Type::MD_NULL:
161
+ const Json& value) {
162
+ switch (value.type()) {
163
+ case Json::Type::JSON_NULL:
131
164
  google_protobuf_Value_set_null_value(value_pb, 0);
132
165
  break;
133
- case XdsBootstrap::MetadataValue::Type::DOUBLE:
134
- google_protobuf_Value_set_number_value(value_pb, value.double_value);
166
+ case Json::Type::NUMBER:
167
+ google_protobuf_Value_set_number_value(
168
+ value_pb, strtod(value.string_value().c_str(), nullptr));
135
169
  break;
136
- case XdsBootstrap::MetadataValue::Type::STRING:
170
+ case Json::Type::STRING:
137
171
  google_protobuf_Value_set_string_value(
138
- value_pb, upb_strview_makez(value.string_value));
172
+ value_pb, upb_strview_makez(value.string_value().c_str()));
139
173
  break;
140
- case XdsBootstrap::MetadataValue::Type::BOOL:
141
- google_protobuf_Value_set_bool_value(value_pb, value.bool_value);
174
+ case Json::Type::JSON_TRUE:
175
+ google_protobuf_Value_set_bool_value(value_pb, true);
142
176
  break;
143
- case XdsBootstrap::MetadataValue::Type::STRUCT: {
177
+ case Json::Type::JSON_FALSE:
178
+ google_protobuf_Value_set_bool_value(value_pb, false);
179
+ break;
180
+ case Json::Type::OBJECT: {
144
181
  google_protobuf_Struct* struct_value =
145
182
  google_protobuf_Value_mutable_struct_value(value_pb, arena);
146
- PopulateMetadata(arena, struct_value, value.struct_value);
183
+ PopulateMetadata(arena, struct_value, value.object_value());
147
184
  break;
148
185
  }
149
- case XdsBootstrap::MetadataValue::Type::LIST: {
186
+ case Json::Type::ARRAY: {
150
187
  google_protobuf_ListValue* list_value =
151
188
  google_protobuf_Value_mutable_list_value(value_pb, arena);
152
- PopulateListValue(arena, list_value, value.list_value);
189
+ PopulateListValue(arena, list_value, value.array_value());
153
190
  break;
154
191
  }
155
192
  }
156
193
  }
157
194
 
158
195
  void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node,
159
- const char* build_version, envoy_api_v2_core_Node* node_msg) {
196
+ const std::string& build_version,
197
+ const std::string& user_agent_name,
198
+ const std::string& server_name,
199
+ envoy_api_v2_core_Node* node_msg) {
160
200
  if (node != nullptr) {
161
- if (node->id != nullptr) {
162
- envoy_api_v2_core_Node_set_id(node_msg, upb_strview_makez(node->id));
201
+ if (!node->id.empty()) {
202
+ envoy_api_v2_core_Node_set_id(node_msg,
203
+ upb_strview_makez(node->id.c_str()));
204
+ }
205
+ if (!node->cluster.empty()) {
206
+ envoy_api_v2_core_Node_set_cluster(
207
+ node_msg, upb_strview_makez(node->cluster.c_str()));
163
208
  }
164
- if (node->cluster != nullptr) {
165
- envoy_api_v2_core_Node_set_cluster(node_msg,
166
- upb_strview_makez(node->cluster));
209
+ if (!node->metadata.object_value().empty()) {
210
+ google_protobuf_Struct* metadata =
211
+ envoy_api_v2_core_Node_mutable_metadata(node_msg, arena);
212
+ PopulateMetadata(arena, metadata, node->metadata.object_value());
167
213
  }
168
- if (!node->metadata.empty()) {
214
+ if (!server_name.empty()) {
169
215
  google_protobuf_Struct* metadata =
170
216
  envoy_api_v2_core_Node_mutable_metadata(node_msg, arena);
171
- PopulateMetadata(arena, metadata, node->metadata);
217
+ google_protobuf_Struct_FieldsEntry* field =
218
+ google_protobuf_Struct_add_fields(metadata, arena);
219
+ google_protobuf_Struct_FieldsEntry_set_key(
220
+ field, upb_strview_makez("PROXYLESS_CLIENT_HOSTNAME"));
221
+ google_protobuf_Value* value =
222
+ google_protobuf_Struct_FieldsEntry_mutable_value(field, arena);
223
+ google_protobuf_Value_set_string_value(
224
+ value, upb_strview_make(server_name.data(), server_name.size()));
172
225
  }
173
- if (node->locality_region != nullptr || node->locality_zone != nullptr ||
174
- node->locality_subzone != nullptr) {
226
+ if (!node->locality_region.empty() || !node->locality_zone.empty() ||
227
+ !node->locality_subzone.empty()) {
175
228
  envoy_api_v2_core_Locality* locality =
176
229
  envoy_api_v2_core_Node_mutable_locality(node_msg, arena);
177
- if (node->locality_region != nullptr) {
230
+ if (!node->locality_region.empty()) {
178
231
  envoy_api_v2_core_Locality_set_region(
179
- locality, upb_strview_makez(node->locality_region));
232
+ locality, upb_strview_makez(node->locality_region.c_str()));
180
233
  }
181
- if (node->locality_zone != nullptr) {
234
+ if (!node->locality_zone.empty()) {
182
235
  envoy_api_v2_core_Locality_set_zone(
183
- locality, upb_strview_makez(node->locality_zone));
236
+ locality, upb_strview_makez(node->locality_zone.c_str()));
184
237
  }
185
- if (node->locality_subzone != nullptr) {
238
+ if (!node->locality_subzone.empty()) {
186
239
  envoy_api_v2_core_Locality_set_sub_zone(
187
- locality, upb_strview_makez(node->locality_subzone));
240
+ locality, upb_strview_makez(node->locality_subzone.c_str()));
188
241
  }
189
242
  }
190
243
  }
191
- envoy_api_v2_core_Node_set_build_version(node_msg,
192
- upb_strview_makez(build_version));
244
+ envoy_api_v2_core_Node_set_build_version(
245
+ node_msg, upb_strview_make(build_version.data(), build_version.size()));
246
+ envoy_api_v2_core_Node_set_user_agent_name(
247
+ node_msg,
248
+ upb_strview_make(user_agent_name.data(), user_agent_name.size()));
249
+ envoy_api_v2_core_Node_set_user_agent_version(
250
+ node_msg, upb_strview_makez(grpc_version_string()));
251
+ envoy_api_v2_core_Node_add_client_features(
252
+ node_msg, upb_strview_makez("envoy.lb.does_not_support_overprovisioning"),
253
+ arena);
193
254
  }
194
255
 
195
- } // namespace
196
-
197
- grpc_slice XdsUnsupportedTypeNackRequestCreateAndEncode(
198
- const std::string& type_url, const std::string& nonce, grpc_error* error) {
199
- upb::Arena arena;
200
- // Create a request.
201
- envoy_api_v2_DiscoveryRequest* request =
202
- envoy_api_v2_DiscoveryRequest_new(arena.ptr());
203
- // Set type_url.
204
- envoy_api_v2_DiscoveryRequest_set_type_url(
205
- request, upb_strview_makez(type_url.c_str()));
206
- // Set nonce.
207
- envoy_api_v2_DiscoveryRequest_set_response_nonce(
208
- request, upb_strview_makez(nonce.c_str()));
209
- // Set error_detail.
210
- grpc_slice error_description_slice;
211
- GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
212
- &error_description_slice));
213
- upb_strview error_description_strview =
214
- upb_strview_make(reinterpret_cast<const char*>(
215
- GPR_SLICE_START_PTR(error_description_slice)),
216
- GPR_SLICE_LENGTH(error_description_slice));
217
- google_rpc_Status* error_detail =
218
- envoy_api_v2_DiscoveryRequest_mutable_error_detail(request, arena.ptr());
219
- google_rpc_Status_set_message(error_detail, error_description_strview);
220
- GRPC_ERROR_UNREF(error);
221
- // Encode the request.
222
- size_t output_length;
223
- char* output = envoy_api_v2_DiscoveryRequest_serialize(request, arena.ptr(),
224
- &output_length);
225
- return grpc_slice_from_copied_buffer(output, output_length);
226
- }
227
-
228
- grpc_slice XdsCdsRequestCreateAndEncode(
229
- const std::set<StringView>& cluster_names, const XdsBootstrap::Node* node,
230
- const char* build_version, const std::string& version,
256
+ envoy_api_v2_DiscoveryRequest* CreateDiscoveryRequest(
257
+ upb_arena* arena, const char* type_url, const std::string& version,
231
258
  const std::string& nonce, grpc_error* error) {
232
- upb::Arena arena;
233
259
  // Create a request.
234
260
  envoy_api_v2_DiscoveryRequest* request =
235
- envoy_api_v2_DiscoveryRequest_new(arena.ptr());
261
+ envoy_api_v2_DiscoveryRequest_new(arena);
262
+ // Set type_url.
263
+ envoy_api_v2_DiscoveryRequest_set_type_url(request,
264
+ upb_strview_makez(type_url));
236
265
  // Set version_info.
237
266
  if (!version.empty()) {
238
267
  envoy_api_v2_DiscoveryRequest_set_version_info(
239
268
  request, upb_strview_makez(version.c_str()));
240
269
  }
241
- // Populate node.
242
- if (build_version != nullptr) {
243
- envoy_api_v2_core_Node* node_msg =
244
- envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
245
- PopulateNode(arena.ptr(), node, build_version, node_msg);
246
- }
247
- // Add resource_names.
248
- for (const auto& cluster_name : cluster_names) {
249
- envoy_api_v2_DiscoveryRequest_add_resource_names(
250
- request, upb_strview_make(cluster_name.data(), cluster_name.size()),
251
- arena.ptr());
252
- }
253
- // Set type_url.
254
- envoy_api_v2_DiscoveryRequest_set_type_url(request,
255
- upb_strview_makez(kCdsTypeUrl));
256
270
  // Set nonce.
257
271
  if (!nonce.empty()) {
258
272
  envoy_api_v2_DiscoveryRequest_set_response_nonce(
@@ -268,36 +282,110 @@ grpc_slice XdsCdsRequestCreateAndEncode(
268
282
  GPR_SLICE_START_PTR(error_description_slice)),
269
283
  GPR_SLICE_LENGTH(error_description_slice));
270
284
  google_rpc_Status* error_detail =
271
- envoy_api_v2_DiscoveryRequest_mutable_error_detail(request,
272
- arena.ptr());
285
+ envoy_api_v2_DiscoveryRequest_mutable_error_detail(request, arena);
273
286
  google_rpc_Status_set_message(error_detail, error_description_strview);
274
287
  GRPC_ERROR_UNREF(error);
275
288
  }
276
- // Encode the request.
289
+ return request;
290
+ }
291
+
292
+ grpc_slice SerializeDiscoveryRequest(upb_arena* arena,
293
+ envoy_api_v2_DiscoveryRequest* request) {
277
294
  size_t output_length;
278
- char* output = envoy_api_v2_DiscoveryRequest_serialize(request, arena.ptr(),
279
- &output_length);
295
+ char* output =
296
+ envoy_api_v2_DiscoveryRequest_serialize(request, arena, &output_length);
280
297
  return grpc_slice_from_copied_buffer(output, output_length);
281
298
  }
282
299
 
283
- grpc_slice XdsEdsRequestCreateAndEncode(
284
- const std::set<StringView>& eds_service_names,
285
- const XdsBootstrap::Node* node, const char* build_version,
286
- const std::string& version, const std::string& nonce, grpc_error* error) {
300
+ } // namespace
301
+
302
+ grpc_slice XdsApi::CreateUnsupportedTypeNackRequest(const std::string& type_url,
303
+ const std::string& nonce,
304
+ grpc_error* error) {
305
+ upb::Arena arena;
306
+ envoy_api_v2_DiscoveryRequest* request = CreateDiscoveryRequest(
307
+ arena.ptr(), type_url.c_str(), /*version=*/"", nonce, error);
308
+ return SerializeDiscoveryRequest(arena.ptr(), request);
309
+ }
310
+
311
+ grpc_slice XdsApi::CreateLdsRequest(const std::string& server_name,
312
+ const std::string& version,
313
+ const std::string& nonce, grpc_error* error,
314
+ bool populate_node) {
287
315
  upb::Arena arena;
288
- // Create a request.
289
316
  envoy_api_v2_DiscoveryRequest* request =
290
- envoy_api_v2_DiscoveryRequest_new(arena.ptr());
291
- // Set version_info.
292
- if (!version.empty()) {
293
- envoy_api_v2_DiscoveryRequest_set_version_info(
294
- request, upb_strview_makez(version.c_str()));
317
+ CreateDiscoveryRequest(arena.ptr(), kLdsTypeUrl, version, nonce, error);
318
+ // Populate node.
319
+ if (populate_node) {
320
+ envoy_api_v2_core_Node* node_msg =
321
+ envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
322
+ PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
323
+ node_msg);
324
+ }
325
+ // Add resource_name.
326
+ envoy_api_v2_DiscoveryRequest_add_resource_names(
327
+ request, upb_strview_make(server_name.data(), server_name.size()),
328
+ arena.ptr());
329
+ return SerializeDiscoveryRequest(arena.ptr(), request);
330
+ }
331
+
332
+ grpc_slice XdsApi::CreateRdsRequest(const std::string& route_config_name,
333
+ const std::string& version,
334
+ const std::string& nonce, grpc_error* error,
335
+ bool populate_node) {
336
+ upb::Arena arena;
337
+ envoy_api_v2_DiscoveryRequest* request =
338
+ CreateDiscoveryRequest(arena.ptr(), kRdsTypeUrl, version, nonce, error);
339
+ // Populate node.
340
+ if (populate_node) {
341
+ envoy_api_v2_core_Node* node_msg =
342
+ envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
343
+ PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
344
+ node_msg);
345
+ }
346
+ // Add resource_name.
347
+ envoy_api_v2_DiscoveryRequest_add_resource_names(
348
+ request,
349
+ upb_strview_make(route_config_name.data(), route_config_name.size()),
350
+ arena.ptr());
351
+ return SerializeDiscoveryRequest(arena.ptr(), request);
352
+ }
353
+
354
+ grpc_slice XdsApi::CreateCdsRequest(const std::set<StringView>& cluster_names,
355
+ const std::string& version,
356
+ const std::string& nonce, grpc_error* error,
357
+ bool populate_node) {
358
+ upb::Arena arena;
359
+ envoy_api_v2_DiscoveryRequest* request =
360
+ CreateDiscoveryRequest(arena.ptr(), kCdsTypeUrl, version, nonce, error);
361
+ // Populate node.
362
+ if (populate_node) {
363
+ envoy_api_v2_core_Node* node_msg =
364
+ envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
365
+ PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
366
+ node_msg);
295
367
  }
368
+ // Add resource_names.
369
+ for (const auto& cluster_name : cluster_names) {
370
+ envoy_api_v2_DiscoveryRequest_add_resource_names(
371
+ request, upb_strview_make(cluster_name.data(), cluster_name.size()),
372
+ arena.ptr());
373
+ }
374
+ return SerializeDiscoveryRequest(arena.ptr(), request);
375
+ }
376
+
377
+ grpc_slice XdsApi::CreateEdsRequest(
378
+ const std::set<StringView>& eds_service_names, const std::string& version,
379
+ const std::string& nonce, grpc_error* error, bool populate_node) {
380
+ upb::Arena arena;
381
+ envoy_api_v2_DiscoveryRequest* request =
382
+ CreateDiscoveryRequest(arena.ptr(), kEdsTypeUrl, version, nonce, error);
296
383
  // Populate node.
297
- if (build_version != nullptr) {
384
+ if (populate_node) {
298
385
  envoy_api_v2_core_Node* node_msg =
299
386
  envoy_api_v2_DiscoveryRequest_mutable_node(request, arena.ptr());
300
- PopulateNode(arena.ptr(), node, build_version, node_msg);
387
+ PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_, "",
388
+ node_msg);
301
389
  }
302
390
  // Add resource_names.
303
391
  for (const auto& eds_service_name : eds_service_names) {
@@ -306,38 +394,283 @@ grpc_slice XdsEdsRequestCreateAndEncode(
306
394
  upb_strview_make(eds_service_name.data(), eds_service_name.size()),
307
395
  arena.ptr());
308
396
  }
309
- // Set type_url.
310
- envoy_api_v2_DiscoveryRequest_set_type_url(request,
311
- upb_strview_makez(kEdsTypeUrl));
312
- // Set nonce.
313
- if (!nonce.empty()) {
314
- envoy_api_v2_DiscoveryRequest_set_response_nonce(
315
- request, upb_strview_makez(nonce.c_str()));
397
+ return SerializeDiscoveryRequest(arena.ptr(), request);
398
+ }
399
+
400
+ namespace {
401
+
402
+ // Better match type has smaller value.
403
+ enum MatchType {
404
+ EXACT_MATCH,
405
+ SUFFIX_MATCH,
406
+ PREFIX_MATCH,
407
+ UNIVERSE_MATCH,
408
+ INVALID_MATCH,
409
+ };
410
+
411
+ // Returns true if match succeeds.
412
+ bool DomainMatch(MatchType match_type, std::string domain_pattern,
413
+ std::string expected_host_name) {
414
+ // Normalize the args to lower-case. Domain matching is case-insensitive.
415
+ std::transform(domain_pattern.begin(), domain_pattern.end(),
416
+ domain_pattern.begin(),
417
+ [](unsigned char c) { return std::tolower(c); });
418
+ std::transform(expected_host_name.begin(), expected_host_name.end(),
419
+ expected_host_name.begin(),
420
+ [](unsigned char c) { return std::tolower(c); });
421
+ if (match_type == EXACT_MATCH) {
422
+ return domain_pattern == expected_host_name;
423
+ } else if (match_type == SUFFIX_MATCH) {
424
+ // Asterisk must match at least one char.
425
+ if (expected_host_name.size() < domain_pattern.size()) return false;
426
+ StringView pattern_suffix(domain_pattern.c_str() + 1);
427
+ StringView host_suffix(expected_host_name.c_str() +
428
+ expected_host_name.size() - pattern_suffix.size());
429
+ return pattern_suffix == host_suffix;
430
+ } else if (match_type == PREFIX_MATCH) {
431
+ // Asterisk must match at least one char.
432
+ if (expected_host_name.size() < domain_pattern.size()) return false;
433
+ StringView pattern_prefix(domain_pattern.c_str(),
434
+ domain_pattern.size() - 1);
435
+ StringView host_prefix(expected_host_name.c_str(), pattern_prefix.size());
436
+ return pattern_prefix == host_prefix;
437
+ } else {
438
+ return match_type == UNIVERSE_MATCH;
316
439
  }
317
- // Set error_detail if it's a NACK.
318
- if (error != GRPC_ERROR_NONE) {
319
- grpc_slice error_description_slice;
320
- GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
321
- &error_description_slice));
322
- upb_strview error_description_strview =
323
- upb_strview_make(reinterpret_cast<const char*>(
324
- GPR_SLICE_START_PTR(error_description_slice)),
325
- GPR_SLICE_LENGTH(error_description_slice));
326
- google_rpc_Status* error_detail =
327
- envoy_api_v2_DiscoveryRequest_mutable_error_detail(request,
328
- arena.ptr());
329
- google_rpc_Status_set_message(error_detail, error_description_strview);
330
- GRPC_ERROR_UNREF(error);
440
+ }
441
+
442
+ MatchType DomainPatternMatchType(const std::string& domain_pattern) {
443
+ if (domain_pattern.empty()) return INVALID_MATCH;
444
+ if (domain_pattern.find('*') == std::string::npos) return EXACT_MATCH;
445
+ if (domain_pattern == "*") return UNIVERSE_MATCH;
446
+ if (domain_pattern[0] == '*') return SUFFIX_MATCH;
447
+ if (domain_pattern[domain_pattern.size() - 1] == '*') return PREFIX_MATCH;
448
+ return INVALID_MATCH;
449
+ }
450
+
451
+ grpc_error* RouteConfigParse(
452
+ const envoy_api_v2_RouteConfiguration* route_config,
453
+ const std::string& expected_server_name, XdsApi::RdsUpdate* rds_update) {
454
+ // Strip off port from server name, if any.
455
+ size_t pos = expected_server_name.find(':');
456
+ std::string expected_host_name = expected_server_name.substr(0, pos);
457
+ // Get the virtual hosts.
458
+ size_t size;
459
+ const envoy_api_v2_route_VirtualHost* const* virtual_hosts =
460
+ envoy_api_v2_RouteConfiguration_virtual_hosts(route_config, &size);
461
+ // Find the best matched virtual host.
462
+ // The search order for 4 groups of domain patterns:
463
+ // 1. Exact match.
464
+ // 2. Suffix match (e.g., "*ABC").
465
+ // 3. Prefix match (e.g., "ABC*").
466
+ // 4. Universe match (i.e., "*").
467
+ // Within each group, longest match wins.
468
+ // If the same best matched domain pattern appears in multiple virtual hosts,
469
+ // the first matched virtual host wins.
470
+ const envoy_api_v2_route_VirtualHost* target_virtual_host = nullptr;
471
+ MatchType best_match_type = INVALID_MATCH;
472
+ size_t longest_match = 0;
473
+ // Check each domain pattern in each virtual host to determine the best
474
+ // matched virtual host.
475
+ for (size_t i = 0; i < size; ++i) {
476
+ size_t domain_size;
477
+ upb_strview const* domains =
478
+ envoy_api_v2_route_VirtualHost_domains(virtual_hosts[i], &domain_size);
479
+ for (size_t j = 0; j < domain_size; ++j) {
480
+ const std::string domain_pattern(domains[j].data, domains[j].size);
481
+ // Check the match type first. Skip the pattern if it's not better than
482
+ // current match.
483
+ const MatchType match_type = DomainPatternMatchType(domain_pattern);
484
+ if (match_type == INVALID_MATCH) {
485
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid domain pattern.");
486
+ }
487
+ if (match_type > best_match_type) continue;
488
+ if (match_type == best_match_type &&
489
+ domain_pattern.size() <= longest_match) {
490
+ continue;
491
+ }
492
+ // Skip if match fails.
493
+ if (!DomainMatch(match_type, domain_pattern, expected_host_name)) {
494
+ continue;
495
+ }
496
+ // Choose this match.
497
+ target_virtual_host = virtual_hosts[i];
498
+ best_match_type = match_type;
499
+ longest_match = domain_pattern.size();
500
+ if (best_match_type == EXACT_MATCH) break;
501
+ }
502
+ if (best_match_type == EXACT_MATCH) break;
331
503
  }
332
- // Encode the request.
333
- size_t output_length;
334
- char* output = envoy_api_v2_DiscoveryRequest_serialize(request, arena.ptr(),
335
- &output_length);
336
- return grpc_slice_from_copied_buffer(output, output_length);
504
+ if (target_virtual_host == nullptr) {
505
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
506
+ "No matched virtual host found in the route config.");
507
+ }
508
+ // Get the route list from the matched virtual host.
509
+ const envoy_api_v2_route_Route* const* routes =
510
+ envoy_api_v2_route_VirtualHost_routes(target_virtual_host, &size);
511
+ if (size < 1) {
512
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
513
+ "No route found in the virtual host.");
514
+ }
515
+ // Only look at the last one in the route list (the default route),
516
+ const envoy_api_v2_route_Route* route = routes[size - 1];
517
+ // Validate that the match field must have a prefix field which is an empty
518
+ // string.
519
+ const envoy_api_v2_route_RouteMatch* match =
520
+ envoy_api_v2_route_Route_match(route);
521
+ if (!envoy_api_v2_route_RouteMatch_has_prefix(match)) {
522
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
523
+ "No prefix field found in RouteMatch.");
524
+ }
525
+ const upb_strview prefix = envoy_api_v2_route_RouteMatch_prefix(match);
526
+ if (!upb_strview_eql(prefix, upb_strview_makez(""))) {
527
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Prefix is not empty string.");
528
+ }
529
+ if (!envoy_api_v2_route_Route_has_route(route)) {
530
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
531
+ "No RouteAction found in route.");
532
+ }
533
+ const envoy_api_v2_route_RouteAction* route_action =
534
+ envoy_api_v2_route_Route_route(route);
535
+ // Get the cluster in the RouteAction.
536
+ if (!envoy_api_v2_route_RouteAction_has_cluster(route_action)) {
537
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
538
+ "No cluster found in RouteAction.");
539
+ }
540
+ const upb_strview cluster =
541
+ envoy_api_v2_route_RouteAction_cluster(route_action);
542
+ rds_update->cluster_name = std::string(cluster.data, cluster.size);
543
+ return GRPC_ERROR_NONE;
544
+ }
545
+
546
+ grpc_error* LdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
547
+ const std::string& expected_server_name,
548
+ XdsApi::LdsUpdate* lds_update, upb_arena* arena) {
549
+ // Get the resources from the response.
550
+ size_t size;
551
+ const google_protobuf_Any* const* resources =
552
+ envoy_api_v2_DiscoveryResponse_resources(response, &size);
553
+ if (size < 1) {
554
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
555
+ "LDS response contains 0 resource.");
556
+ }
557
+ for (size_t i = 0; i < size; ++i) {
558
+ // Check the type_url of the resource.
559
+ const upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
560
+ if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kLdsTypeUrl))) {
561
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not LDS.");
562
+ }
563
+ // Decode the listener.
564
+ const upb_strview encoded_listener =
565
+ google_protobuf_Any_value(resources[i]);
566
+ const envoy_api_v2_Listener* listener = envoy_api_v2_Listener_parse(
567
+ encoded_listener.data, encoded_listener.size, arena);
568
+ if (listener == nullptr) {
569
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode listener.");
570
+ }
571
+ // Check listener name. Ignore unexpected listeners.
572
+ const upb_strview name = envoy_api_v2_Listener_name(listener);
573
+ const upb_strview expected_name =
574
+ upb_strview_makez(expected_server_name.c_str());
575
+ if (!upb_strview_eql(name, expected_name)) continue;
576
+ // Get api_listener and decode it to http_connection_manager.
577
+ const envoy_config_listener_v2_ApiListener* api_listener =
578
+ envoy_api_v2_Listener_api_listener(listener);
579
+ if (api_listener == nullptr) {
580
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
581
+ "Listener doesn't have ApiListener.");
582
+ }
583
+ const upb_strview encoded_api_listener = google_protobuf_Any_value(
584
+ envoy_config_listener_v2_ApiListener_api_listener(api_listener));
585
+ const envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager*
586
+ http_connection_manager =
587
+ envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_parse(
588
+ encoded_api_listener.data, encoded_api_listener.size, arena);
589
+ // Found inlined route_config. Parse it to find the cluster_name.
590
+ if (envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_has_route_config(
591
+ http_connection_manager)) {
592
+ const envoy_api_v2_RouteConfiguration* route_config =
593
+ envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_route_config(
594
+ http_connection_manager);
595
+ XdsApi::RdsUpdate rds_update;
596
+ grpc_error* error =
597
+ RouteConfigParse(route_config, expected_server_name, &rds_update);
598
+ if (error != GRPC_ERROR_NONE) return error;
599
+ lds_update->rds_update.emplace(std::move(rds_update));
600
+ const upb_strview route_config_name =
601
+ envoy_api_v2_RouteConfiguration_name(route_config);
602
+ lds_update->route_config_name =
603
+ std::string(route_config_name.data, route_config_name.size);
604
+ return GRPC_ERROR_NONE;
605
+ }
606
+ // Validate that RDS must be used to get the route_config dynamically.
607
+ if (!envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_has_rds(
608
+ http_connection_manager)) {
609
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
610
+ "HttpConnectionManager neither has inlined route_config nor RDS.");
611
+ }
612
+ // Get the route_config_name.
613
+ const envoy_config_filter_network_http_connection_manager_v2_Rds* rds =
614
+ envoy_config_filter_network_http_connection_manager_v2_HttpConnectionManager_rds(
615
+ http_connection_manager);
616
+ const upb_strview route_config_name =
617
+ envoy_config_filter_network_http_connection_manager_v2_Rds_route_config_name(
618
+ rds);
619
+ lds_update->route_config_name =
620
+ std::string(route_config_name.data, route_config_name.size);
621
+ return GRPC_ERROR_NONE;
622
+ }
623
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
624
+ "No listener found for expected server name.");
625
+ }
626
+
627
+ grpc_error* RdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
628
+ const std::string& expected_server_name,
629
+ const std::string& expected_route_config_name,
630
+ XdsApi::RdsUpdate* rds_update, upb_arena* arena) {
631
+ // Get the resources from the response.
632
+ size_t size;
633
+ const google_protobuf_Any* const* resources =
634
+ envoy_api_v2_DiscoveryResponse_resources(response, &size);
635
+ if (size < 1) {
636
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
637
+ "RDS response contains 0 resource.");
638
+ }
639
+ for (size_t i = 0; i < size; ++i) {
640
+ // Check the type_url of the resource.
641
+ const upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
642
+ if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kRdsTypeUrl))) {
643
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not RDS.");
644
+ }
645
+ // Decode the route_config.
646
+ const upb_strview encoded_route_config =
647
+ google_protobuf_Any_value(resources[i]);
648
+ const envoy_api_v2_RouteConfiguration* route_config =
649
+ envoy_api_v2_RouteConfiguration_parse(encoded_route_config.data,
650
+ encoded_route_config.size, arena);
651
+ if (route_config == nullptr) {
652
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode route_config.");
653
+ }
654
+ // Check route_config_name. Ignore unexpected route_config.
655
+ const upb_strview name = envoy_api_v2_RouteConfiguration_name(route_config);
656
+ const upb_strview expected_name =
657
+ upb_strview_makez(expected_route_config_name.c_str());
658
+ if (!upb_strview_eql(name, expected_name)) continue;
659
+ // Parse the route_config.
660
+ XdsApi::RdsUpdate local_rds_update;
661
+ grpc_error* error =
662
+ RouteConfigParse(route_config, expected_server_name, &local_rds_update);
663
+ if (error != GRPC_ERROR_NONE) return error;
664
+ *rds_update = std::move(local_rds_update);
665
+ return GRPC_ERROR_NONE;
666
+ }
667
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
668
+ "No route config found for expected name.");
337
669
  }
338
670
 
339
671
  grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
340
- CdsUpdateMap* cds_update_map, upb_arena* arena) {
672
+ XdsApi::CdsUpdateMap* cds_update_map,
673
+ upb_arena* arena) {
341
674
  // Get the resources from the response.
342
675
  size_t size;
343
676
  const google_protobuf_Any* const* resources =
@@ -348,10 +681,10 @@ grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
348
681
  }
349
682
  // Parse all the resources in the CDS response.
350
683
  for (size_t i = 0; i < size; ++i) {
351
- CdsUpdate cds_update;
684
+ XdsApi::CdsUpdate cds_update;
352
685
  // Check the type_url of the resource.
353
686
  const upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
354
- if (!upb_strview_eql(type_url, upb_strview_makez(kCdsTypeUrl))) {
687
+ if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kCdsTypeUrl))) {
355
688
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not CDS.");
356
689
  }
357
690
  // Decode the cluster.
@@ -397,7 +730,7 @@ grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
397
730
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
398
731
  "ConfigSource is not self.");
399
732
  }
400
- cds_update.lrs_load_reporting_server_name.set("");
733
+ cds_update.lrs_load_reporting_server_name.emplace("");
401
734
  }
402
735
  upb_strview cluster_name = envoy_api_v2_Cluster_name(cluster);
403
736
  cds_update_map->emplace(std::string(cluster_name.data, cluster_name.size),
@@ -406,8 +739,6 @@ grpc_error* CdsResponseParse(const envoy_api_v2_DiscoveryResponse* response,
406
739
  return GRPC_ERROR_NONE;
407
740
  }
408
741
 
409
- namespace {
410
-
411
742
  grpc_error* ServerAddressParseAndAppend(
412
743
  const envoy_api_v2_endpoint_LbEndpoint* lb_endpoint,
413
744
  ServerAddressList* list) {
@@ -445,7 +776,7 @@ grpc_error* ServerAddressParseAndAppend(
445
776
 
446
777
  grpc_error* LocalityParse(
447
778
  const envoy_api_v2_endpoint_LocalityLbEndpoints* locality_lb_endpoints,
448
- XdsPriorityListUpdate::LocalityMap::Locality* output_locality) {
779
+ XdsApi::PriorityListUpdate::LocalityMap::Locality* output_locality) {
449
780
  // Parse LB weight.
450
781
  const google_protobuf_UInt32Value* lb_weight =
451
782
  envoy_api_v2_endpoint_LocalityLbEndpoints_load_balancing_weight(
@@ -483,7 +814,7 @@ grpc_error* LocalityParse(
483
814
 
484
815
  grpc_error* DropParseAndAppend(
485
816
  const envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload* drop_overload,
486
- XdsDropConfig* drop_config, bool* drop_all) {
817
+ XdsApi::DropConfig* drop_config, bool* drop_all) {
487
818
  // Get the category.
488
819
  upb_strview category =
489
820
  envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload_category(
@@ -523,7 +854,7 @@ grpc_error* DropParseAndAppend(
523
854
  grpc_error* EdsResponsedParse(
524
855
  const envoy_api_v2_DiscoveryResponse* response,
525
856
  const std::set<StringView>& expected_eds_service_names,
526
- EdsUpdateMap* eds_update_map, upb_arena* arena) {
857
+ XdsApi::EdsUpdateMap* eds_update_map, upb_arena* arena) {
527
858
  // Get the resources from the response.
528
859
  size_t size;
529
860
  const google_protobuf_Any* const* resources =
@@ -533,10 +864,10 @@ grpc_error* EdsResponsedParse(
533
864
  "EDS response contains 0 resource.");
534
865
  }
535
866
  for (size_t i = 0; i < size; ++i) {
536
- EdsUpdate eds_update;
867
+ XdsApi::EdsUpdate eds_update;
537
868
  // Check the type_url of the resource.
538
869
  upb_strview type_url = google_protobuf_Any_type_url(resources[i]);
539
- if (!upb_strview_eql(type_url, upb_strview_makez(kEdsTypeUrl))) {
870
+ if (!upb_strview_eql(type_url, upb_strview_makez(XdsApi::kEdsTypeUrl))) {
540
871
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not EDS.");
541
872
  }
542
873
  // Get the cluster_load_assignment.
@@ -565,7 +896,7 @@ grpc_error* EdsResponsedParse(
565
896
  envoy_api_v2_ClusterLoadAssignment_endpoints(cluster_load_assignment,
566
897
  &locality_size);
567
898
  for (size_t j = 0; j < locality_size; ++j) {
568
- XdsPriorityListUpdate::LocalityMap::Locality locality;
899
+ XdsApi::PriorityListUpdate::LocalityMap::Locality locality;
569
900
  grpc_error* error = LocalityParse(endpoints[j], &locality);
570
901
  if (error != GRPC_ERROR_NONE) return error;
571
902
  // Filter out locality with weight 0.
@@ -573,7 +904,7 @@ grpc_error* EdsResponsedParse(
573
904
  eds_update.priority_list_update.Add(locality);
574
905
  }
575
906
  // Get the drop config.
576
- eds_update.drop_config = MakeRefCounted<XdsDropConfig>();
907
+ eds_update.drop_config = MakeRefCounted<XdsApi::DropConfig>();
577
908
  const envoy_api_v2_ClusterLoadAssignment_Policy* policy =
578
909
  envoy_api_v2_ClusterLoadAssignment_policy(cluster_load_assignment);
579
910
  if (policy != nullptr) {
@@ -603,11 +934,13 @@ grpc_error* EdsResponsedParse(
603
934
 
604
935
  } // namespace
605
936
 
606
- grpc_error* XdsAdsResponseDecodeAndParse(
607
- const grpc_slice& encoded_response,
937
+ grpc_error* XdsApi::ParseAdsResponse(
938
+ const grpc_slice& encoded_response, const std::string& expected_server_name,
939
+ const std::string& expected_route_config_name,
608
940
  const std::set<StringView>& expected_eds_service_names,
609
- CdsUpdateMap* cds_update_map, EdsUpdateMap* eds_update_map,
610
- std::string* version, std::string* nonce, std::string* type_url) {
941
+ LdsUpdate* lds_update, RdsUpdate* rds_update, CdsUpdateMap* cds_update_map,
942
+ EdsUpdateMap* eds_update_map, std::string* version, std::string* nonce,
943
+ std::string* type_url) {
611
944
  upb::Arena arena;
612
945
  // Decode the response.
613
946
  const envoy_api_v2_DiscoveryResponse* response =
@@ -630,7 +963,14 @@ grpc_error* XdsAdsResponseDecodeAndParse(
630
963
  upb_strview nonce_strview = envoy_api_v2_DiscoveryResponse_nonce(response);
631
964
  *nonce = std::string(nonce_strview.data, nonce_strview.size);
632
965
  // Parse the response according to the resource type.
633
- if (*type_url == kCdsTypeUrl) {
966
+ if (*type_url == kLdsTypeUrl) {
967
+ return LdsResponseParse(response, expected_server_name, lds_update,
968
+ arena.ptr());
969
+ } else if (*type_url == kRdsTypeUrl) {
970
+ return RdsResponseParse(response, expected_server_name,
971
+ expected_route_config_name, rds_update,
972
+ arena.ptr());
973
+ } else if (*type_url == kCdsTypeUrl) {
634
974
  return CdsResponseParse(response, cds_update_map, arena.ptr());
635
975
  } else if (*type_url == kEdsTypeUrl) {
636
976
  return EdsResponsedParse(response, expected_eds_service_names,
@@ -643,7 +983,7 @@ grpc_error* XdsAdsResponseDecodeAndParse(
643
983
 
644
984
  namespace {
645
985
 
646
- grpc_slice LrsRequestEncode(
986
+ grpc_slice SerializeLrsRequest(
647
987
  const envoy_service_load_stats_v2_LoadStatsRequest* request,
648
988
  upb_arena* arena) {
649
989
  size_t output_length;
@@ -654,9 +994,7 @@ grpc_slice LrsRequestEncode(
654
994
 
655
995
  } // namespace
656
996
 
657
- grpc_slice XdsLrsRequestCreateAndEncode(const std::string& server_name,
658
- const XdsBootstrap::Node* node,
659
- const char* build_version) {
997
+ grpc_slice XdsApi::CreateLrsInitialRequest(const std::string& server_name) {
660
998
  upb::Arena arena;
661
999
  // Create a request.
662
1000
  envoy_service_load_stats_v2_LoadStatsRequest* request =
@@ -665,33 +1003,34 @@ grpc_slice XdsLrsRequestCreateAndEncode(const std::string& server_name,
665
1003
  envoy_api_v2_core_Node* node_msg =
666
1004
  envoy_service_load_stats_v2_LoadStatsRequest_mutable_node(request,
667
1005
  arena.ptr());
668
- PopulateNode(arena.ptr(), node, build_version, node_msg);
669
- // Add cluster stats. There is only one because we only use one server name in
670
- // one channel.
671
- envoy_api_v2_endpoint_ClusterStats* cluster_stats =
672
- envoy_service_load_stats_v2_LoadStatsRequest_add_cluster_stats(
673
- request, arena.ptr());
674
- // Set the cluster name.
675
- envoy_api_v2_endpoint_ClusterStats_set_cluster_name(
676
- cluster_stats, upb_strview_makez(server_name.c_str()));
677
- return LrsRequestEncode(request, arena.ptr());
1006
+ PopulateNode(arena.ptr(), node_, build_version_, user_agent_name_,
1007
+ server_name, node_msg);
1008
+ return SerializeLrsRequest(request, arena.ptr());
678
1009
  }
679
1010
 
680
1011
  namespace {
681
1012
 
682
- void LocalityStatsPopulate(
683
- envoy_api_v2_endpoint_UpstreamLocalityStats* output,
684
- const std::pair<const RefCountedPtr<XdsLocalityName>,
685
- XdsClientStats::LocalityStats::Snapshot>& input,
686
- upb_arena* arena) {
687
- // Set sub_zone.
1013
+ void LocalityStatsPopulate(envoy_api_v2_endpoint_UpstreamLocalityStats* output,
1014
+ const XdsLocalityName& locality_name,
1015
+ const XdsClusterLocalityStats::Snapshot& snapshot,
1016
+ upb_arena* arena) {
1017
+ // Set locality.
688
1018
  envoy_api_v2_core_Locality* locality =
689
1019
  envoy_api_v2_endpoint_UpstreamLocalityStats_mutable_locality(output,
690
1020
  arena);
691
- envoy_api_v2_core_Locality_set_sub_zone(
692
- locality, upb_strview_makez(input.first->sub_zone().c_str()));
1021
+ if (!locality_name.region().empty()) {
1022
+ envoy_api_v2_core_Locality_set_region(
1023
+ locality, upb_strview_makez(locality_name.region().c_str()));
1024
+ }
1025
+ if (!locality_name.zone().empty()) {
1026
+ envoy_api_v2_core_Locality_set_zone(
1027
+ locality, upb_strview_makez(locality_name.zone().c_str()));
1028
+ }
1029
+ if (!locality_name.sub_zone().empty()) {
1030
+ envoy_api_v2_core_Locality_set_sub_zone(
1031
+ locality, upb_strview_makez(locality_name.sub_zone().c_str()));
1032
+ }
693
1033
  // Set total counts.
694
- const XdsClientStats::LocalityStats::Snapshot& snapshot = input.second;
695
1034
  envoy_api_v2_endpoint_UpstreamLocalityStats_set_total_successful_requests(
696
1035
  output, snapshot.total_successful_requests);
697
1036
  envoy_api_v2_endpoint_UpstreamLocalityStats_set_total_requests_in_progress(
@@ -700,16 +1039,15 @@ void LocalityStatsPopulate(
700
1039
  output, snapshot.total_error_requests);
701
1040
  envoy_api_v2_endpoint_UpstreamLocalityStats_set_total_issued_requests(
702
1041
  output, snapshot.total_issued_requests);
703
- // Add load metric stats.
704
- for (auto& p : snapshot.load_metric_stats) {
705
- const char* metric_name = p.first.c_str();
706
- const XdsClientStats::LocalityStats::LoadMetric::Snapshot& metric_value =
707
- p.second;
1042
+ // Add backend metrics.
1043
+ for (const auto& p : snapshot.backend_metrics) {
1044
+ const std::string& metric_name = p.first;
1045
+ const XdsClusterLocalityStats::BackendMetric& metric_value = p.second;
708
1046
  envoy_api_v2_endpoint_EndpointLoadMetricStats* load_metric =
709
1047
  envoy_api_v2_endpoint_UpstreamLocalityStats_add_load_metric_stats(
710
1048
  output, arena);
711
1049
  envoy_api_v2_endpoint_EndpointLoadMetricStats_set_metric_name(
712
- load_metric, upb_strview_makez(metric_name));
1050
+ load_metric, upb_strview_make(metric_name.data(), metric_name.size()));
713
1051
  envoy_api_v2_endpoint_EndpointLoadMetricStats_set_num_requests_finished_with_metric(
714
1052
  load_metric, metric_value.num_requests_finished_with_metric);
715
1053
  envoy_api_v2_endpoint_EndpointLoadMetricStats_set_total_metric_value(
@@ -719,80 +1057,72 @@ void LocalityStatsPopulate(
719
1057
 
720
1058
  } // namespace
721
1059
 
722
- grpc_slice XdsLrsRequestCreateAndEncode(
723
- std::map<StringView, std::set<XdsClientStats*>> client_stats_map) {
1060
+ grpc_slice XdsApi::CreateLrsRequest(
1061
+ ClusterLoadReportMap cluster_load_report_map) {
724
1062
  upb::Arena arena;
725
- // Get the snapshots.
726
- std::map<StringView, grpc_core::InlinedVector<XdsClientStats::Snapshot, 1>>
727
- snapshot_map;
728
- for (auto& p : client_stats_map) {
729
- const StringView& cluster_name = p.first;
730
- for (auto* client_stats : p.second) {
731
- XdsClientStats::Snapshot snapshot = client_stats->GetSnapshotAndReset();
732
- // Prune unused locality stats.
733
- client_stats->PruneLocalityStats();
734
- if (snapshot.IsAllZero()) continue;
735
- snapshot_map[cluster_name].emplace_back(std::move(snapshot));
736
- }
737
- }
738
- // When all the counts are zero, return empty slice.
739
- if (snapshot_map.empty()) return grpc_empty_slice();
740
1063
  // Create a request.
741
1064
  envoy_service_load_stats_v2_LoadStatsRequest* request =
742
1065
  envoy_service_load_stats_v2_LoadStatsRequest_new(arena.ptr());
743
- for (auto& p : snapshot_map) {
744
- const StringView& cluster_name = p.first;
745
- const auto& snapshot_list = p.second;
746
- for (size_t i = 0; i < snapshot_list.size(); ++i) {
747
- const auto& snapshot = snapshot_list[i];
748
- // Add cluster stats.
749
- envoy_api_v2_endpoint_ClusterStats* cluster_stats =
750
- envoy_service_load_stats_v2_LoadStatsRequest_add_cluster_stats(
751
- request, arena.ptr());
752
- // Set the cluster name.
753
- envoy_api_v2_endpoint_ClusterStats_set_cluster_name(
1066
+ for (auto& p : cluster_load_report_map) {
1067
+ const std::string& cluster_name = p.first.first;
1068
+ const std::string& eds_service_name = p.first.second;
1069
+ const ClusterLoadReport& load_report = p.second;
1070
+ // Add cluster stats.
1071
+ envoy_api_v2_endpoint_ClusterStats* cluster_stats =
1072
+ envoy_service_load_stats_v2_LoadStatsRequest_add_cluster_stats(
1073
+ request, arena.ptr());
1074
+ // Set the cluster name.
1075
+ envoy_api_v2_endpoint_ClusterStats_set_cluster_name(
1076
+ cluster_stats,
1077
+ upb_strview_make(cluster_name.data(), cluster_name.size()));
1078
+ // Set EDS service name, if non-empty.
1079
+ if (!eds_service_name.empty()) {
1080
+ envoy_api_v2_endpoint_ClusterStats_set_cluster_service_name(
754
1081
  cluster_stats,
755
- upb_strview_make(cluster_name.data(), cluster_name.size()));
756
- // Add locality stats.
757
- for (auto& p : snapshot.upstream_locality_stats) {
758
- envoy_api_v2_endpoint_UpstreamLocalityStats* locality_stats =
759
- envoy_api_v2_endpoint_ClusterStats_add_upstream_locality_stats(
760
- cluster_stats, arena.ptr());
761
- LocalityStatsPopulate(locality_stats, p, arena.ptr());
762
- }
763
- // Add dropped requests.
764
- for (auto& p : snapshot.dropped_requests) {
765
- const char* category = p.first.c_str();
766
- const uint64_t count = p.second;
767
- envoy_api_v2_endpoint_ClusterStats_DroppedRequests* dropped_requests =
768
- envoy_api_v2_endpoint_ClusterStats_add_dropped_requests(
769
- cluster_stats, arena.ptr());
770
- envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_category(
771
- dropped_requests, upb_strview_makez(category));
772
- envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_dropped_count(
773
- dropped_requests, count);
774
- }
775
- // Set total dropped requests.
776
- envoy_api_v2_endpoint_ClusterStats_set_total_dropped_requests(
777
- cluster_stats, snapshot.total_dropped_requests);
778
- // Set real load report interval.
779
- gpr_timespec timespec =
780
- grpc_millis_to_timespec(snapshot.load_report_interval, GPR_TIMESPAN);
781
- google_protobuf_Duration* load_report_interval =
782
- envoy_api_v2_endpoint_ClusterStats_mutable_load_report_interval(
1082
+ upb_strview_make(eds_service_name.data(), eds_service_name.size()));
1083
+ }
1084
+ // Add locality stats.
1085
+ for (const auto& p : load_report.locality_stats) {
1086
+ const XdsLocalityName& locality_name = *p.first;
1087
+ const auto& snapshot = p.second;
1088
+ envoy_api_v2_endpoint_UpstreamLocalityStats* locality_stats =
1089
+ envoy_api_v2_endpoint_ClusterStats_add_upstream_locality_stats(
783
1090
  cluster_stats, arena.ptr());
784
- google_protobuf_Duration_set_seconds(load_report_interval,
785
- timespec.tv_sec);
786
- google_protobuf_Duration_set_nanos(load_report_interval,
787
- timespec.tv_nsec);
1091
+ LocalityStatsPopulate(locality_stats, locality_name, snapshot,
1092
+ arena.ptr());
1093
+ }
1094
+ // Add dropped requests.
1095
+ uint64_t total_dropped_requests = 0;
1096
+ for (const auto& p : load_report.dropped_requests) {
1097
+ const char* category = p.first.c_str();
1098
+ const uint64_t count = p.second;
1099
+ envoy_api_v2_endpoint_ClusterStats_DroppedRequests* dropped_requests =
1100
+ envoy_api_v2_endpoint_ClusterStats_add_dropped_requests(cluster_stats,
1101
+ arena.ptr());
1102
+ envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_category(
1103
+ dropped_requests, upb_strview_makez(category));
1104
+ envoy_api_v2_endpoint_ClusterStats_DroppedRequests_set_dropped_count(
1105
+ dropped_requests, count);
1106
+ total_dropped_requests += count;
788
1107
  }
1108
+ // Set total dropped requests.
1109
+ envoy_api_v2_endpoint_ClusterStats_set_total_dropped_requests(
1110
+ cluster_stats, total_dropped_requests);
1111
+ // Set real load report interval.
1112
+ gpr_timespec timespec =
1113
+ grpc_millis_to_timespec(load_report.load_report_interval, GPR_TIMESPAN);
1114
+ google_protobuf_Duration* load_report_interval =
1115
+ envoy_api_v2_endpoint_ClusterStats_mutable_load_report_interval(
1116
+ cluster_stats, arena.ptr());
1117
+ google_protobuf_Duration_set_seconds(load_report_interval, timespec.tv_sec);
1118
+ google_protobuf_Duration_set_nanos(load_report_interval, timespec.tv_nsec);
789
1119
  }
790
- return LrsRequestEncode(request, arena.ptr());
1120
+ return SerializeLrsRequest(request, arena.ptr());
791
1121
  }
792
1122
 
793
- grpc_error* XdsLrsResponseDecodeAndParse(const grpc_slice& encoded_response,
794
- std::set<std::string>* cluster_names,
795
- grpc_millis* load_reporting_interval) {
1123
+ grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
1124
+ std::set<std::string>* cluster_names,
1125
+ grpc_millis* load_reporting_interval) {
796
1126
  upb::Arena arena;
797
1127
  // Decode the response.
798
1128
  const envoy_service_load_stats_v2_LoadStatsResponse* decoded_response =