grpc 1.27.0.pre1 → 1.30.1

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 (972) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8023 -11437
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +30 -9
  5. data/include/grpc/grpc_security_constants.h +1 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +24 -21
  7. data/include/grpc/impl/codegen/port_platform.h +13 -2
  8. data/include/grpc/impl/codegen/sync.h +5 -3
  9. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  10. data/include/grpc/module.modulemap +25 -37
  11. data/include/grpc/support/sync_abseil.h +26 -0
  12. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  13. data/src/core/ext/filters/client_channel/client_channel.cc +282 -249
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  15. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  16. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  17. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  18. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  19. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  20. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -11
  21. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  22. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +271 -465
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +8 -7
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  30. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  31. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -14
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -4
  34. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +148 -98
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  40. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  41. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +49 -77
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  43. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  44. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  45. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  46. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +120 -132
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +17 -21
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +167 -121
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -2
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +3 -2
  56. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +42 -45
  57. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +94 -103
  58. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  59. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  60. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +61 -10
  61. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  62. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  63. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  64. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +242 -300
  65. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +21 -18
  66. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +56 -206
  67. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +11 -14
  68. data/src/core/ext/filters/client_channel/server_address.h +3 -2
  69. data/src/core/ext/filters/client_channel/service_config.cc +144 -253
  70. data/src/core/ext/filters/client_channel/service_config.h +32 -109
  71. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  72. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  73. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  74. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  75. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  76. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1381 -301
  77. data/src/core/ext/filters/client_channel/xds/xds_api.h +211 -152
  78. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +214 -359
  79. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +28 -44
  80. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  81. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +16 -11
  82. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1118 -472
  83. data/src/core/ext/filters/client_channel/xds/xds_client.h +116 -45
  84. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -135
  85. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +122 -137
  86. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  87. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  88. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  89. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  90. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  91. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  92. data/src/core/ext/filters/message_size/message_size_filter.cc +38 -44
  93. data/src/core/ext/filters/message_size/message_size_filter.h +5 -5
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -10
  95. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  96. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +26 -27
  97. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  99. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  100. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  101. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  107. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  108. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  109. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  110. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  111. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  112. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -9
  113. data/src/core/ext/transport/inproc/inproc_transport.cc +41 -42
  114. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  115. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  116. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  117. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  118. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +5 -205
  119. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -788
  120. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  121. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  122. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  123. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  124. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  125. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  126. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +5 -362
  127. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  128. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  129. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  130. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +30 -8
  131. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +2 -0
  133. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +2 -0
  134. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +7 -4
  135. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  136. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  138. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +87 -23
  139. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +262 -62
  140. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +20 -15
  141. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  142. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +27 -4
  145. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  146. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +46 -25
  147. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +98 -25
  148. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +2 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +77 -21
  150. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +201 -4
  151. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  153. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -0
  154. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +8 -68
  155. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  156. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  157. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  158. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +2 -71
  159. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  160. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  161. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  162. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +2 -0
  163. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  164. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  165. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  166. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  167. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  168. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  169. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  170. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  171. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  172. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  173. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  174. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  175. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  176. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  177. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  178. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  179. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  180. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  181. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  182. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  183. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  184. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  185. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  186. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  187. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  188. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  189. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  190. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  191. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  192. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  193. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  194. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  195. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  196. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  197. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  198. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  199. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  200. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  201. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  202. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  203. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  204. data/src/core/ext/upb-generated/envoy/type/range.upb.c +12 -0
  205. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  206. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  207. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  208. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  209. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  210. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  211. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  213. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  214. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  215. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  216. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  217. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  218. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  219. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  220. data/src/core/ext/upb-generated/validate/validate.upb.c +44 -39
  221. data/src/core/ext/upb-generated/validate/validate.upb.h +155 -119
  222. data/src/core/lib/channel/channel_args.cc +15 -14
  223. data/src/core/lib/channel/channel_args.h +3 -1
  224. data/src/core/lib/channel/channel_stack.h +20 -13
  225. data/src/core/lib/channel/channel_trace.cc +32 -41
  226. data/src/core/lib/channel/channel_trace.h +3 -3
  227. data/src/core/lib/channel/channelz.cc +163 -254
  228. data/src/core/lib/channel/channelz.h +15 -17
  229. data/src/core/lib/channel/channelz_registry.cc +52 -77
  230. data/src/core/lib/channel/channelz_registry.h +4 -4
  231. data/src/core/lib/channel/connected_channel.cc +7 -5
  232. data/src/core/lib/channel/context.h +1 -1
  233. data/src/core/lib/channel/handshaker.cc +11 -13
  234. data/src/core/lib/channel/handshaker.h +4 -2
  235. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  236. data/src/core/lib/channel/status_util.cc +2 -3
  237. data/src/core/lib/compression/message_compress.cc +5 -1
  238. data/src/core/lib/debug/stats.cc +21 -27
  239. data/src/core/lib/debug/stats.h +3 -1
  240. data/src/core/lib/gpr/spinlock.h +2 -3
  241. data/src/core/lib/gpr/string.cc +2 -26
  242. data/src/core/lib/gpr/string.h +0 -16
  243. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  244. data/src/core/lib/gpr/sync_posix.cc +8 -5
  245. data/src/core/lib/gpr/sync_windows.cc +4 -2
  246. data/src/core/lib/gpr/time.cc +4 -0
  247. data/src/core/lib/gpr/time_posix.cc +1 -1
  248. data/src/core/lib/gprpp/atomic.h +6 -6
  249. data/src/core/lib/gprpp/fork.cc +1 -1
  250. data/src/core/lib/gprpp/host_port.cc +30 -36
  251. data/src/core/lib/gprpp/host_port.h +14 -17
  252. data/src/core/lib/gprpp/map.h +5 -11
  253. data/src/core/lib/gprpp/memory.h +2 -6
  254. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  255. data/src/core/lib/gprpp/sync.h +9 -0
  256. data/src/core/lib/http/format_request.cc +46 -65
  257. data/src/core/lib/http/httpcli.cc +2 -3
  258. data/src/core/lib/http/httpcli.h +2 -3
  259. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  260. data/src/core/lib/http/parser.h +2 -3
  261. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  262. data/src/core/lib/iomgr/buffer_list.h +22 -21
  263. data/src/core/lib/iomgr/call_combiner.h +3 -2
  264. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  265. data/src/core/lib/iomgr/closure.h +2 -3
  266. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  267. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  268. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  269. data/src/core/lib/iomgr/error.cc +6 -9
  270. data/src/core/lib/iomgr/error.h +4 -5
  271. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  272. data/src/core/lib/iomgr/ev_apple.h +43 -0
  273. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  274. data/src/core/lib/iomgr/ev_epollex_linux.cc +14 -7
  275. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  276. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  277. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  278. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  279. data/src/core/lib/iomgr/load_file.cc +1 -0
  280. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  281. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  282. data/src/core/lib/iomgr/port.h +1 -0
  283. data/src/core/lib/iomgr/python_util.h +46 -0
  284. data/src/core/lib/iomgr/resolve_address.h +4 -6
  285. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  286. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  287. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  288. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  289. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  290. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  291. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  292. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  293. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  294. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
  295. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  296. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  297. data/src/core/lib/iomgr/tcp_client_posix.cc +25 -22
  298. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  299. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  300. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  301. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  302. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
  303. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  304. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
  305. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  306. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  307. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  308. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  309. data/src/core/lib/iomgr/timer_generic.h +39 -0
  310. data/src/core/lib/iomgr/timer_heap.h +2 -3
  311. data/src/core/lib/iomgr/udp_server.cc +9 -14
  312. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  313. data/src/core/lib/iomgr/work_serializer.h +65 -0
  314. data/src/core/lib/json/json.h +210 -79
  315. data/src/core/lib/json/json_reader.cc +469 -455
  316. data/src/core/lib/json/json_writer.cc +174 -169
  317. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  318. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  319. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  320. data/src/core/lib/security/credentials/credentials.cc +0 -84
  321. data/src/core/lib/security/credentials/credentials.h +8 -59
  322. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  323. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -12
  324. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  325. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  326. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  327. data/src/core/lib/security/credentials/jwt/json_token.h +4 -6
  328. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  329. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  330. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +151 -168
  331. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
  332. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +91 -60
  333. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
  334. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
  335. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  336. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  337. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +40 -12
  338. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  339. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
  340. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  341. data/src/core/lib/security/security_connector/local/local_security_connector.cc +6 -8
  342. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  343. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -37
  344. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  345. data/src/core/lib/security/security_connector/ssl_utils.cc +62 -13
  346. data/src/core/lib/security/security_connector/ssl_utils.h +12 -11
  347. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -52
  348. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +32 -6
  349. data/src/core/lib/security/transport/auth_filters.h +0 -5
  350. data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
  351. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  352. data/src/core/lib/security/util/json_util.cc +22 -15
  353. data/src/core/lib/security/util/json_util.h +2 -2
  354. data/src/core/lib/slice/slice_intern.cc +2 -3
  355. data/src/core/lib/slice/slice_internal.h +14 -0
  356. data/src/core/lib/slice/slice_utils.h +9 -0
  357. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  358. data/src/core/lib/surface/call.cc +2 -3
  359. data/src/core/lib/surface/call_log_batch.cc +50 -58
  360. data/src/core/lib/surface/channel.cc +53 -31
  361. data/src/core/lib/surface/channel.h +35 -4
  362. data/src/core/lib/surface/channel_ping.cc +2 -3
  363. data/src/core/lib/surface/completion_queue.cc +33 -33
  364. data/src/core/lib/surface/event_string.cc +18 -25
  365. data/src/core/lib/surface/event_string.h +3 -1
  366. data/src/core/lib/surface/init_secure.cc +1 -4
  367. data/src/core/lib/surface/server.cc +570 -369
  368. data/src/core/lib/surface/server.h +32 -0
  369. data/src/core/lib/surface/version.cc +2 -2
  370. data/src/core/lib/transport/byte_stream.h +7 -2
  371. data/src/core/lib/transport/connectivity_state.cc +7 -6
  372. data/src/core/lib/transport/connectivity_state.h +5 -3
  373. data/src/core/lib/transport/metadata.cc +3 -3
  374. data/src/core/lib/transport/metadata_batch.h +2 -3
  375. data/src/core/lib/transport/static_metadata.h +1 -1
  376. data/src/core/lib/transport/status_conversion.cc +6 -14
  377. data/src/core/lib/transport/transport.cc +2 -3
  378. data/src/core/lib/transport/transport.h +3 -2
  379. data/src/core/lib/transport/transport_op_string.cc +61 -102
  380. data/src/core/lib/uri/uri_parser.h +2 -3
  381. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  382. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  383. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +9 -2
  384. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  385. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -3
  386. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  387. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  388. data/src/core/tsi/fake_transport_security.cc +10 -15
  389. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  390. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  391. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  392. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  393. data/src/core/tsi/ssl_transport_security.cc +54 -40
  394. data/src/core/tsi/ssl_transport_security.h +8 -8
  395. data/src/core/tsi/ssl_types.h +0 -2
  396. data/src/core/tsi/transport_security.h +6 -9
  397. data/src/core/tsi/transport_security_grpc.h +2 -3
  398. data/src/core/tsi/transport_security_interface.h +3 -3
  399. data/src/ruby/ext/grpc/rb_call.c +9 -1
  400. data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
  401. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  402. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  403. data/src/ruby/lib/grpc/errors.rb +103 -42
  404. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  405. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  406. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  407. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  408. data/src/ruby/lib/grpc/structs.rb +1 -1
  409. data/src/ruby/lib/grpc/version.rb +1 -1
  410. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  411. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  412. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  413. data/src/ruby/spec/debug_message_spec.rb +134 -0
  414. data/src/ruby/spec/generic/service_spec.rb +2 -0
  415. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
  416. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
  417. data/src/ruby/spec/support/services.rb +10 -4
  418. data/src/ruby/spec/testdata/ca.pem +18 -13
  419. data/src/ruby/spec/testdata/client.key +26 -14
  420. data/src/ruby/spec/testdata/client.pem +18 -12
  421. data/src/ruby/spec/testdata/server1.key +26 -14
  422. data/src/ruby/spec/testdata/server1.pem +20 -14
  423. data/third_party/abseil-cpp/absl/base/attributes.h +13 -1
  424. data/third_party/abseil-cpp/absl/base/config.h +55 -6
  425. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  426. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  427. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +9 -6
  428. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +5 -1
  429. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  430. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  431. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  432. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +15 -13
  433. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +12 -0
  434. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +9 -0
  435. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  436. data/third_party/abseil-cpp/absl/base/options.h +9 -12
  437. data/third_party/abseil-cpp/absl/numeric/int128.cc +2 -2
  438. data/third_party/abseil-cpp/absl/numeric/int128.h +1 -1
  439. data/third_party/abseil-cpp/absl/strings/ascii.cc +3 -3
  440. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -3
  441. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  442. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -2
  443. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +4 -2
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  452. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  453. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  454. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  455. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  456. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  457. data/third_party/abseil-cpp/absl/strings/numbers.cc +54 -5
  458. data/third_party/abseil-cpp/absl/strings/numbers.h +6 -3
  459. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  460. data/third_party/abseil-cpp/absl/strings/string_view.h +31 -24
  461. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  462. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  463. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  464. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  465. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  466. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  467. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  468. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  469. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  470. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  471. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  472. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  473. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  485. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  486. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  487. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  488. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  489. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  490. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  491. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  492. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +329 -297
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +1 -1
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +7 -6
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +13 -4
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +11 -0
  571. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519.c +18 -26
  572. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519_tables.h +13 -21
  573. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/internal.h +14 -22
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +1 -1
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +16 -2
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +10 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  584. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +2 -2
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +39 -38
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  610. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  611. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +4 -1
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +3 -3
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +14 -11
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +8 -8
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +30 -154
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +16 -0
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +289 -117
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +14 -28
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +25 -7
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +432 -160
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +63 -71
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +5 -14
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  661. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  662. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  663. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +125 -148
  665. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +61 -18
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  674. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  675. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  676. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  677. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  678. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  679. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  680. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  681. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  682. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  683. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  684. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  685. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  686. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  687. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  688. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +41 -5
  689. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +32 -17
  690. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +24 -114
  691. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +4 -0
  692. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +1 -0
  693. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  694. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +58 -39
  695. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +72 -49
  696. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  697. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  698. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  699. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  700. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  701. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +44 -35
  702. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  703. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  704. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  705. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  706. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  707. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  708. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  709. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +99 -12
  710. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  711. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +41 -6
  712. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  713. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  714. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  715. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  716. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  717. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  718. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  719. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  720. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  721. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  722. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  723. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  724. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  725. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  726. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  727. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  728. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  729. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  730. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  731. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  732. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  733. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  734. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +6 -10
  735. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  736. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  737. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  738. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +16 -0
  739. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  740. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  741. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  742. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  743. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  744. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  745. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  746. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  747. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  748. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +4 -0
  749. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +4 -0
  750. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  751. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  752. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  753. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  754. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  755. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  756. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  757. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  758. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  759. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  760. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  761. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  762. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  763. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  764. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  765. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  766. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  767. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  768. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  769. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  770. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  771. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  772. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  773. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  774. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  775. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  776. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  777. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  778. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  779. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  780. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +16 -0
  781. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  782. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  783. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  784. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +5 -1
  785. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  786. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  787. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +4 -3
  788. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  789. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  790. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  791. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  792. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  793. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  794. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  795. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  796. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  797. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  798. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  799. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  800. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  801. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  802. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  803. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  804. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  805. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  806. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  807. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  808. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  809. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  810. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  811. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  812. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  813. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  814. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  815. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  816. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  817. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  818. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  819. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  820. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  821. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  822. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  823. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  824. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  825. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  826. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  827. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  828. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  829. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  830. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  831. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  832. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  833. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  834. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  835. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  836. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  837. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  838. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  839. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  840. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  841. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  842. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  843. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  844. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  845. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  846. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  847. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +5 -1
  848. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  849. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  850. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  851. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  852. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  853. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  854. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  855. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  856. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  857. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  858. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  859. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  860. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  861. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +9 -4
  862. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  863. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  864. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +20 -0
  865. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +1 -0
  866. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +16 -0
  867. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  868. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  869. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  870. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  871. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  872. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +6 -0
  873. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  874. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +13 -9
  875. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  876. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  877. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  878. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  879. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  880. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  881. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  882. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  883. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  884. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  885. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +14 -0
  886. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  887. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  888. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  889. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  890. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  891. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  892. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  893. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  894. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  895. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  896. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  897. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  898. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +3 -17
  899. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  900. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  901. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +31 -0
  902. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  903. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +26 -0
  904. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  905. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  906. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  907. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +182 -97
  908. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  909. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  910. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  911. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +1 -3
  912. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  913. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  914. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +5 -3
  915. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +1 -0
  916. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  917. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  918. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -5
  919. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +3 -3
  920. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  921. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  922. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +13 -5
  923. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  924. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +237 -51
  925. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +19 -7
  926. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +51 -32
  927. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +12 -8
  928. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +94 -71
  929. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +10 -10
  930. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +4 -5
  931. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +21 -22
  932. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  933. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +30 -2
  934. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  935. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +4 -1
  936. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  937. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  938. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  939. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +19 -15
  940. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +13 -2
  941. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +66 -6
  942. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +6 -0
  943. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  944. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  945. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  946. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +6 -2
  947. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +53 -219
  948. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +1 -1
  949. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +101 -31
  950. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +28 -76
  951. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +111 -104
  952. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +64 -26
  953. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  954. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +245 -175
  955. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +135 -75
  956. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  957. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +512 -503
  958. metadata +648 -503
  959. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1917
  960. data/src/core/lib/gprpp/inlined_vector.h +0 -246
  961. data/src/core/lib/gprpp/optional.h +0 -74
  962. data/src/core/lib/gprpp/string_view.h +0 -169
  963. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  964. data/src/core/lib/iomgr/logical_thread.h +0 -52
  965. data/src/core/lib/json/json.cc +0 -94
  966. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3297
  967. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
  968. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
  969. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
  970. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
  971. data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
  972. data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2018 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
18
+ #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include "src/core/ext/filters/client_channel/lb_policy.h"
23
+ #include "src/core/lib/debug/trace.h"
24
+ #include "src/core/lib/gprpp/orphanable.h"
25
+
26
+ namespace grpc_core {
27
+
28
+ // A class that makes it easy to gracefully switch child policies.
29
+ //
30
+ // Callers should instantiate this instead of using
31
+ // LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(). Once
32
+ // instantiated, this object will automatically take care of
33
+ // constructing the child policy as needed upon receiving an update.
34
+ class ChildPolicyHandler : public LoadBalancingPolicy {
35
+ public:
36
+ ChildPolicyHandler(Args args, TraceFlag* tracer)
37
+ : LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
38
+
39
+ virtual const char* name() const override { return "child_policy_handler"; }
40
+
41
+ void UpdateLocked(UpdateArgs args) override;
42
+ void ExitIdleLocked() override;
43
+ void ResetBackoffLocked() override;
44
+
45
+ // Returns true if transitioning from the old config to the new config
46
+ // requires instantiating a new policy object.
47
+ virtual bool ConfigChangeRequiresNewPolicyInstance(
48
+ LoadBalancingPolicy::Config* old_config,
49
+ LoadBalancingPolicy::Config* new_config) const;
50
+
51
+ // Instantiates a new policy of the specified name.
52
+ // May be overridden by subclasses to avoid recursion when an LB
53
+ // policy factory returns a ChildPolicyHandler.
54
+ virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
55
+ const char* name, LoadBalancingPolicy::Args args) const;
56
+
57
+ private:
58
+ class Helper;
59
+
60
+ void ShutdownLocked() override;
61
+
62
+ OrphanablePtr<LoadBalancingPolicy> CreateChildPolicy(
63
+ const char* child_policy_name, const grpc_channel_args& args);
64
+
65
+ // Passed in from caller at construction time.
66
+ TraceFlag* tracer_;
67
+
68
+ bool shutting_down_ = false;
69
+
70
+ // The most recent config passed to UpdateLocked().
71
+ // If pending_child_policy_ is non-null, this is the config passed to
72
+ // pending_child_policy_; otherwise, it's the config passed to child_policy_.
73
+ RefCountedPtr<LoadBalancingPolicy::Config> current_config_;
74
+
75
+ // Child LB policy.
76
+ OrphanablePtr<LoadBalancingPolicy> child_policy_;
77
+ OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
78
+ };
79
+
80
+ } // namespace grpc_core
81
+
82
+ #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H \
83
+ */
@@ -64,6 +64,10 @@
64
64
  #include <limits.h>
65
65
  #include <string.h>
66
66
 
67
+ #include "absl/container/inlined_vector.h"
68
+ #include "absl/strings/str_format.h"
69
+ #include "absl/strings/str_join.h"
70
+
67
71
  #include <grpc/byte_buffer_reader.h>
68
72
  #include <grpc/grpc.h>
69
73
  #include <grpc/support/alloc.h>
@@ -71,6 +75,7 @@
71
75
  #include <grpc/support/time.h>
72
76
 
73
77
  #include "src/core/ext/filters/client_channel/client_channel.h"
78
+ #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
74
79
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
75
80
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
76
81
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
@@ -90,7 +95,6 @@
90
95
  #include "src/core/lib/gprpp/memory.h"
91
96
  #include "src/core/lib/gprpp/orphanable.h"
92
97
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
93
- #include "src/core/lib/iomgr/combiner.h"
94
98
  #include "src/core/lib/iomgr/sockaddr.h"
95
99
  #include "src/core/lib/iomgr/sockaddr_utils.h"
96
100
  #include "src/core/lib/iomgr/timer.h"
@@ -122,10 +126,9 @@ namespace {
122
126
 
123
127
  constexpr char kGrpclb[] = "grpclb";
124
128
 
125
- class ParsedGrpcLbConfig : public LoadBalancingPolicy::Config {
129
+ class GrpcLbConfig : public LoadBalancingPolicy::Config {
126
130
  public:
127
- explicit ParsedGrpcLbConfig(
128
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
131
+ explicit GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
129
132
  : child_policy_(std::move(child_policy)) {}
130
133
  const char* name() const override { return kGrpclb; }
131
134
 
@@ -179,11 +182,11 @@ class GrpcLb : public LoadBalancingPolicy {
179
182
  static void OnBalancerMessageReceived(void* arg, grpc_error* error);
180
183
  static void OnBalancerStatusReceived(void* arg, grpc_error* error);
181
184
 
182
- static void MaybeSendClientLoadReportLocked(void* arg, grpc_error* error);
183
- static void ClientLoadReportDoneLocked(void* arg, grpc_error* error);
184
- static void OnInitialRequestSentLocked(void* arg, grpc_error* error);
185
- static void OnBalancerMessageReceivedLocked(void* arg, grpc_error* error);
186
- static void OnBalancerStatusReceivedLocked(void* arg, grpc_error* error);
185
+ void MaybeSendClientLoadReportLocked(grpc_error* error);
186
+ void ClientLoadReportDoneLocked(grpc_error* error);
187
+ void OnInitialRequestSentLocked();
188
+ void OnBalancerMessageReceivedLocked();
189
+ void OnBalancerStatusReceivedLocked(grpc_error* error);
187
190
 
188
191
  // The owning LB policy.
189
192
  RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
@@ -234,7 +237,7 @@ class GrpcLb : public LoadBalancingPolicy {
234
237
  const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
235
238
 
236
239
  // Returns a text representation suitable for logging.
237
- grpc_core::UniquePtr<char> AsText() const;
240
+ std::string AsText() const;
238
241
 
239
242
  // Extracts all non-drop entries into a ServerAddressList.
240
243
  ServerAddressList GetServerAddressList(
@@ -248,16 +251,16 @@ class GrpcLb : public LoadBalancingPolicy {
248
251
  // should not be dropped.
249
252
  //
250
253
  // Note: This is called from the picker, so it will be invoked in
251
- // the channel's data plane combiner, NOT the control plane
252
- // combiner. It should not be accessed by any other part of the LB
254
+ // the channel's data plane mutex, NOT the control plane
255
+ // work_serializer. It should not be accessed by any other part of the LB
253
256
  // policy.
254
257
  const char* ShouldDrop();
255
258
 
256
259
  private:
257
260
  std::vector<GrpcLbServer> serverlist_;
258
261
 
259
- // Guarded by the channel's data plane combiner, NOT the control
260
- // plane combiner. It should not be accessed by anything but the
262
+ // Guarded by the channel's data plane mutex, NOT the control
263
+ // plane work_serializer. It should not be accessed by anything but the
261
264
  // picker via the ShouldDrop() method.
262
265
  size_t drop_index_ = 0;
263
266
  };
@@ -296,16 +299,42 @@ class GrpcLb : public LoadBalancingPolicy {
296
299
  void UpdateState(grpc_connectivity_state state,
297
300
  std::unique_ptr<SubchannelPicker> picker) override;
298
301
  void RequestReresolution() override;
299
- void AddTraceEvent(TraceSeverity severity, StringView message) override;
302
+ void AddTraceEvent(TraceSeverity severity,
303
+ absl::string_view message) override;
304
+
305
+ private:
306
+ RefCountedPtr<GrpcLb> parent_;
307
+ };
308
+
309
+ class StateWatcher : public AsyncConnectivityStateWatcherInterface {
310
+ public:
311
+ explicit StateWatcher(RefCountedPtr<GrpcLb> parent)
312
+ : AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
313
+ parent_(std::move(parent)) {}
300
314
 
301
- void set_child(LoadBalancingPolicy* child) { child_ = child; }
315
+ ~StateWatcher() { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
302
316
 
303
317
  private:
304
- bool CalledByPendingChild() const;
305
- bool CalledByCurrentChild() const;
318
+ void OnConnectivityStateChange(grpc_connectivity_state new_state) override {
319
+ if (parent_->fallback_at_startup_checks_pending_ &&
320
+ new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
321
+ // In TRANSIENT_FAILURE. Cancel the fallback timer and go into
322
+ // fallback mode immediately.
323
+ gpr_log(GPR_INFO,
324
+ "[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
325
+ "entering fallback mode",
326
+ parent_.get());
327
+ parent_->fallback_at_startup_checks_pending_ = false;
328
+ grpc_timer_cancel(&parent_->lb_fallback_timer_);
329
+ parent_->fallback_mode_ = true;
330
+ parent_->CreateOrUpdateChildPolicyLocked();
331
+ // Cancel the watch, since we don't care about the channel state once we
332
+ // go into fallback mode.
333
+ parent_->CancelBalancerChannelConnectivityWatchLocked();
334
+ }
335
+ }
306
336
 
307
337
  RefCountedPtr<GrpcLb> parent_;
308
- LoadBalancingPolicy* child_ = nullptr;
309
338
  };
310
339
 
311
340
  ~GrpcLb();
@@ -315,28 +344,25 @@ class GrpcLb : public LoadBalancingPolicy {
315
344
  // Helper functions used in UpdateLocked().
316
345
  void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
317
346
  const grpc_channel_args& args);
318
- static void OnBalancerChannelConnectivityChanged(void* arg,
319
- grpc_error* error);
320
- static void OnBalancerChannelConnectivityChangedLocked(void* arg,
321
- grpc_error* error);
347
+
322
348
  void CancelBalancerChannelConnectivityWatchLocked();
323
349
 
324
350
  // Methods for dealing with fallback state.
325
351
  void MaybeEnterFallbackModeAfterStartup();
326
352
  static void OnFallbackTimer(void* arg, grpc_error* error);
327
- static void OnFallbackTimerLocked(void* arg, grpc_error* error);
353
+ void OnFallbackTimerLocked(grpc_error* error);
328
354
 
329
355
  // Methods for dealing with the balancer call.
330
356
  void StartBalancerCallLocked();
331
357
  void StartBalancerCallRetryTimerLocked();
332
358
  static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
333
- static void OnBalancerCallRetryTimerLocked(void* arg, grpc_error* error);
359
+ void OnBalancerCallRetryTimerLocked(grpc_error* error);
334
360
 
335
361
  // Methods for dealing with the child policy.
336
362
  grpc_channel_args* CreateChildPolicyArgsLocked(
337
363
  bool is_backend_from_grpclb_load_balancer);
338
364
  OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
339
- const char* name, const grpc_channel_args* args);
365
+ const grpc_channel_args* args);
340
366
  void CreateOrUpdateChildPolicyLocked();
341
367
 
342
368
  // Who the client is trying to communicate with.
@@ -350,6 +376,7 @@ class GrpcLb : public LoadBalancingPolicy {
350
376
 
351
377
  // The channel for communicating with the LB server.
352
378
  grpc_channel* lb_channel_ = nullptr;
379
+ StateWatcher* watcher_ = nullptr;
353
380
  // Response generator to inject address updates into lb_channel_.
354
381
  RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
355
382
 
@@ -382,14 +409,9 @@ class GrpcLb : public LoadBalancingPolicy {
382
409
  bool fallback_at_startup_checks_pending_ = false;
383
410
  grpc_timer lb_fallback_timer_;
384
411
  grpc_closure lb_on_fallback_;
385
- grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
386
- grpc_closure lb_channel_on_connectivity_changed_;
387
412
 
388
413
  // The child policy to use for the backends.
389
414
  OrphanablePtr<LoadBalancingPolicy> child_policy_;
390
- // When switching child policies, the new policy will be stored here
391
- // until it reports READY, at which point it will be moved to child_policy_.
392
- OrphanablePtr<LoadBalancingPolicy> pending_child_policy_;
393
415
  // The child policy config.
394
416
  RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
395
417
  // Child policy in state READY.
@@ -425,28 +447,22 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
425
447
  }
426
448
  }
427
449
 
428
- grpc_core::UniquePtr<char> GrpcLb::Serverlist::AsText() const {
429
- gpr_strvec entries;
430
- gpr_strvec_init(&entries);
450
+ std::string GrpcLb::Serverlist::AsText() const {
451
+ std::vector<std::string> entries;
431
452
  for (size_t i = 0; i < serverlist_.size(); ++i) {
432
453
  const GrpcLbServer& server = serverlist_[i];
433
- char* ipport;
454
+ std::string ipport;
434
455
  if (server.drop) {
435
- ipport = gpr_strdup("(drop)");
456
+ ipport = "(drop)";
436
457
  } else {
437
458
  grpc_resolved_address addr;
438
459
  ParseServer(server, &addr);
439
- grpc_sockaddr_to_string(&ipport, &addr, false);
460
+ ipport = grpc_sockaddr_to_string(&addr, false);
440
461
  }
441
- char* entry;
442
- gpr_asprintf(&entry, " %" PRIuPTR ": %s token=%s\n", i, ipport,
443
- server.load_balance_token);
444
- gpr_free(ipport);
445
- gpr_strvec_add(&entries, entry);
462
+ entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
463
+ ipport, server.load_balance_token));
446
464
  }
447
- grpc_core::UniquePtr<char> result(gpr_strvec_flatten(&entries, nullptr));
448
- gpr_strvec_destroy(&entries);
449
- return result;
465
+ return absl::StrJoin(entries, "");
450
466
  }
451
467
 
452
468
  // vtables for channel args for LB token and client stats.
@@ -538,7 +554,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
538
554
  lb_token[0] = '\0';
539
555
  }
540
556
  // Add address.
541
- InlinedVector<grpc_arg, 2> args_to_add;
557
+ absl::InlinedVector<grpc_arg, 2> args_to_add;
542
558
  args_to_add.emplace_back(grpc_channel_arg_pointer_create(
543
559
  const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
544
560
  &lb_token_arg_vtable));
@@ -609,7 +625,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
609
625
  // how to interpret it.
610
626
  args.initial_metadata->Add(
611
627
  kGrpcLbClientStatsMetadataKey,
612
- StringView(reinterpret_cast<const char*>(client_stats), 0));
628
+ absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
613
629
  // Update calls-started.
614
630
  client_stats->AddCallStarted();
615
631
  }
@@ -631,46 +647,15 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
631
647
  // GrpcLb::Helper
632
648
  //
633
649
 
634
- bool GrpcLb::Helper::CalledByPendingChild() const {
635
- GPR_ASSERT(child_ != nullptr);
636
- return child_ == parent_->pending_child_policy_.get();
637
- }
638
-
639
- bool GrpcLb::Helper::CalledByCurrentChild() const {
640
- GPR_ASSERT(child_ != nullptr);
641
- return child_ == parent_->child_policy_.get();
642
- }
643
-
644
650
  RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
645
651
  const grpc_channel_args& args) {
646
- if (parent_->shutting_down_ ||
647
- (!CalledByPendingChild() && !CalledByCurrentChild())) {
648
- return nullptr;
649
- }
652
+ if (parent_->shutting_down_) return nullptr;
650
653
  return parent_->channel_control_helper()->CreateSubchannel(args);
651
654
  }
652
655
 
653
656
  void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
654
657
  std::unique_ptr<SubchannelPicker> picker) {
655
658
  if (parent_->shutting_down_) return;
656
- // If this request is from the pending child policy, ignore it until
657
- // it reports READY, at which point we swap it into place.
658
- if (CalledByPendingChild()) {
659
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
660
- gpr_log(GPR_INFO,
661
- "[grpclb %p helper %p] pending child policy %p reports state=%s",
662
- parent_.get(), this, parent_->pending_child_policy_.get(),
663
- ConnectivityStateName(state));
664
- }
665
- if (state != GRPC_CHANNEL_READY) return;
666
- grpc_pollset_set_del_pollset_set(
667
- parent_->child_policy_->interested_parties(),
668
- parent_->interested_parties());
669
- parent_->child_policy_ = std::move(parent_->pending_child_policy_);
670
- } else if (!CalledByCurrentChild()) {
671
- // This request is from an outdated child, so ignore it.
672
- return;
673
- }
674
659
  // Record whether child policy reports READY.
675
660
  parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
676
661
  // Enter fallback mode if needed.
@@ -716,22 +701,13 @@ void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
716
701
  client_stats = parent_->lb_calld_->client_stats()->Ref();
717
702
  }
718
703
  parent_->channel_control_helper()->UpdateState(
719
- state, MakeUnique<Picker>(parent_.get(), parent_->serverlist_,
704
+ state,
705
+ absl::make_unique<Picker>(parent_.get(), parent_->serverlist_,
720
706
  std::move(picker), std::move(client_stats)));
721
707
  }
722
708
 
723
709
  void GrpcLb::Helper::RequestReresolution() {
724
710
  if (parent_->shutting_down_) return;
725
- const LoadBalancingPolicy* latest_child_policy =
726
- parent_->pending_child_policy_ != nullptr
727
- ? parent_->pending_child_policy_.get()
728
- : parent_->child_policy_.get();
729
- if (child_ != latest_child_policy) return;
730
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
731
- gpr_log(GPR_INFO,
732
- "[grpclb %p] Re-resolution requested from %schild policy (%p).",
733
- parent_.get(), CalledByPendingChild() ? "pending " : "", child_);
734
- }
735
711
  // If we are talking to a balancer, we expect to get updated addresses
736
712
  // from the balancer, so we can ignore the re-resolution request from
737
713
  // the child policy. Otherwise, pass the re-resolution request up to the
@@ -742,11 +718,9 @@ void GrpcLb::Helper::RequestReresolution() {
742
718
  }
743
719
  }
744
720
 
745
- void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity, StringView message) {
746
- if (parent_->shutting_down_ ||
747
- (!CalledByPendingChild() && !CalledByCurrentChild())) {
748
- return;
749
- }
721
+ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
722
+ absl::string_view message) {
723
+ if (parent_->shutting_down_) return;
750
724
  parent_->channel_control_helper()->AddTraceEvent(severity, message);
751
725
  }
752
726
 
@@ -765,6 +739,15 @@ GrpcLb::BalancerCallState::BalancerCallState(
765
739
  // the polling entities from client_channel.
766
740
  GPR_ASSERT(grpclb_policy()->server_name_ != nullptr);
767
741
  GPR_ASSERT(grpclb_policy()->server_name_[0] != '\0');
742
+ // Closure Initialization
743
+ GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
744
+ grpc_schedule_on_exec_ctx);
745
+ GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
746
+ OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
747
+ GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
748
+ this, grpc_schedule_on_exec_ctx);
749
+ GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
750
+ this, grpc_schedule_on_exec_ctx);
768
751
  const grpc_millis deadline =
769
752
  grpclb_policy()->lb_call_timeout_ms_ == 0
770
753
  ? GRPC_MILLIS_INF_FUTURE
@@ -841,8 +824,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
841
824
  // with the callback.
842
825
  auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
843
826
  self.release();
844
- GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
845
- grpc_schedule_on_exec_ctx);
846
827
  call_error = grpc_call_start_batch_and_execute(
847
828
  lb_call_, ops, (size_t)(op - ops), &lb_on_initial_request_sent_);
848
829
  GPR_ASSERT(GRPC_CALL_OK == call_error);
@@ -865,8 +846,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
865
846
  // with the callback.
866
847
  self = Ref(DEBUG_LOCATION, "on_message_received");
867
848
  self.release();
868
- GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
869
- OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
870
849
  call_error = grpc_call_start_batch_and_execute(
871
850
  lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_message_received_);
872
851
  GPR_ASSERT(GRPC_CALL_OK == call_error);
@@ -883,8 +862,6 @@ void GrpcLb::BalancerCallState::StartQuery() {
883
862
  // This callback signals the end of the LB call, so it relies on the initial
884
863
  // ref instead of a new ref. When it's invoked, it's the initial ref that is
885
864
  // unreffed.
886
- GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
887
- this, grpc_schedule_on_exec_ctx);
888
865
  call_error = grpc_call_start_batch_and_execute(
889
866
  lb_call_, ops, (size_t)(op - ops), &lb_on_balancer_status_received_);
890
867
  GPR_ASSERT(GRPC_CALL_OK == call_error);
@@ -903,28 +880,27 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
903
880
  void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
904
881
  grpc_error* error) {
905
882
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
906
- lb_calld->grpclb_policy()->combiner()->Run(
907
- GRPC_CLOSURE_INIT(&lb_calld->client_load_report_closure_,
908
- MaybeSendClientLoadReportLocked, lb_calld, nullptr),
909
- GRPC_ERROR_REF(error));
883
+ GRPC_ERROR_REF(error); // ref owned by lambda
884
+ lb_calld->grpclb_policy()->work_serializer()->Run(
885
+ [lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
886
+ DEBUG_LOCATION);
910
887
  }
911
888
 
912
889
  void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
913
- void* arg, grpc_error* error) {
914
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
915
- GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
916
- lb_calld->client_load_report_timer_callback_pending_ = false;
917
- if (error != GRPC_ERROR_NONE || lb_calld != grpclb_policy->lb_calld_.get()) {
918
- lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
890
+ grpc_error* error) {
891
+ client_load_report_timer_callback_pending_ = false;
892
+ if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
893
+ Unref(DEBUG_LOCATION, "client_load_report");
894
+ GRPC_ERROR_UNREF(error);
919
895
  return;
920
896
  }
921
897
  // If we've already sent the initial request, then we can go ahead and send
922
898
  // the load report. Otherwise, we need to wait until the initial request has
923
899
  // been sent to send this (see OnInitialRequestSentLocked()).
924
- if (lb_calld->send_message_payload_ == nullptr) {
925
- lb_calld->SendClientLoadReportLocked();
900
+ if (send_message_payload_ == nullptr) {
901
+ SendClientLoadReportLocked();
926
902
  } else {
927
- lb_calld->client_load_report_is_due_ = true;
903
+ client_load_report_is_due_ = true;
928
904
  }
929
905
  }
930
906
 
@@ -983,140 +959,125 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
983
959
  void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
984
960
  grpc_error* error) {
985
961
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
986
- lb_calld->grpclb_policy()->combiner()->Run(
987
- GRPC_CLOSURE_INIT(&lb_calld->client_load_report_closure_,
988
- ClientLoadReportDoneLocked, lb_calld, nullptr),
989
- GRPC_ERROR_REF(error));
962
+ GRPC_ERROR_REF(error); // ref owned by lambda
963
+ lb_calld->grpclb_policy()->work_serializer()->Run(
964
+ [lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
965
+ DEBUG_LOCATION);
990
966
  }
991
967
 
992
- void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(void* arg,
993
- grpc_error* error) {
994
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
995
- GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
996
- grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
997
- lb_calld->send_message_payload_ = nullptr;
998
- if (error != GRPC_ERROR_NONE || lb_calld != grpclb_policy->lb_calld_.get()) {
999
- lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
968
+ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) {
969
+ grpc_byte_buffer_destroy(send_message_payload_);
970
+ send_message_payload_ = nullptr;
971
+ if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
972
+ Unref(DEBUG_LOCATION, "client_load_report");
973
+ GRPC_ERROR_UNREF(error);
1000
974
  return;
1001
975
  }
1002
- lb_calld->ScheduleNextClientLoadReportLocked();
976
+ ScheduleNextClientLoadReportLocked();
1003
977
  }
1004
978
 
1005
979
  void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
1006
- grpc_error* error) {
980
+ grpc_error* /*error*/) {
1007
981
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1008
- lb_calld->grpclb_policy()->combiner()->Run(
1009
- GRPC_CLOSURE_INIT(&lb_calld->lb_on_initial_request_sent_,
1010
- OnInitialRequestSentLocked, lb_calld, nullptr),
1011
- GRPC_ERROR_REF(error));
982
+ lb_calld->grpclb_policy()->work_serializer()->Run(
983
+ [lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
1012
984
  }
1013
985
 
1014
- void GrpcLb::BalancerCallState::OnInitialRequestSentLocked(
1015
- void* arg, grpc_error* /*error*/) {
1016
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1017
- grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
1018
- lb_calld->send_message_payload_ = nullptr;
986
+ void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
987
+ grpc_byte_buffer_destroy(send_message_payload_);
988
+ send_message_payload_ = nullptr;
1019
989
  // If we attempted to send a client load report before the initial request was
1020
990
  // sent (and this lb_calld is still in use), send the load report now.
1021
- if (lb_calld->client_load_report_is_due_ &&
1022
- lb_calld == lb_calld->grpclb_policy()->lb_calld_.get()) {
1023
- lb_calld->SendClientLoadReportLocked();
1024
- lb_calld->client_load_report_is_due_ = false;
991
+ if (client_load_report_is_due_ && this == grpclb_policy()->lb_calld_.get()) {
992
+ SendClientLoadReportLocked();
993
+ client_load_report_is_due_ = false;
1025
994
  }
1026
- lb_calld->Unref(DEBUG_LOCATION, "on_initial_request_sent");
995
+ Unref(DEBUG_LOCATION, "on_initial_request_sent");
1027
996
  }
1028
997
 
1029
- void GrpcLb::BalancerCallState::OnBalancerMessageReceived(void* arg,
1030
- grpc_error* error) {
998
+ void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
999
+ void* arg, grpc_error* /*error*/) {
1031
1000
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1032
- lb_calld->grpclb_policy()->combiner()->Run(
1033
- GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
1034
- OnBalancerMessageReceivedLocked, lb_calld, nullptr),
1035
- GRPC_ERROR_REF(error));
1001
+ lb_calld->grpclb_policy()->work_serializer()->Run(
1002
+ [lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
1003
+ DEBUG_LOCATION);
1036
1004
  }
1037
1005
 
1038
- void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
1039
- void* arg, grpc_error* /*error*/) {
1040
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1041
- GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
1006
+ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1042
1007
  // Null payload means the LB call was cancelled.
1043
- if (lb_calld != grpclb_policy->lb_calld_.get() ||
1044
- lb_calld->recv_message_payload_ == nullptr) {
1045
- lb_calld->Unref(DEBUG_LOCATION, "on_message_received");
1008
+ if (this != grpclb_policy()->lb_calld_.get() ||
1009
+ recv_message_payload_ == nullptr) {
1010
+ Unref(DEBUG_LOCATION, "on_message_received");
1046
1011
  return;
1047
1012
  }
1048
1013
  grpc_byte_buffer_reader bbr;
1049
- grpc_byte_buffer_reader_init(&bbr, lb_calld->recv_message_payload_);
1014
+ grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
1050
1015
  grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
1051
1016
  grpc_byte_buffer_reader_destroy(&bbr);
1052
- grpc_byte_buffer_destroy(lb_calld->recv_message_payload_);
1053
- lb_calld->recv_message_payload_ = nullptr;
1017
+ grpc_byte_buffer_destroy(recv_message_payload_);
1018
+ recv_message_payload_ = nullptr;
1054
1019
  GrpcLbResponse response;
1055
1020
  upb::Arena arena;
1056
1021
  if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
1057
- (response.type == response.INITIAL && lb_calld->seen_initial_response_)) {
1022
+ (response.type == response.INITIAL && seen_initial_response_)) {
1058
1023
  char* response_slice_str =
1059
1024
  grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
1060
1025
  gpr_log(GPR_ERROR,
1061
1026
  "[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
1062
1027
  "Ignoring.",
1063
- grpclb_policy, lb_calld, response_slice_str);
1028
+ grpclb_policy(), this, response_slice_str);
1064
1029
  gpr_free(response_slice_str);
1065
1030
  } else {
1066
1031
  switch (response.type) {
1067
1032
  case response.INITIAL: {
1068
1033
  if (response.client_stats_report_interval != 0) {
1069
- lb_calld->client_stats_report_interval_ =
1034
+ client_stats_report_interval_ =
1070
1035
  GPR_MAX(GPR_MS_PER_SEC, response.client_stats_report_interval);
1071
1036
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1072
1037
  gpr_log(GPR_INFO,
1073
1038
  "[grpclb %p] lb_calld=%p: Received initial LB response "
1074
1039
  "message; client load reporting interval = %" PRId64
1075
1040
  " milliseconds",
1076
- grpclb_policy, lb_calld,
1077
- lb_calld->client_stats_report_interval_);
1041
+ grpclb_policy(), this, client_stats_report_interval_);
1078
1042
  }
1079
1043
  } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1080
1044
  gpr_log(GPR_INFO,
1081
1045
  "[grpclb %p] lb_calld=%p: Received initial LB response "
1082
1046
  "message; client load reporting NOT enabled",
1083
- grpclb_policy, lb_calld);
1047
+ grpclb_policy(), this);
1084
1048
  }
1085
- lb_calld->seen_initial_response_ = true;
1049
+ seen_initial_response_ = true;
1086
1050
  break;
1087
1051
  }
1088
1052
  case response.SERVERLIST: {
1089
- GPR_ASSERT(lb_calld->lb_call_ != nullptr);
1053
+ GPR_ASSERT(lb_call_ != nullptr);
1090
1054
  auto serverlist_wrapper =
1091
1055
  MakeRefCounted<Serverlist>(std::move(response.serverlist));
1092
1056
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1093
- grpc_core::UniquePtr<char> serverlist_text =
1094
- serverlist_wrapper->AsText();
1095
1057
  gpr_log(GPR_INFO,
1096
1058
  "[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
1097
1059
  " servers received:\n%s",
1098
- grpclb_policy, lb_calld,
1060
+ grpclb_policy(), this,
1099
1061
  serverlist_wrapper->serverlist().size(),
1100
- serverlist_text.get());
1062
+ serverlist_wrapper->AsText().c_str());
1101
1063
  }
1102
- lb_calld->seen_serverlist_ = true;
1064
+ seen_serverlist_ = true;
1103
1065
  // Start sending client load report only after we start using the
1104
1066
  // serverlist returned from the current LB call.
1105
- if (lb_calld->client_stats_report_interval_ > 0 &&
1106
- lb_calld->client_stats_ == nullptr) {
1107
- lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
1067
+ if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
1068
+ client_stats_ = MakeRefCounted<GrpcLbClientStats>();
1108
1069
  // Ref held by callback.
1109
- lb_calld->Ref(DEBUG_LOCATION, "client_load_report").release();
1110
- lb_calld->ScheduleNextClientLoadReportLocked();
1070
+ Ref(DEBUG_LOCATION, "client_load_report").release();
1071
+ ScheduleNextClientLoadReportLocked();
1111
1072
  }
1112
1073
  // Check if the serverlist differs from the previous one.
1113
- if (grpclb_policy->serverlist_ != nullptr &&
1114
- *grpclb_policy->serverlist_ == *serverlist_wrapper) {
1074
+ if (grpclb_policy()->serverlist_ != nullptr &&
1075
+ *grpclb_policy()->serverlist_ == *serverlist_wrapper) {
1115
1076
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1116
1077
  gpr_log(GPR_INFO,
1117
1078
  "[grpclb %p] lb_calld=%p: Incoming server list identical "
1118
1079
  "to current, ignoring.",
1119
- grpclb_policy, lb_calld);
1080
+ grpclb_policy(), this);
1120
1081
  }
1121
1082
  } else { // New serverlist.
1122
1083
  // Dispose of the fallback.
@@ -1138,130 +1099,124 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
1138
1099
  // the grpclb implementation at this point, since we're deprecating
1139
1100
  // it in favor of the xds policy. We will implement this the
1140
1101
  // right way in the xds policy instead.
1141
- if (grpclb_policy->fallback_mode_) {
1102
+ if (grpclb_policy()->fallback_mode_) {
1142
1103
  gpr_log(GPR_INFO,
1143
1104
  "[grpclb %p] Received response from balancer; exiting "
1144
1105
  "fallback mode",
1145
- grpclb_policy);
1146
- grpclb_policy->fallback_mode_ = false;
1106
+ grpclb_policy());
1107
+ grpclb_policy()->fallback_mode_ = false;
1147
1108
  }
1148
- if (grpclb_policy->fallback_at_startup_checks_pending_) {
1149
- grpclb_policy->fallback_at_startup_checks_pending_ = false;
1150
- grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
1151
- grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
1109
+ if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1110
+ grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1111
+ grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1112
+ grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1152
1113
  }
1153
1114
  // Update the serverlist in the GrpcLb instance. This serverlist
1154
1115
  // instance will be destroyed either upon the next update or when the
1155
1116
  // GrpcLb instance is destroyed.
1156
- grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
1157
- grpclb_policy->CreateOrUpdateChildPolicyLocked();
1117
+ grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
1118
+ grpclb_policy()->CreateOrUpdateChildPolicyLocked();
1158
1119
  }
1159
1120
  break;
1160
1121
  }
1161
1122
  case response.FALLBACK: {
1162
- if (!grpclb_policy->fallback_mode_) {
1123
+ if (!grpclb_policy()->fallback_mode_) {
1163
1124
  gpr_log(GPR_INFO,
1164
1125
  "[grpclb %p] Entering fallback mode as requested by balancer",
1165
- grpclb_policy);
1166
- if (grpclb_policy->fallback_at_startup_checks_pending_) {
1167
- grpclb_policy->fallback_at_startup_checks_pending_ = false;
1168
- grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
1169
- grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
1126
+ grpclb_policy());
1127
+ if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1128
+ grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1129
+ grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1130
+ grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1170
1131
  }
1171
- grpclb_policy->fallback_mode_ = true;
1172
- grpclb_policy->CreateOrUpdateChildPolicyLocked();
1132
+ grpclb_policy()->fallback_mode_ = true;
1133
+ grpclb_policy()->CreateOrUpdateChildPolicyLocked();
1173
1134
  // Reset serverlist, so that if the balancer exits fallback
1174
1135
  // mode by sending the same serverlist we were previously
1175
1136
  // using, we don't incorrectly ignore it as a duplicate.
1176
- grpclb_policy->serverlist_.reset();
1137
+ grpclb_policy()->serverlist_.reset();
1177
1138
  }
1178
1139
  break;
1179
1140
  }
1180
1141
  }
1181
1142
  }
1182
1143
  grpc_slice_unref_internal(response_slice);
1183
- if (!grpclb_policy->shutting_down_) {
1144
+ if (!grpclb_policy()->shutting_down_) {
1184
1145
  // Keep listening for serverlist updates.
1185
1146
  grpc_op op;
1186
1147
  memset(&op, 0, sizeof(op));
1187
1148
  op.op = GRPC_OP_RECV_MESSAGE;
1188
- op.data.recv_message.recv_message = &lb_calld->recv_message_payload_;
1149
+ op.data.recv_message.recv_message = &recv_message_payload_;
1189
1150
  op.flags = 0;
1190
1151
  op.reserved = nullptr;
1191
1152
  // Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
1192
- GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
1193
- GrpcLb::BalancerCallState::OnBalancerMessageReceived,
1194
- lb_calld, grpc_schedule_on_exec_ctx);
1195
1153
  const grpc_call_error call_error = grpc_call_start_batch_and_execute(
1196
- lb_calld->lb_call_, &op, 1,
1197
- &lb_calld->lb_on_balancer_message_received_);
1154
+ lb_call_, &op, 1, &lb_on_balancer_message_received_);
1198
1155
  GPR_ASSERT(GRPC_CALL_OK == call_error);
1199
1156
  } else {
1200
- lb_calld->Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
1157
+ Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
1201
1158
  }
1202
1159
  }
1203
1160
 
1204
1161
  void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
1205
1162
  grpc_error* error) {
1206
1163
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1207
- lb_calld->grpclb_policy()->combiner()->Run(
1208
- GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_status_received_,
1209
- OnBalancerStatusReceivedLocked, lb_calld, nullptr),
1210
- GRPC_ERROR_REF(error));
1164
+ GRPC_ERROR_REF(error); // owned by lambda
1165
+ lb_calld->grpclb_policy()->work_serializer()->Run(
1166
+ [lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
1167
+ DEBUG_LOCATION);
1211
1168
  }
1212
1169
 
1213
1170
  void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1214
- void* arg, grpc_error* error) {
1215
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1216
- GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
1217
- GPR_ASSERT(lb_calld->lb_call_ != nullptr);
1171
+ grpc_error* error) {
1172
+ GPR_ASSERT(lb_call_ != nullptr);
1218
1173
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1219
- char* status_details =
1220
- grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
1174
+ char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
1221
1175
  gpr_log(GPR_INFO,
1222
1176
  "[grpclb %p] lb_calld=%p: Status from LB server received. "
1223
1177
  "Status = %d, details = '%s', (lb_call: %p), error '%s'",
1224
- grpclb_policy, lb_calld, lb_calld->lb_call_status_, status_details,
1225
- lb_calld->lb_call_, grpc_error_string(error));
1178
+ grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
1179
+ grpc_error_string(error));
1226
1180
  gpr_free(status_details);
1227
1181
  }
1182
+ GRPC_ERROR_UNREF(error);
1228
1183
  // If this lb_calld is still in use, this call ended because of a failure so
1229
1184
  // we want to retry connecting. Otherwise, we have deliberately ended this
1230
1185
  // call and no further action is required.
1231
- if (lb_calld == grpclb_policy->lb_calld_.get()) {
1186
+ if (this == grpclb_policy()->lb_calld_.get()) {
1232
1187
  // If the fallback-at-startup checks are pending, go into fallback mode
1233
1188
  // immediately. This short-circuits the timeout for the fallback-at-startup
1234
1189
  // case.
1235
- if (grpclb_policy->fallback_at_startup_checks_pending_) {
1236
- GPR_ASSERT(!lb_calld->seen_serverlist_);
1190
+ if (grpclb_policy()->fallback_at_startup_checks_pending_) {
1191
+ GPR_ASSERT(!seen_serverlist_);
1237
1192
  gpr_log(GPR_INFO,
1238
1193
  "[grpclb %p] Balancer call finished without receiving "
1239
1194
  "serverlist; entering fallback mode",
1240
- grpclb_policy);
1241
- grpclb_policy->fallback_at_startup_checks_pending_ = false;
1242
- grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
1243
- grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
1244
- grpclb_policy->fallback_mode_ = true;
1245
- grpclb_policy->CreateOrUpdateChildPolicyLocked();
1195
+ grpclb_policy());
1196
+ grpclb_policy()->fallback_at_startup_checks_pending_ = false;
1197
+ grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
1198
+ grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
1199
+ grpclb_policy()->fallback_mode_ = true;
1200
+ grpclb_policy()->CreateOrUpdateChildPolicyLocked();
1246
1201
  } else {
1247
1202
  // This handles the fallback-after-startup case.
1248
- grpclb_policy->MaybeEnterFallbackModeAfterStartup();
1203
+ grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
1249
1204
  }
1250
- grpclb_policy->lb_calld_.reset();
1251
- GPR_ASSERT(!grpclb_policy->shutting_down_);
1252
- grpclb_policy->channel_control_helper()->RequestReresolution();
1253
- if (lb_calld->seen_initial_response_) {
1205
+ grpclb_policy()->lb_calld_.reset();
1206
+ GPR_ASSERT(!grpclb_policy()->shutting_down_);
1207
+ grpclb_policy()->channel_control_helper()->RequestReresolution();
1208
+ if (seen_initial_response_) {
1254
1209
  // If we lose connection to the LB server, reset the backoff and restart
1255
1210
  // the LB call immediately.
1256
- grpclb_policy->lb_call_backoff_.Reset();
1257
- grpclb_policy->StartBalancerCallLocked();
1211
+ grpclb_policy()->lb_call_backoff_.Reset();
1212
+ grpclb_policy()->StartBalancerCallLocked();
1258
1213
  } else {
1259
1214
  // If this LB call fails establishing any connection to the LB server,
1260
1215
  // retry later.
1261
- grpclb_policy->StartBalancerCallRetryTimerLocked();
1216
+ grpclb_policy()->StartBalancerCallRetryTimerLocked();
1262
1217
  }
1263
1218
  }
1264
- lb_calld->Unref(DEBUG_LOCATION, "lb_call_ended");
1219
+ Unref(DEBUG_LOCATION, "lb_call_ended");
1265
1220
  }
1266
1221
 
1267
1222
  //
@@ -1316,7 +1271,7 @@ grpc_channel_args* BuildBalancerChannelArgs(
1316
1271
  GRPC_ARG_CHANNELZ_CHANNEL_NODE,
1317
1272
  };
1318
1273
  // Channel args to add.
1319
- InlinedVector<grpc_arg, 3> args_to_add;
1274
+ absl::InlinedVector<grpc_arg, 3> args_to_add;
1320
1275
  // The fake resolver response generator, which we use to inject
1321
1276
  // address updates into the LB channel.
1322
1277
  args_to_add.emplace_back(
@@ -1358,6 +1313,11 @@ GrpcLb::GrpcLb(Args args)
1358
1313
  .set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
1359
1314
  .set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
1360
1315
  1000)) {
1316
+ // Closure Initialization
1317
+ GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
1318
+ grpc_schedule_on_exec_ctx);
1319
+ GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
1320
+ grpc_schedule_on_exec_ctx);
1361
1321
  // Record server name.
1362
1322
  const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
1363
1323
  const char* server_uri = grpc_channel_arg_get_string(arg);
@@ -1392,19 +1352,15 @@ void GrpcLb::ShutdownLocked() {
1392
1352
  grpc_timer_cancel(&lb_call_retry_timer_);
1393
1353
  }
1394
1354
  if (fallback_at_startup_checks_pending_) {
1355
+ fallback_at_startup_checks_pending_ = false;
1395
1356
  grpc_timer_cancel(&lb_fallback_timer_);
1396
1357
  CancelBalancerChannelConnectivityWatchLocked();
1397
1358
  }
1398
1359
  if (child_policy_ != nullptr) {
1399
1360
  grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
1400
1361
  interested_parties());
1362
+ child_policy_.reset();
1401
1363
  }
1402
- if (pending_child_policy_ != nullptr) {
1403
- grpc_pollset_set_del_pollset_set(
1404
- pending_child_policy_->interested_parties(), interested_parties());
1405
- }
1406
- child_policy_.reset();
1407
- pending_child_policy_.reset();
1408
1364
  // We destroy the LB channel here instead of in our destructor because
1409
1365
  // destroying the channel triggers a last callback to
1410
1366
  // OnBalancerChannelConnectivityChangedLocked(), and we need to be
@@ -1426,15 +1382,11 @@ void GrpcLb::ResetBackoffLocked() {
1426
1382
  if (child_policy_ != nullptr) {
1427
1383
  child_policy_->ResetBackoffLocked();
1428
1384
  }
1429
- if (pending_child_policy_ != nullptr) {
1430
- pending_child_policy_->ResetBackoffLocked();
1431
- }
1432
1385
  }
1433
1386
 
1434
1387
  void GrpcLb::UpdateLocked(UpdateArgs args) {
1435
1388
  const bool is_initial_update = lb_channel_ == nullptr;
1436
- auto* grpclb_config =
1437
- static_cast<const ParsedGrpcLbConfig*>(args.config.get());
1389
+ auto* grpclb_config = static_cast<const GrpcLbConfig*>(args.config.get());
1438
1390
  if (grpclb_config != nullptr) {
1439
1391
  child_policy_config_ = grpclb_config->child_policy();
1440
1392
  } else {
@@ -1450,8 +1402,6 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1450
1402
  // Start timer.
1451
1403
  grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
1452
1404
  Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
1453
- GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
1454
- grpc_schedule_on_exec_ctx);
1455
1405
  grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
1456
1406
  // Start watching the channel's connectivity state. If the channel
1457
1407
  // goes into state TRANSIENT_FAILURE before the timer fires, we go into
@@ -1460,15 +1410,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1460
1410
  grpc_channel_get_channel_stack(lb_channel_));
1461
1411
  GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
1462
1412
  // Ref held by callback.
1463
- Ref(DEBUG_LOCATION, "watch_lb_channel_connectivity").release();
1464
- GRPC_CLOSURE_INIT(&lb_channel_on_connectivity_changed_,
1465
- &GrpcLb::OnBalancerChannelConnectivityChanged, this,
1466
- grpc_schedule_on_exec_ctx);
1467
- grpc_client_channel_watch_connectivity_state(
1468
- client_channel_elem,
1469
- grpc_polling_entity_create_from_pollset_set(interested_parties()),
1470
- &lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
1471
- nullptr);
1413
+ watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
1414
+ grpc_client_channel_start_connectivity_watch(
1415
+ client_channel_elem, GRPC_CHANNEL_IDLE,
1416
+ OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
1472
1417
  // Start balancer call.
1473
1418
  StartBalancerCallLocked();
1474
1419
  }
@@ -1525,60 +1470,11 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
1525
1470
  response_generator_->SetResponse(std::move(result));
1526
1471
  }
1527
1472
 
1528
- void GrpcLb::OnBalancerChannelConnectivityChanged(void* arg,
1529
- grpc_error* error) {
1530
- GrpcLb* self = static_cast<GrpcLb*>(arg);
1531
- self->combiner()->Run(
1532
- GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
1533
- &GrpcLb::OnBalancerChannelConnectivityChangedLocked,
1534
- self, nullptr),
1535
- GRPC_ERROR_REF(error));
1536
- }
1537
-
1538
- void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
1539
- grpc_error* /*error*/) {
1540
- GrpcLb* self = static_cast<GrpcLb*>(arg);
1541
- if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
1542
- if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
1543
- // Not in TRANSIENT_FAILURE. Renew connectivity watch.
1544
- grpc_channel_element* client_channel_elem =
1545
- grpc_channel_stack_last_element(
1546
- grpc_channel_get_channel_stack(self->lb_channel_));
1547
- GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
1548
- GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
1549
- &GrpcLb::OnBalancerChannelConnectivityChanged, self,
1550
- grpc_schedule_on_exec_ctx);
1551
- grpc_client_channel_watch_connectivity_state(
1552
- client_channel_elem,
1553
- grpc_polling_entity_create_from_pollset_set(
1554
- self->interested_parties()),
1555
- &self->lb_channel_connectivity_,
1556
- &self->lb_channel_on_connectivity_changed_, nullptr);
1557
- return; // Early out so we don't drop the ref below.
1558
- }
1559
- // In TRANSIENT_FAILURE. Cancel the fallback timer and go into
1560
- // fallback mode immediately.
1561
- gpr_log(GPR_INFO,
1562
- "[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
1563
- "entering fallback mode",
1564
- self);
1565
- self->fallback_at_startup_checks_pending_ = false;
1566
- grpc_timer_cancel(&self->lb_fallback_timer_);
1567
- self->fallback_mode_ = true;
1568
- self->CreateOrUpdateChildPolicyLocked();
1569
- }
1570
- // Done watching connectivity state, so drop ref.
1571
- self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
1572
- }
1573
-
1574
1473
  void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
1575
1474
  grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
1576
1475
  grpc_channel_get_channel_stack(lb_channel_));
1577
1476
  GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
1578
- grpc_client_channel_watch_connectivity_state(
1579
- client_channel_elem,
1580
- grpc_polling_entity_create_from_pollset_set(interested_parties()),
1581
- nullptr, &lb_channel_on_connectivity_changed_, nullptr);
1477
+ grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
1582
1478
  }
1583
1479
 
1584
1480
  //
@@ -1617,33 +1513,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
1617
1513
  // with the callback.
1618
1514
  auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1619
1515
  self.release();
1620
- GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
1621
- grpc_schedule_on_exec_ctx);
1622
1516
  retry_timer_callback_pending_ = true;
1623
1517
  grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
1624
1518
  }
1625
1519
 
1626
1520
  void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
1627
1521
  GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1628
- grpclb_policy->combiner()->Run(
1629
- GRPC_CLOSURE_INIT(&grpclb_policy->lb_on_call_retry_,
1630
- &GrpcLb::OnBalancerCallRetryTimerLocked, grpclb_policy,
1631
- nullptr),
1632
- GRPC_ERROR_REF(error));
1522
+ GRPC_ERROR_REF(error); // ref owned by lambda
1523
+ grpclb_policy->work_serializer()->Run(
1524
+ [grpclb_policy, error]() {
1525
+ grpclb_policy->OnBalancerCallRetryTimerLocked(error);
1526
+ },
1527
+ DEBUG_LOCATION);
1633
1528
  }
1634
1529
 
1635
- void GrpcLb::OnBalancerCallRetryTimerLocked(void* arg, grpc_error* error) {
1636
- GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1637
- grpclb_policy->retry_timer_callback_pending_ = false;
1638
- if (!grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE &&
1639
- grpclb_policy->lb_calld_ == nullptr) {
1530
+ void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error* error) {
1531
+ retry_timer_callback_pending_ = false;
1532
+ if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
1640
1533
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1641
- gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
1642
- grpclb_policy);
1534
+ gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
1643
1535
  }
1644
- grpclb_policy->StartBalancerCallLocked();
1536
+ StartBalancerCallLocked();
1645
1537
  }
1646
- grpclb_policy->Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1538
+ Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
1539
+ GRPC_ERROR_UNREF(error);
1647
1540
  }
1648
1541
 
1649
1542
  //
@@ -1670,28 +1563,28 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
1670
1563
 
1671
1564
  void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
1672
1565
  GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1673
- grpclb_policy->combiner()->Run(
1674
- GRPC_CLOSURE_INIT(&grpclb_policy->lb_on_fallback_,
1675
- &GrpcLb::OnFallbackTimerLocked, grpclb_policy, nullptr),
1676
- GRPC_ERROR_REF(error));
1566
+ GRPC_ERROR_REF(error); // ref owned by lambda
1567
+ grpclb_policy->work_serializer()->Run(
1568
+ [grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
1569
+ DEBUG_LOCATION);
1677
1570
  }
1678
1571
 
1679
- void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
1680
- GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1572
+ void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
1681
1573
  // If we receive a serverlist after the timer fires but before this callback
1682
1574
  // actually runs, don't fall back.
1683
- if (grpclb_policy->fallback_at_startup_checks_pending_ &&
1684
- !grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE) {
1575
+ if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
1576
+ error == GRPC_ERROR_NONE) {
1685
1577
  gpr_log(GPR_INFO,
1686
1578
  "[grpclb %p] No response from balancer after fallback timeout; "
1687
1579
  "entering fallback mode",
1688
- grpclb_policy);
1689
- grpclb_policy->fallback_at_startup_checks_pending_ = false;
1690
- grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
1691
- grpclb_policy->fallback_mode_ = true;
1692
- grpclb_policy->CreateOrUpdateChildPolicyLocked();
1580
+ this);
1581
+ fallback_at_startup_checks_pending_ = false;
1582
+ CancelBalancerChannelConnectivityWatchLocked();
1583
+ fallback_mode_ = true;
1584
+ CreateOrUpdateChildPolicyLocked();
1693
1585
  }
1694
- grpclb_policy->Unref(DEBUG_LOCATION, "on_fallback_timer");
1586
+ Unref(DEBUG_LOCATION, "on_fallback_timer");
1587
+ GRPC_ERROR_UNREF(error);
1695
1588
  }
1696
1589
 
1697
1590
  //
@@ -1700,7 +1593,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
1700
1593
 
1701
1594
  grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
1702
1595
  bool is_backend_from_grpclb_load_balancer) {
1703
- InlinedVector<grpc_arg, 2> args_to_add;
1596
+ absl::InlinedVector<grpc_arg, 2> args_to_add;
1704
1597
  args_to_add.emplace_back(grpc_channel_arg_integer_create(
1705
1598
  const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
1706
1599
  is_backend_from_grpclb_load_balancer));
@@ -1713,25 +1606,17 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
1713
1606
  }
1714
1607
 
1715
1608
  OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
1716
- const char* name, const grpc_channel_args* args) {
1717
- Helper* helper = new Helper(Ref());
1609
+ const grpc_channel_args* args) {
1718
1610
  LoadBalancingPolicy::Args lb_policy_args;
1719
- lb_policy_args.combiner = combiner();
1611
+ lb_policy_args.work_serializer = work_serializer();
1720
1612
  lb_policy_args.args = args;
1721
- lb_policy_args.channel_control_helper =
1722
- std::unique_ptr<ChannelControlHelper>(helper);
1613
+ lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
1723
1614
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1724
- LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
1725
- name, std::move(lb_policy_args));
1726
- if (GPR_UNLIKELY(lb_policy == nullptr)) {
1727
- gpr_log(GPR_ERROR, "[grpclb %p] Failure creating child policy %s", this,
1728
- name);
1729
- return nullptr;
1730
- }
1731
- helper->set_child(lb_policy.get());
1615
+ MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1616
+ &grpc_lb_glb_trace);
1732
1617
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1733
- gpr_log(GPR_INFO, "[grpclb %p] Created new child policy %s (%p)", this,
1734
- name, lb_policy.get());
1618
+ gpr_log(GPR_INFO, "[grpclb %p] Created new child policy handler (%p)", this,
1619
+ lb_policy.get());
1735
1620
  }
1736
1621
  // Add the gRPC LB's interested_parties pollset_set to that of the newly
1737
1622
  // created child policy. This will make the child policy progress upon
@@ -1762,97 +1647,16 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1762
1647
  CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
1763
1648
  GPR_ASSERT(update_args.args != nullptr);
1764
1649
  update_args.config = child_policy_config_;
1765
- // If the child policy name changes, we need to create a new child
1766
- // policy. When this happens, we leave child_policy_ as-is and store
1767
- // the new child policy in pending_child_policy_. Once the new child
1768
- // policy transitions into state READY, we swap it into child_policy_,
1769
- // replacing the original child policy. So pending_child_policy_ is
1770
- // non-null only between when we apply an update that changes the child
1771
- // policy name and when the new child reports state READY.
1772
- //
1773
- // Updates can arrive at any point during this transition. We always
1774
- // apply updates relative to the most recently created child policy,
1775
- // even if the most recent one is still in pending_child_policy_. This
1776
- // is true both when applying the updates to an existing child policy
1777
- // and when determining whether we need to create a new policy.
1778
- //
1779
- // As a result of this, there are several cases to consider here:
1780
- //
1781
- // 1. We have no existing child policy (i.e., we have started up but
1782
- // have not yet received a serverlist from the balancer or gone
1783
- // into fallback mode; in this case, both child_policy_ and
1784
- // pending_child_policy_ are null). In this case, we create a
1785
- // new child policy and store it in child_policy_.
1786
- //
1787
- // 2. We have an existing child policy and have no pending child policy
1788
- // from a previous update (i.e., either there has not been a
1789
- // previous update that changed the policy name, or we have already
1790
- // finished swapping in the new policy; in this case, child_policy_
1791
- // is non-null but pending_child_policy_ is null). In this case:
1792
- // a. If child_policy_->name() equals child_policy_name, then we
1793
- // update the existing child policy.
1794
- // b. If child_policy_->name() does not equal child_policy_name,
1795
- // we create a new policy. The policy will be stored in
1796
- // pending_child_policy_ and will later be swapped into
1797
- // child_policy_ by the helper when the new child transitions
1798
- // into state READY.
1799
- //
1800
- // 3. We have an existing child policy and have a pending child policy
1801
- // from a previous update (i.e., a previous update set
1802
- // pending_child_policy_ as per case 2b above and that policy has
1803
- // not yet transitioned into state READY and been swapped into
1804
- // child_policy_; in this case, both child_policy_ and
1805
- // pending_child_policy_ are non-null). In this case:
1806
- // a. If pending_child_policy_->name() equals child_policy_name,
1807
- // then we update the existing pending child policy.
1808
- // b. If pending_child_policy->name() does not equal
1809
- // child_policy_name, then we create a new policy. The new
1810
- // policy is stored in pending_child_policy_ (replacing the one
1811
- // that was there before, which will be immediately shut down)
1812
- // and will later be swapped into child_policy_ by the helper
1813
- // when the new child transitions into state READY.
1814
- const char* child_policy_name = child_policy_config_ == nullptr
1815
- ? "round_robin"
1816
- : child_policy_config_->name();
1817
- const bool create_policy =
1818
- // case 1
1819
- child_policy_ == nullptr ||
1820
- // case 2b
1821
- (pending_child_policy_ == nullptr &&
1822
- strcmp(child_policy_->name(), child_policy_name) != 0) ||
1823
- // case 3b
1824
- (pending_child_policy_ != nullptr &&
1825
- strcmp(pending_child_policy_->name(), child_policy_name) != 0);
1826
- LoadBalancingPolicy* policy_to_update = nullptr;
1827
- if (create_policy) {
1828
- // Cases 1, 2b, and 3b: create a new child policy.
1829
- // If child_policy_ is null, we set it (case 1), else we set
1830
- // pending_child_policy_ (cases 2b and 3b).
1831
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1832
- gpr_log(GPR_INFO, "[grpclb %p] Creating new %schild policy %s", this,
1833
- child_policy_ == nullptr ? "" : "pending ", child_policy_name);
1834
- }
1835
- // Swap the policy into place.
1836
- auto& lb_policy =
1837
- child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
1838
- lb_policy = CreateChildPolicyLocked(child_policy_name, update_args.args);
1839
- policy_to_update = lb_policy.get();
1840
- } else {
1841
- // Cases 2a and 3a: update an existing policy.
1842
- // If we have a pending child policy, send the update to the pending
1843
- // policy (case 3a), else send it to the current policy (case 2a).
1844
- policy_to_update = pending_child_policy_ != nullptr
1845
- ? pending_child_policy_.get()
1846
- : child_policy_.get();
1650
+ // Create child policy if needed.
1651
+ if (child_policy_ == nullptr) {
1652
+ child_policy_ = CreateChildPolicyLocked(update_args.args);
1847
1653
  }
1848
- GPR_ASSERT(policy_to_update != nullptr);
1849
1654
  // Update the policy.
1850
1655
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1851
- gpr_log(GPR_INFO, "[grpclb %p] Updating %schild policy %p", this,
1852
- policy_to_update == pending_child_policy_.get() ? "pending " : "",
1853
- policy_to_update);
1656
+ gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
1657
+ child_policy_.get());
1854
1658
  }
1855
- policy_to_update->UpdateLocked(std::move(update_args));
1659
+ child_policy_->UpdateLocked(std::move(update_args));
1856
1660
  }
1857
1661
 
1858
1662
  //
@@ -1869,33 +1673,35 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1869
1673
  const char* name() const override { return kGrpclb; }
1870
1674
 
1871
1675
  RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
1872
- const grpc_json* json, grpc_error** error) const override {
1676
+ const Json& json, grpc_error** error) const override {
1873
1677
  GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
1874
- if (json == nullptr) {
1875
- return RefCountedPtr<LoadBalancingPolicy::Config>(
1876
- new ParsedGrpcLbConfig(nullptr));
1678
+ if (json.type() == Json::Type::JSON_NULL) {
1679
+ return MakeRefCounted<GrpcLbConfig>(nullptr);
1877
1680
  }
1878
- InlinedVector<grpc_error*, 2> error_list;
1879
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
1880
- for (const grpc_json* field = json->child; field != nullptr;
1881
- field = field->next) {
1882
- if (field->key == nullptr) continue;
1883
- if (strcmp(field->key, "childPolicy") == 0) {
1884
- if (child_policy != nullptr) {
1885
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1886
- "field:childPolicy error:Duplicate entry"));
1887
- }
1888
- grpc_error* parse_error = GRPC_ERROR_NONE;
1889
- child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1890
- field, &parse_error);
1891
- if (parse_error != GRPC_ERROR_NONE) {
1892
- error_list.push_back(parse_error);
1893
- }
1894
- }
1681
+ std::vector<grpc_error*> error_list;
1682
+ Json child_policy_config_json_tmp;
1683
+ const Json* child_policy_config_json;
1684
+ auto it = json.object_value().find("childPolicy");
1685
+ if (it == json.object_value().end()) {
1686
+ child_policy_config_json_tmp = Json::Array{Json::Object{
1687
+ {"round_robin", Json::Object()},
1688
+ }};
1689
+ child_policy_config_json = &child_policy_config_json_tmp;
1690
+ } else {
1691
+ child_policy_config_json = &it->second;
1692
+ }
1693
+ grpc_error* parse_error = GRPC_ERROR_NONE;
1694
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
1695
+ LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1696
+ *child_policy_config_json, &parse_error);
1697
+ if (parse_error != GRPC_ERROR_NONE) {
1698
+ std::vector<grpc_error*> child_errors;
1699
+ child_errors.push_back(parse_error);
1700
+ error_list.push_back(
1701
+ GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
1895
1702
  }
1896
1703
  if (error_list.empty()) {
1897
- return RefCountedPtr<LoadBalancingPolicy::Config>(
1898
- new ParsedGrpcLbConfig(std::move(child_policy)));
1704
+ return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config));
1899
1705
  } else {
1900
1706
  *error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
1901
1707
  return nullptr;
@@ -1938,7 +1744,7 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
1938
1744
  void grpc_lb_policy_grpclb_init() {
1939
1745
  grpc_core::LoadBalancingPolicyRegistry::Builder::
1940
1746
  RegisterLoadBalancingPolicyFactory(
1941
- grpc_core::MakeUnique<grpc_core::GrpcLbFactory>());
1747
+ absl::make_unique<grpc_core::GrpcLbFactory>());
1942
1748
  grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
1943
1749
  GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
1944
1750
  maybe_add_client_load_reporting_filter,