grpc 1.41.1 → 1.44.0.pre2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (1156) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +185 -102
  3. data/include/grpc/event_engine/event_engine.h +118 -54
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  5. data/include/grpc/event_engine/memory_allocator.h +226 -0
  6. data/include/grpc/event_engine/memory_request.h +57 -0
  7. data/include/grpc/grpc.h +4 -0
  8. data/include/grpc/grpc_security.h +304 -145
  9. data/include/grpc/grpc_security_constants.h +2 -14
  10. data/include/grpc/impl/codegen/compression_types.h +0 -2
  11. data/include/grpc/impl/codegen/grpc_types.h +6 -0
  12. data/include/grpc/impl/codegen/port_platform.h +14 -3
  13. data/src/core/ext/filters/client_channel/backend_metric.cc +21 -23
  14. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  16. data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
  17. data/src/core/ext/filters/client_channel/client_channel.cc +305 -335
  18. data/src/core/ext/filters/client_channel/client_channel.h +84 -36
  19. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
  20. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  21. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -15
  22. data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
  23. data/src/core/ext/filters/client_channel/config_selector.h +5 -6
  24. data/src/core/ext/filters/client_channel/connector.h +18 -18
  25. data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -5
  26. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  27. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  28. data/src/core/ext/filters/client_channel/health/health_check_client.cc +25 -22
  29. data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -4
  30. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +13 -15
  31. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  33. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  34. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +5 -18
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +198 -116
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  39. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
  45. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +66 -36
  46. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +21 -12
  47. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +124 -74
  48. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2514 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +68 -62
  50. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  51. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +18 -6
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -96
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +101 -46
  56. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +11 -3
  57. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +101 -209
  58. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  59. data/src/core/ext/filters/client_channel/lb_policy.h +105 -63
  60. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  61. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +220 -88
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  65. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +31 -50
  66. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +124 -240
  67. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +38 -25
  68. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  69. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +90 -77
  70. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -11
  71. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  72. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +7 -16
  73. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  74. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +423 -396
  75. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +2 -2
  76. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  77. data/src/core/ext/filters/client_channel/retry_filter.cc +66 -131
  78. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  79. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  80. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  81. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  82. data/src/core/ext/filters/client_channel/subchannel.cc +99 -161
  83. data/src/core/ext/filters/client_channel/subchannel.h +31 -52
  84. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  85. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  86. data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
  87. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  88. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  89. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  90. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +42 -53
  91. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -9
  92. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  93. data/src/core/ext/filters/http/client/http_client_filter.cc +70 -160
  94. data/src/core/ext/filters/http/client_authority_filter.cc +19 -36
  95. data/src/core/ext/filters/http/http_filters_plugin.cc +51 -71
  96. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +46 -139
  97. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
  98. data/src/core/ext/filters/http/server/http_server_filter.cc +84 -183
  99. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  100. data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
  101. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  102. data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
  103. data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
  104. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
  105. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
  106. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
  107. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  108. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +270 -0
  109. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → filters/server_config_selector/server_config_selector_filter.h} +9 -7
  110. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -23
  111. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
  112. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +26 -28
  113. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
  114. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +33 -53
  115. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +146 -113
  116. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
  117. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
  118. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
  119. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
  120. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -278
  121. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
  122. data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
  123. data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
  124. data/src/core/ext/transport/chttp2/transport/flow_control.cc +26 -23
  125. data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -6
  126. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -5
  127. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  128. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
  129. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  130. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  131. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
  132. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +384 -218
  133. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +89 -143
  134. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  135. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  136. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +201 -202
  137. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -9
  138. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +106 -26
  139. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +29 -44
  140. data/src/core/ext/transport/chttp2/transport/internal.h +10 -38
  141. data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -179
  142. data/src/core/ext/transport/chttp2/transport/writing.cc +65 -127
  143. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  144. data/src/core/ext/transport/inproc/inproc_transport.cc +114 -161
  145. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  146. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
  147. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
  148. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
  149. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
  150. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
  151. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
  152. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
  153. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
  154. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
  155. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
  156. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
  157. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
  158. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +277 -208
  159. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +141 -1
  160. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
  161. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
  162. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
  163. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
  166. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
  167. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
  168. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +171 -125
  169. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +55 -4
  170. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
  171. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
  172. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
  173. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +90 -71
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +17 -0
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +121 -92
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
  194. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
  195. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
  196. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -44
  197. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
  198. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
  199. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
  200. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
  201. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
  202. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
  203. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
  204. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
  205. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
  206. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
  207. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
  208. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
  209. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
  210. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
  211. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
  212. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
  213. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
  214. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +99 -78
  215. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +19 -0
  216. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
  217. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
  218. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +508 -442
  219. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +51 -19
  220. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
  221. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
  222. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
  223. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
  224. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
  225. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
  226. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
  227. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
  228. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
  229. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
  230. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
  231. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
  232. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
  233. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
  234. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
  235. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
  236. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
  237. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
  238. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
  239. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
  240. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
  241. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
  242. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
  243. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
  244. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
  245. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
  246. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
  247. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
  248. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
  249. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
  250. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
  251. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
  252. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
  253. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
  254. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
  255. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
  256. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
  257. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
  258. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
  259. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
  260. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
  261. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
  262. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
  263. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
  264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
  265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
  266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
  267. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
  268. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
  280. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
  281. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
  282. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
  283. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
  284. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
  285. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
  286. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
  287. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
  288. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
  289. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
  290. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
  291. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
  292. data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
  293. data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
  294. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
  295. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
  296. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
  297. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
  298. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
  299. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
  300. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
  301. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
  302. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
  303. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
  304. data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
  305. data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
  306. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
  307. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
  308. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
  309. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
  310. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
  311. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
  312. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
  313. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
  314. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
  315. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
  316. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
  317. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
  318. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
  319. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
  320. data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
  321. data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
  322. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
  323. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
  324. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
  325. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
  326. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
  327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
  328. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
  329. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
  330. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
  331. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
  332. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +68 -0
  333. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +156 -0
  334. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
  335. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
  336. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -5
  337. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
  338. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
  339. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
  340. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
  341. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
  342. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
  343. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
  344. data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
  345. data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
  346. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +103 -0
  347. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +199 -0
  348. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +14 -3
  349. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
  350. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +25 -13
  351. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
  352. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +20 -8
  353. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +19 -8
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +28 -16
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +19 -8
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
  360. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +71 -0
  361. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +132 -0
  362. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +44 -0
  363. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +85 -0
  364. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
  365. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
  366. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
  367. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
  368. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
  369. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
  370. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +307 -336
  371. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  372. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
  373. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
  374. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
  375. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
  376. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +100 -138
  377. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  378. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
  379. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
  380. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
  381. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
  382. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +61 -77
  383. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
  384. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +61 -79
  385. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
  386. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
  387. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
  388. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
  389. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
  390. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
  391. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +80 -99
  392. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
  393. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
  394. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
  395. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
  396. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
  397. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
  398. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
  399. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
  400. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  402. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
  403. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +325 -427
  404. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
  405. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
  406. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
  407. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
  408. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
  409. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
  410. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  411. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
  412. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
  413. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
  414. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
  415. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
  416. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
  417. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
  418. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
  419. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
  420. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
  421. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
  422. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
  423. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
  424. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
  425. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
  426. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
  427. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
  428. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
  429. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
  430. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
  431. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
  432. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
  433. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
  434. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
  435. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
  436. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
  437. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
  438. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
  439. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
  440. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
  441. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
  442. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  443. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  444. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
  445. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
  446. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
  447. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
  448. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  449. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  450. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
  451. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
  452. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
  453. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
  454. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
  455. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
  456. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
  457. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
  458. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
  459. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
  460. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
  461. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +7 -15
  462. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +21 -30
  463. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -5
  464. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +7 -10
  465. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +7 -11
  466. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
  467. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  468. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  469. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +15 -19
  470. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +27 -33
  471. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +18 -24
  472. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +19 -23
  473. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +35 -41
  474. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +21 -25
  475. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  476. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  477. data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
  478. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  479. data/src/core/ext/xds/upb_utils.h +65 -0
  480. data/src/core/ext/xds/xds_api.cc +159 -3468
  481. data/src/core/ext/xds/xds_api.h +57 -558
  482. data/src/core/ext/xds/xds_bootstrap.cc +189 -122
  483. data/src/core/ext/xds/xds_bootstrap.h +30 -15
  484. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  485. data/src/core/ext/xds/xds_certificate_provider.h +2 -2
  486. data/src/core/ext/xds/xds_channel_creds.cc +108 -0
  487. data/src/core/ext/xds/xds_channel_creds.h +50 -0
  488. data/src/core/ext/xds/xds_channel_stack_modifier.cc +112 -0
  489. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  490. data/src/core/ext/xds/xds_client.cc +751 -844
  491. data/src/core/ext/xds/xds_client.h +100 -143
  492. data/src/core/ext/xds/xds_client_stats.h +1 -1
  493. data/src/core/ext/xds/xds_cluster.cc +451 -0
  494. data/src/core/ext/xds/xds_cluster.h +111 -0
  495. data/src/core/ext/xds/xds_common_types.cc +388 -0
  496. data/src/core/ext/xds/xds_common_types.h +110 -0
  497. data/src/core/ext/xds/xds_endpoint.cc +364 -0
  498. data/src/core/ext/xds/xds_endpoint.h +135 -0
  499. data/src/core/ext/xds/xds_http_filters.cc +5 -0
  500. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  501. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  502. data/src/core/ext/xds/xds_listener.cc +1036 -0
  503. data/src/core/ext/xds/xds_listener.h +220 -0
  504. data/src/core/ext/{filters/workarounds/workaround_cronet_compression_filter.h → xds/xds_resource_type.cc} +14 -8
  505. data/src/core/ext/xds/xds_resource_type.h +98 -0
  506. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  507. data/src/core/ext/xds/xds_route_config.cc +993 -0
  508. data/src/core/ext/xds/xds_route_config.h +215 -0
  509. data/src/core/ext/xds/xds_routing.cc +250 -0
  510. data/src/core/ext/xds/xds_routing.h +101 -0
  511. data/src/core/ext/xds/xds_server_config_fetcher.cc +1061 -289
  512. data/src/core/lib/address_utils/parse_address.cc +22 -0
  513. data/src/core/lib/address_utils/parse_address.h +5 -0
  514. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  515. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  516. data/src/core/lib/avl/avl.h +389 -88
  517. data/src/core/lib/backoff/backoff.cc +6 -32
  518. data/src/core/lib/backoff/backoff.h +3 -3
  519. data/src/core/lib/channel/channel_args.cc +25 -8
  520. data/src/core/lib/channel/channel_args.h +11 -1
  521. data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
  522. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  523. data/src/core/lib/channel/channel_stack.cc +8 -0
  524. data/src/core/lib/channel/channel_stack.h +1 -1
  525. data/src/core/lib/channel/channel_stack_builder.cc +8 -14
  526. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  527. data/src/core/lib/channel/channel_trace.cc +7 -7
  528. data/src/core/lib/channel/channel_trace.h +1 -1
  529. data/src/core/lib/channel/channelz.cc +4 -3
  530. data/src/core/lib/channel/channelz.h +2 -2
  531. data/src/core/lib/channel/channelz_registry.cc +1 -1
  532. data/src/core/lib/channel/channelz_registry.h +1 -1
  533. data/src/core/lib/channel/connected_channel.cc +1 -3
  534. data/src/core/lib/channel/connected_channel.h +1 -2
  535. data/src/core/lib/compression/compression.cc +21 -113
  536. data/src/core/lib/compression/compression_internal.cc +142 -202
  537. data/src/core/lib/compression/compression_internal.h +64 -69
  538. data/src/core/lib/compression/message_compress.cc +11 -11
  539. data/src/core/lib/compression/message_compress.h +2 -2
  540. data/src/core/lib/config/core_configuration.cc +46 -2
  541. data/src/core/lib/config/core_configuration.h +50 -1
  542. data/src/core/lib/debug/stats.cc +1 -1
  543. data/src/core/lib/debug/stats_data.cc +13 -13
  544. data/src/core/lib/debug/trace.h +2 -2
  545. data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
  546. data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
  547. data/src/core/lib/event_engine/event_engine.cc +0 -13
  548. data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
  549. data/src/core/lib/event_engine/event_engine_factory.h +33 -0
  550. data/src/core/lib/event_engine/memory_allocator.cc +70 -0
  551. data/src/core/lib/gpr/atm.cc +1 -1
  552. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  553. data/src/core/lib/gpr/string.cc +2 -2
  554. data/src/core/lib/gpr/tls.h +7 -1
  555. data/src/core/lib/gpr/useful.h +83 -32
  556. data/src/core/lib/gprpp/bitset.h +45 -16
  557. data/src/core/lib/gprpp/chunked_vector.h +253 -0
  558. data/src/core/lib/gprpp/construct_destruct.h +1 -1
  559. data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
  560. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  561. data/src/core/lib/gprpp/global_config_env.h +2 -2
  562. data/src/core/lib/gprpp/manual_constructor.h +2 -3
  563. data/src/core/lib/gprpp/memory.h +6 -0
  564. data/src/core/lib/gprpp/orphanable.h +1 -1
  565. data/src/core/lib/gprpp/ref_counted.h +1 -1
  566. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
  567. data/src/core/lib/gprpp/status_helper.cc +35 -23
  568. data/src/core/lib/gprpp/status_helper.h +14 -16
  569. data/src/core/lib/gprpp/table.h +434 -0
  570. data/src/core/lib/http/httpcli.cc +215 -202
  571. data/src/core/lib/http/httpcli.h +17 -27
  572. data/src/core/lib/http/parser.cc +2 -2
  573. data/src/core/lib/iomgr/buffer_list.cc +9 -9
  574. data/src/core/lib/iomgr/buffer_list.h +13 -13
  575. data/src/core/lib/iomgr/call_combiner.cc +44 -16
  576. data/src/core/lib/iomgr/closure.h +29 -9
  577. data/src/core/lib/iomgr/combiner.cc +31 -24
  578. data/src/core/lib/iomgr/endpoint.h +0 -1
  579. data/src/core/lib/iomgr/endpoint_cfstream.cc +14 -30
  580. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  581. data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
  582. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
  583. data/src/core/lib/iomgr/error.cc +115 -52
  584. data/src/core/lib/iomgr/error.h +53 -9
  585. data/src/core/lib/iomgr/error_cfstream.cc +5 -0
  586. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
  587. data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
  588. data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
  589. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  590. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  591. data/src/core/lib/iomgr/event_engine/endpoint.cc +5 -6
  592. data/src/core/lib/iomgr/event_engine/iomgr.cc +9 -28
  593. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  594. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  595. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  596. data/src/core/lib/iomgr/event_engine/resolver.cc +68 -46
  597. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  598. data/src/core/lib/iomgr/event_engine/tcp.cc +16 -13
  599. data/src/core/lib/iomgr/event_engine/timer.cc +10 -4
  600. data/src/core/lib/iomgr/exec_ctx.cc +23 -18
  601. data/src/core/lib/iomgr/exec_ctx.h +11 -11
  602. data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
  603. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
  604. data/src/core/lib/iomgr/executor.cc +26 -34
  605. data/src/core/lib/iomgr/executor.h +1 -1
  606. data/src/core/lib/iomgr/fork_posix.cc +3 -2
  607. data/src/core/lib/iomgr/iomgr.cc +3 -1
  608. data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
  609. data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
  610. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  611. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  612. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  613. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  614. data/src/core/lib/iomgr/load_file.cc +2 -2
  615. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  616. data/src/core/lib/iomgr/pollset_custom.cc +1 -1
  617. data/src/core/lib/iomgr/pollset_custom.h +1 -1
  618. data/src/core/lib/iomgr/port.h +2 -2
  619. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  620. data/src/core/lib/iomgr/resolve_address.h +47 -44
  621. data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
  622. data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
  623. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  624. data/src/core/lib/iomgr/resolve_address_posix.cc +87 -73
  625. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  626. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  627. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  628. data/src/core/lib/iomgr/resolved_address.h +39 -0
  629. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
  630. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  631. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
  632. data/src/core/lib/iomgr/tcp_client.cc +2 -4
  633. data/src/core/lib/iomgr/tcp_client.h +1 -3
  634. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -12
  635. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -11
  636. data/src/core/lib/iomgr/tcp_client_posix.cc +16 -41
  637. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  638. data/src/core/lib/iomgr/tcp_client_windows.cc +3 -13
  639. data/src/core/lib/iomgr/tcp_custom.cc +9 -36
  640. data/src/core/lib/iomgr/tcp_custom.h +0 -1
  641. data/src/core/lib/iomgr/tcp_posix.cc +32 -38
  642. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  643. data/src/core/lib/iomgr/tcp_server.cc +4 -6
  644. data/src/core/lib/iomgr/tcp_server.h +6 -8
  645. data/src/core/lib/iomgr/tcp_server_custom.cc +7 -16
  646. data/src/core/lib/iomgr/tcp_server_posix.cc +20 -25
  647. data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
  648. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  649. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  650. data/src/core/lib/iomgr/tcp_server_windows.cc +9 -17
  651. data/src/core/lib/iomgr/tcp_windows.cc +4 -9
  652. data/src/core/lib/iomgr/tcp_windows.h +1 -2
  653. data/src/core/lib/iomgr/timer_generic.cc +13 -13
  654. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  655. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  656. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  657. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  658. data/src/core/lib/iomgr/work_serializer.cc +115 -44
  659. data/src/core/lib/iomgr/work_serializer.h +16 -4
  660. data/src/core/lib/json/json_reader.cc +83 -35
  661. data/src/core/lib/json/json_util.cc +69 -1
  662. data/src/core/lib/json/json_util.h +57 -99
  663. data/src/core/lib/json/json_writer.cc +0 -3
  664. data/src/core/lib/matchers/matchers.cc +1 -1
  665. data/src/core/lib/promise/activity.cc +115 -0
  666. data/src/core/lib/promise/activity.h +528 -0
  667. data/src/core/lib/promise/context.h +86 -0
  668. data/src/core/lib/promise/detail/basic_seq.h +407 -0
  669. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  670. data/src/core/lib/promise/detail/promise_like.h +85 -0
  671. data/src/core/lib/promise/detail/status.h +49 -0
  672. data/src/core/lib/promise/detail/switch.h +1455 -0
  673. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  674. data/src/core/lib/promise/loop.h +108 -0
  675. data/src/core/lib/promise/map.h +88 -0
  676. data/src/core/lib/promise/poll.h +60 -0
  677. data/src/core/lib/promise/race.h +84 -0
  678. data/src/core/lib/promise/seq.h +71 -0
  679. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  680. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  681. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +12 -5
  682. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +15 -17
  683. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +5 -7
  684. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  685. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +5 -5
  686. data/src/core/lib/resource_quota/api.cc +108 -0
  687. data/src/core/lib/resource_quota/api.h +40 -0
  688. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  689. data/src/core/lib/{gprpp → resource_quota}/arena.h +32 -11
  690. data/src/core/lib/resource_quota/memory_quota.cc +454 -0
  691. data/src/core/lib/resource_quota/memory_quota.h +421 -0
  692. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  693. data/src/core/lib/resource_quota/resource_quota.h +58 -0
  694. data/src/core/lib/{transport/authority_override.h → resource_quota/thread_quota.cc} +22 -16
  695. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  696. data/src/core/lib/resource_quota/trace.cc +19 -0
  697. data/src/core/lib/resource_quota/trace.h +24 -0
  698. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  699. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  700. data/src/core/lib/security/authorization/evaluate_args.cc +41 -30
  701. data/src/core/lib/security/authorization/evaluate_args.h +3 -1
  702. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  703. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  704. data/src/core/lib/security/authorization/matchers.cc +227 -0
  705. data/src/core/lib/security/authorization/matchers.h +211 -0
  706. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  707. data/src/core/lib/security/authorization/rbac_policy.h +170 -0
  708. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +15 -1
  709. data/src/core/lib/security/context/security_context.cc +8 -4
  710. data/src/core/lib/security/context/security_context.h +1 -1
  711. data/src/core/lib/security/credentials/composite/composite_credentials.cc +6 -6
  712. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
  713. data/src/core/lib/security/credentials/credentials.cc +4 -2
  714. data/src/core/lib/security/credentials/credentials.h +16 -21
  715. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +8 -12
  716. data/src/core/lib/security/credentials/external/external_account_credentials.cc +57 -24
  717. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -7
  718. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -4
  719. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  720. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
  721. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -9
  722. data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
  723. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
  724. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  725. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +17 -29
  726. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
  727. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -24
  728. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +53 -70
  729. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
  730. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -9
  731. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
  732. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
  733. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
  734. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
  735. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
  736. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
  737. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +15 -88
  738. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +26 -82
  739. data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
  740. data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
  741. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  742. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
  743. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  744. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +5 -6
  745. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  746. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
  747. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
  748. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
  749. data/src/core/lib/security/security_connector/security_connector.cc +9 -8
  750. data/src/core/lib/security/security_connector/security_connector.h +6 -2
  751. data/src/core/lib/security/security_connector/ssl_utils.cc +25 -27
  752. data/src/core/lib/security/security_connector/ssl_utils.h +6 -15
  753. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +347 -198
  754. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -43
  755. data/src/core/lib/security/transport/auth_filters.h +7 -0
  756. data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
  757. data/src/core/lib/security/transport/security_handshaker.cc +75 -45
  758. data/src/core/lib/security/transport/server_auth_filter.cc +40 -37
  759. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  760. data/src/core/{ext/filters/client_channel → lib/service_config}/service_config.cc +2 -2
  761. data/src/core/{ext/filters/client_channel → lib/service_config}/service_config.h +4 -4
  762. data/src/core/lib/service_config/service_config_call_data.h +72 -0
  763. data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.cc +3 -3
  764. data/src/core/{ext/filters/client_channel → lib/service_config}/service_config_parser.h +8 -6
  765. data/src/core/lib/slice/percent_encoding.cc +30 -86
  766. data/src/core/lib/slice/percent_encoding.h +5 -11
  767. data/src/core/lib/slice/slice.cc +10 -24
  768. data/src/core/lib/slice/slice.h +371 -0
  769. data/src/core/lib/{compression/stream_compression_gzip.h → slice/slice_api.cc} +18 -7
  770. data/src/core/lib/slice/slice_buffer.cc +9 -5
  771. data/src/core/lib/slice/slice_intern.cc +4 -107
  772. data/src/core/lib/slice/slice_internal.h +2 -246
  773. data/src/core/lib/slice/slice_refcount.cc +17 -0
  774. data/src/core/lib/slice/slice_refcount.h +116 -0
  775. data/src/core/lib/slice/slice_refcount_base.h +165 -0
  776. data/src/core/lib/slice/slice_split.cc +100 -0
  777. data/src/core/lib/slice/slice_split.h +40 -0
  778. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  779. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  780. data/src/core/lib/surface/builtins.cc +49 -0
  781. data/src/core/lib/surface/builtins.h +26 -0
  782. data/src/core/lib/surface/call.cc +249 -482
  783. data/src/core/lib/surface/call.h +4 -10
  784. data/src/core/lib/surface/channel.cc +53 -93
  785. data/src/core/lib/surface/channel.h +6 -25
  786. data/src/core/lib/surface/channel_init.cc +23 -76
  787. data/src/core/lib/surface/channel_init.h +52 -44
  788. data/src/core/lib/surface/completion_queue.cc +8 -7
  789. data/src/core/lib/surface/init.cc +0 -42
  790. data/src/core/lib/surface/init_secure.cc +17 -14
  791. data/src/core/lib/surface/lame_client.cc +41 -28
  792. data/src/core/lib/surface/lame_client.h +1 -1
  793. data/src/core/lib/surface/server.cc +46 -55
  794. data/src/core/lib/surface/server.h +27 -21
  795. data/src/core/lib/surface/validate_metadata.cc +7 -4
  796. data/src/core/lib/surface/version.cc +2 -2
  797. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  798. data/src/core/lib/transport/byte_stream.cc +4 -0
  799. data/src/core/lib/transport/error_utils.cc +42 -17
  800. data/src/core/lib/transport/error_utils.h +15 -1
  801. data/src/core/lib/transport/metadata_batch.h +1167 -176
  802. data/src/core/lib/transport/{authority_override.cc → parsed_metadata.cc} +14 -17
  803. data/src/core/lib/transport/parsed_metadata.h +385 -0
  804. data/src/core/lib/transport/pid_controller.cc +4 -4
  805. data/src/core/lib/transport/timeout_encoding.cc +200 -66
  806. data/src/core/lib/transport/timeout_encoding.h +40 -10
  807. data/src/core/lib/transport/transport.cc +8 -31
  808. data/src/core/lib/transport/transport.h +1 -2
  809. data/src/core/lib/transport/transport_op_string.cc +7 -20
  810. data/src/core/lib/uri/uri_parser.cc +233 -63
  811. data/src/core/lib/uri/uri_parser.h +38 -23
  812. data/src/core/plugin_registry/grpc_plugin_registry.cc +69 -45
  813. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
  814. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  815. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  816. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -4
  817. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  818. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  819. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  820. data/src/core/tsi/fake_transport_security.cc +15 -7
  821. data/src/core/tsi/local_transport_security.cc +43 -80
  822. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  823. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
  824. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +6 -7
  825. data/src/core/tsi/ssl_transport_security.cc +93 -16
  826. data/src/core/tsi/ssl_transport_security.h +19 -6
  827. data/src/core/tsi/transport_security.cc +12 -0
  828. data/src/core/tsi/transport_security.h +16 -1
  829. data/src/core/tsi/transport_security_interface.h +26 -0
  830. data/src/ruby/ext/grpc/extconf.rb +21 -11
  831. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -10
  832. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -15
  833. data/src/ruby/lib/grpc/version.rb +1 -1
  834. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  835. data/src/ruby/spec/client_server_spec.rb +1 -1
  836. data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
  837. data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
  838. data/third_party/abseil-cpp/absl/base/config.h +67 -37
  839. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
  840. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  841. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
  842. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
  843. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
  844. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  845. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +15 -10
  846. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
  847. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  848. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  849. data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
  850. data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
  851. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  852. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
  853. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
  854. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
  855. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  856. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
  857. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
  858. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
  859. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  860. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  861. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
  862. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  863. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  864. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  865. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
  866. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  867. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  868. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  869. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
  870. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  871. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  872. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  873. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
  874. data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
  875. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
  876. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
  877. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  878. data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
  879. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
  880. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  881. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  882. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  883. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
  884. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
  885. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  886. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  887. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  888. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  889. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  890. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  891. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  892. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  893. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  894. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  895. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  896. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  897. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  898. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  899. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  900. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  901. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  902. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  903. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  904. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  905. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  906. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  907. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  908. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  909. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  910. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  911. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  912. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  913. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  914. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  915. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  916. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  917. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  918. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  919. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  920. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  921. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  922. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  923. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  924. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  925. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  926. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  927. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  928. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  929. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  930. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  931. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
  932. data/third_party/abseil-cpp/absl/status/status.cc +9 -17
  933. data/third_party/abseil-cpp/absl/status/status.h +19 -15
  934. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  935. data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
  936. data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
  937. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  938. data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
  939. data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
  940. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
  941. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
  942. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
  943. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  944. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  945. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  946. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  947. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  948. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  949. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  950. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  951. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
  952. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
  953. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
  954. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
  955. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  956. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  957. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  958. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  959. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  960. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  961. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  962. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  963. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  964. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  965. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
  966. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
  967. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
  968. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  969. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  970. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
  971. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
  972. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
  973. data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
  974. data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
  975. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  976. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  977. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  978. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  979. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  980. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  981. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  982. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  983. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
  984. data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
  985. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  986. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  987. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  988. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  989. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  990. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  991. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
  992. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  993. data/third_party/abseil-cpp/absl/time/time.h +67 -36
  994. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  995. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  996. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  997. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  998. data/third_party/boringssl-with-bazel/err_data.c +681 -677
  999. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
  1000. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
  1001. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
  1002. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
  1003. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
  1004. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
  1005. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1006. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1007. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +41 -0
  1008. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
  1009. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1010. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
  1011. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1012. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  1013. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
  1014. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1015. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1016. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1017. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1018. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1019. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1020. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1021. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1022. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
  1024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  1025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
  1026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  1027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  1028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  1029. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1030. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
  1031. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
  1032. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1033. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1034. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1035. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1036. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1037. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
  1038. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1039. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1040. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
  1041. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
  1042. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
  1043. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  1044. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1045. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
  1046. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1047. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
  1048. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
  1049. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
  1050. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
  1051. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
  1052. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1019 -274
  1053. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
  1054. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  1055. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1056. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1057. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
  1058. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1059. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1060. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
  1061. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
  1062. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1063. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
  1064. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1065. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1066. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
  1067. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +31 -13
  1068. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +491 -58
  1069. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
  1070. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
  1071. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
  1072. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1073. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
  1074. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
  1075. data/third_party/re2/re2/compile.cc +91 -109
  1076. data/third_party/re2/re2/dfa.cc +27 -39
  1077. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1078. data/third_party/re2/re2/filtered_re2.h +10 -5
  1079. data/third_party/re2/re2/nfa.cc +1 -1
  1080. data/third_party/re2/re2/parse.cc +42 -23
  1081. data/third_party/re2/re2/perl_groups.cc +34 -34
  1082. data/third_party/re2/re2/prefilter.cc +3 -2
  1083. data/third_party/re2/re2/prog.cc +182 -4
  1084. data/third_party/re2/re2/prog.h +28 -9
  1085. data/third_party/re2/re2/re2.cc +87 -118
  1086. data/third_party/re2/re2/re2.h +156 -141
  1087. data/third_party/re2/re2/regexp.cc +12 -5
  1088. data/third_party/re2/re2/regexp.h +8 -2
  1089. data/third_party/re2/re2/set.cc +31 -9
  1090. data/third_party/re2/re2/set.h +9 -4
  1091. data/third_party/re2/re2/simplify.cc +11 -3
  1092. data/third_party/re2/re2/tostring.cc +1 -1
  1093. data/third_party/re2/re2/walker-inl.h +1 -1
  1094. data/third_party/re2/util/mutex.h +2 -2
  1095. data/third_party/re2/util/pcre.h +3 -3
  1096. data/third_party/upb/upb/decode.c +309 -178
  1097. data/third_party/upb/upb/decode_fast.c +1 -1
  1098. data/third_party/upb/upb/decode_internal.h +1 -0
  1099. data/third_party/upb/upb/def.c +330 -85
  1100. data/third_party/upb/upb/def.h +45 -14
  1101. data/third_party/upb/upb/def.hpp +17 -4
  1102. data/third_party/upb/upb/encode.c +100 -40
  1103. data/third_party/upb/upb/msg.c +22 -9
  1104. data/third_party/upb/upb/msg_internal.h +90 -8
  1105. data/third_party/upb/upb/reflection.c +98 -58
  1106. data/third_party/upb/upb/reflection.h +6 -2
  1107. data/third_party/upb/upb/text_encode.c +3 -3
  1108. data/third_party/upb/upb/upb.c +8 -0
  1109. data/third_party/xxhash/xxhash.h +607 -352
  1110. metadata +259 -115
  1111. data/include/grpc/event_engine/slice_allocator.h +0 -71
  1112. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  1113. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  1114. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  1115. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  1116. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  1117. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  1118. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
  1119. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  1120. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  1121. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  1122. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  1123. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  1124. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  1125. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  1126. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
  1127. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +0 -33
  1128. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
  1129. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  1130. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  1131. data/src/core/lib/avl/avl.cc +0 -306
  1132. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  1133. data/src/core/lib/compression/compression_args.cc +0 -136
  1134. data/src/core/lib/compression/compression_args.h +0 -56
  1135. data/src/core/lib/compression/stream_compression.cc +0 -81
  1136. data/src/core/lib/compression/stream_compression.h +0 -117
  1137. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  1138. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  1139. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  1140. data/src/core/lib/gprpp/match.h +0 -73
  1141. data/src/core/lib/gprpp/overload.h +0 -59
  1142. data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
  1143. data/src/core/lib/iomgr/resource_quota.cc +0 -1104
  1144. data/src/core/lib/iomgr/resource_quota.h +0 -226
  1145. data/src/core/lib/iomgr/udp_server.cc +0 -747
  1146. data/src/core/lib/iomgr/udp_server.h +0 -103
  1147. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  1148. data/src/core/lib/transport/metadata.cc +0 -693
  1149. data/src/core/lib/transport/metadata.h +0 -448
  1150. data/src/core/lib/transport/metadata_batch.cc +0 -430
  1151. data/src/core/lib/transport/static_metadata.cc +0 -1249
  1152. data/src/core/lib/transport/static_metadata.h +0 -604
  1153. data/src/core/lib/transport/status_metadata.cc +0 -62
  1154. data/src/core/lib/transport/status_metadata.h +0 -48
  1155. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  1156. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -21,13 +21,13 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include "absl/status/status.h"
25
+
24
26
  #include "src/core/lib/gprpp/sync.h"
25
27
  #include "src/core/lib/security/context/security_context.h"
26
28
  #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
27
29
  #include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
28
30
 
29
- #define GRPC_TLS_TRANSPORT_SECURITY_TYPE "tls"
30
-
31
31
  namespace grpc_core {
32
32
 
33
33
  // Channel security connector using TLS as transport security protocol.
@@ -60,11 +60,8 @@ class TlsChannelSecurityConnector final
60
60
  RefCountedPtr<grpc_auth_context>* auth_context,
61
61
  grpc_closure* on_peer_checked) override;
62
62
 
63
- void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
64
- grpc_error_handle error) override {
65
- // TODO(ZhenLian): call verifier->cancel() once the verifier is ready.
66
- GRPC_ERROR_UNREF(error);
67
- }
63
+ void cancel_check_peer(grpc_closure* on_peer_checked,
64
+ grpc_error_handle error) override;
68
65
 
69
66
  int cmp(const grpc_security_connector* other_sc) const override;
70
67
 
@@ -110,43 +107,51 @@ class TlsChannelSecurityConnector final
110
107
  TlsChannelSecurityConnector* security_connector_ = nullptr;
111
108
  };
112
109
 
113
- // Updates |client_handshaker_factory_| when the certificates that
114
- // |certificate_watcher_| is watching get updated.
115
- grpc_security_status UpdateHandshakerFactoryLocked()
116
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
110
+ // Use "new" to create a new instance, and no need to delete it later, since
111
+ // it will be self-destroyed in |OnVerifyDone|.
112
+ class ChannelPendingVerifierRequest {
113
+ public:
114
+ ChannelPendingVerifierRequest(
115
+ RefCountedPtr<TlsChannelSecurityConnector> security_connector,
116
+ grpc_closure* on_peer_checked, tsi_peer peer, const char* target_name);
117
117
 
118
- // gRPC-provided callback executed by application, which servers to bring the
119
- // control back to gRPC core.
120
- static void ServerAuthorizationCheckDone(
121
- grpc_tls_server_authorization_check_arg* arg);
118
+ ~ChannelPendingVerifierRequest();
122
119
 
123
- // A util function to process server authorization check result.
124
- static grpc_error_handle ProcessServerAuthorizationCheckResult(
125
- grpc_tls_server_authorization_check_arg* arg);
120
+ void Start();
126
121
 
127
- // A util function to create a server authorization check arg instance.
128
- static grpc_tls_server_authorization_check_arg*
129
- ServerAuthorizationCheckArgCreate(void* user_data);
122
+ grpc_tls_custom_verification_check_request* request() { return &request_; }
130
123
 
131
- // A util function to destroy a server authorization check arg instance.
132
- static void ServerAuthorizationCheckArgDestroy(
133
- grpc_tls_server_authorization_check_arg* arg);
124
+ private:
125
+ void OnVerifyDone(bool run_callback_inline, absl::Status status);
126
+ // The request will keep a reference of the security connector to make sure
127
+ // it won't be destroyed while the request is still ongoing.
128
+ RefCountedPtr<TlsChannelSecurityConnector> security_connector_;
129
+ grpc_tls_custom_verification_check_request request_;
130
+ grpc_closure* on_peer_checked_;
131
+ };
134
132
 
133
+ // Updates |client_handshaker_factory_| when the certificates that
134
+ // |certificate_watcher_| is watching get updated.
135
+ grpc_security_status UpdateHandshakerFactoryLocked()
136
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
137
+
138
+ Mutex mu_;
139
+ // We need a separate mutex for |pending_verifier_requests_|, otherwise there
140
+ // would be deadlock errors.
141
+ Mutex verifier_request_map_mu_;
135
142
  RefCountedPtr<grpc_tls_credentials_options> options_;
136
143
  grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
137
144
  certificate_watcher_ = nullptr;
138
- grpc_closure* on_peer_checked_ = nullptr;
139
145
  std::string target_name_;
140
146
  std::string overridden_target_name_;
141
- grpc_tls_server_authorization_check_arg* check_arg_ = nullptr;
142
-
143
- Mutex mu_;
144
147
  tsi_ssl_client_handshaker_factory* client_handshaker_factory_
145
148
  ABSL_GUARDED_BY(mu_) = nullptr;
146
149
  tsi_ssl_session_cache* ssl_session_cache_ ABSL_GUARDED_BY(mu_) = nullptr;
147
150
  absl::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
148
151
  absl::optional<PemKeyCertPairList> pem_key_cert_pair_list_
149
152
  ABSL_GUARDED_BY(mu_);
153
+ std::map<grpc_closure* /*on_peer_checked*/, ChannelPendingVerifierRequest*>
154
+ pending_verifier_requests_ ABSL_GUARDED_BY(verifier_request_map_mu_);
150
155
  };
151
156
 
152
157
  // Server security connector using TLS as transport security protocol.
@@ -172,10 +177,7 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
172
177
  grpc_closure* on_peer_checked) override;
173
178
 
174
179
  void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
175
- grpc_error_handle error) override {
176
- // TODO(ZhenLian): call verifier->cancel() once the verifier is ready.
177
- GRPC_ERROR_UNREF(error);
178
- }
180
+ grpc_error_handle error) override;
179
181
 
180
182
  int cmp(const grpc_security_connector* other) const override;
181
183
 
@@ -207,6 +209,7 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
207
209
  void OnCertificatesChanged(
208
210
  absl::optional<absl::string_view> root_certs,
209
211
  absl::optional<PemKeyCertPairList> key_cert_pairs) override;
212
+
210
213
  void OnError(grpc_error_handle root_cert_error,
211
214
  grpc_error_handle identity_cert_error) override;
212
215
 
@@ -214,32 +217,50 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
214
217
  TlsServerSecurityConnector* security_connector_ = nullptr;
215
218
  };
216
219
 
220
+ // Use "new" to create a new instance, and no need to delete it later, since
221
+ // it will be self-destroyed in |OnVerifyDone|.
222
+ class ServerPendingVerifierRequest {
223
+ public:
224
+ ServerPendingVerifierRequest(
225
+ RefCountedPtr<TlsServerSecurityConnector> security_connector,
226
+ grpc_closure* on_peer_checked, tsi_peer peer);
227
+
228
+ ~ServerPendingVerifierRequest();
229
+
230
+ void Start();
231
+
232
+ grpc_tls_custom_verification_check_request* request() { return &request_; }
233
+
234
+ private:
235
+ void OnVerifyDone(bool run_callback_inline, absl::Status status);
236
+ // The request will keep a reference of the security connector to make sure
237
+ // it won't be destroyed while the request is still ongoing.
238
+ RefCountedPtr<TlsServerSecurityConnector> security_connector_;
239
+ grpc_tls_custom_verification_check_request request_;
240
+ grpc_closure* on_peer_checked_;
241
+ };
242
+
217
243
  // Updates |server_handshaker_factory_| when the certificates that
218
244
  // |certificate_watcher_| is watching get updated.
219
245
  grpc_security_status UpdateHandshakerFactoryLocked()
220
246
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
221
247
 
248
+ Mutex mu_;
249
+ // We need a separate mutex for |pending_verifier_requests_|, otherwise there
250
+ // would be deadlock errors.
251
+ Mutex verifier_request_map_mu_;
222
252
  RefCountedPtr<grpc_tls_credentials_options> options_;
223
253
  grpc_tls_certificate_distributor::TlsCertificatesWatcherInterface*
224
254
  certificate_watcher_ = nullptr;
225
-
226
- Mutex mu_;
227
255
  tsi_ssl_server_handshaker_factory* server_handshaker_factory_
228
256
  ABSL_GUARDED_BY(mu_) = nullptr;
229
257
  absl::optional<absl::string_view> pem_root_certs_ ABSL_GUARDED_BY(mu_);
230
258
  absl::optional<PemKeyCertPairList> pem_key_cert_pair_list_
231
259
  ABSL_GUARDED_BY(mu_);
260
+ std::map<grpc_closure* /*on_peer_checked*/, ServerPendingVerifierRequest*>
261
+ pending_verifier_requests_ ABSL_GUARDED_BY(verifier_request_map_mu_);
232
262
  };
233
263
 
234
- // ---- Functions below are exposed for testing only -----------------------
235
- namespace internal {
236
-
237
- // TlsCheckHostName checks if |peer_name| matches the identity information
238
- // contained in |peer|. This is AKA hostname check.
239
- grpc_error_handle TlsCheckHostName(const char* peer_name, const tsi_peer* peer);
240
-
241
- } // namespace internal
242
-
243
264
  } // namespace grpc_core
244
265
 
245
266
  #endif // GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_TLS_TLS_SECURITY_CONNECTOR_H
@@ -33,4 +33,11 @@ void grpc_auth_metadata_context_build(
33
33
  const grpc_slice& call_method, grpc_auth_context* auth_context,
34
34
  grpc_auth_metadata_context* auth_md_context);
35
35
 
36
+ // Exposed for testing purposes only.
37
+ // Check if the channel's security level is higher or equal to
38
+ // that of call credentials to make a decision whether the transfer
39
+ // of call credentials should be allowed or not.
40
+ bool grpc_check_security_level(grpc_security_level channel_level,
41
+ grpc_security_level call_cred_level);
42
+
36
43
  #endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_AUTH_FILTERS_H */
@@ -30,16 +30,15 @@
30
30
 
31
31
  #include "src/core/lib/channel/channel_stack.h"
32
32
  #include "src/core/lib/gpr/string.h"
33
+ #include "src/core/lib/iomgr/error.h"
33
34
  #include "src/core/lib/profiling/timers.h"
34
35
  #include "src/core/lib/security/context/security_context.h"
35
36
  #include "src/core/lib/security/credentials/credentials.h"
36
37
  #include "src/core/lib/security/security_connector/security_connector.h"
37
- #include "src/core/lib/security/security_connector/ssl_utils.h"
38
38
  #include "src/core/lib/security/transport/auth_filters.h"
39
39
  #include "src/core/lib/slice/slice_internal.h"
40
40
  #include "src/core/lib/slice/slice_string_helpers.h"
41
41
  #include "src/core/lib/surface/call.h"
42
- #include "src/core/lib/transport/static_metadata.h"
43
42
 
44
43
  #define MAX_CREDENTIALS_METADATA_COUNT 4
45
44
 
@@ -65,6 +64,9 @@ struct channel_data {
65
64
  struct call_data {
66
65
  call_data(grpc_call_element* elem, const grpc_call_element_args& args)
67
66
  : owning_call(args.call_stack), call_combiner(args.call_combiner) {
67
+ host.Init();
68
+ method.Init();
69
+ md_array.Init();
68
70
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
69
71
  GPR_ASSERT(args.context != nullptr);
70
72
  if (args.context[GRPC_CONTEXT_SECURITY].value == nullptr) {
@@ -87,25 +89,24 @@ struct call_data {
87
89
  // fields will be accessed after calling dtor, and msan correctly complains
88
90
  // that the memory is not initialized.
89
91
  void destroy() {
90
- grpc_credentials_mdelem_array_destroy(&md_array);
92
+ md_array.Destroy();
91
93
  creds.reset();
92
- grpc_slice_unref_internal(host);
93
- grpc_slice_unref_internal(method);
94
94
  grpc_auth_metadata_context_reset(&auth_md_context);
95
+ host.Destroy();
96
+ method.Destroy();
95
97
  }
96
98
 
97
99
  grpc_call_stack* owning_call;
98
100
  grpc_core::CallCombiner* call_combiner;
99
101
  grpc_core::RefCountedPtr<grpc_call_credentials> creds;
100
- grpc_slice host = grpc_empty_slice();
101
- grpc_slice method = grpc_empty_slice();
102
+ grpc_core::ManualConstructor<grpc_core::Slice> host;
103
+ grpc_core::ManualConstructor<grpc_core::Slice> method;
102
104
  /* pollset{_set} bound to this call; if we need to make external
103
105
  network requests, they should be done under a pollset added to this
104
106
  pollset_set so that work can progress when this call wants work to progress
105
107
  */
106
108
  grpc_polling_entity* pollent = nullptr;
107
- grpc_credentials_mdelem_array md_array;
108
- grpc_linked_mdelem md_links[MAX_CREDENTIALS_METADATA_COUNT] = {};
109
+ grpc_core::ManualConstructor<grpc_core::CredentialsMetadataArray> md_array;
109
110
  grpc_auth_metadata_context auth_md_context =
110
111
  grpc_auth_metadata_context(); // Zero-initialize the C struct.
111
112
  grpc_closure async_result_closure;
@@ -163,17 +164,20 @@ static void on_credentials_metadata(void* arg, grpc_error_handle input_error) {
163
164
  grpc_auth_metadata_context_reset(&calld->auth_md_context);
164
165
  grpc_error_handle error = GRPC_ERROR_REF(input_error);
165
166
  if (error == GRPC_ERROR_NONE) {
166
- GPR_ASSERT(calld->md_array.size <= MAX_CREDENTIALS_METADATA_COUNT);
167
+ GPR_ASSERT(calld->md_array->size() <= MAX_CREDENTIALS_METADATA_COUNT);
167
168
  GPR_ASSERT(batch->send_initial_metadata);
168
169
  grpc_metadata_batch* mdb =
169
170
  batch->payload->send_initial_metadata.send_initial_metadata;
170
- for (size_t i = 0; i < calld->md_array.size; ++i) {
171
- add_error(&error, grpc_metadata_batch_add_tail(
172
- mdb, &calld->md_links[i],
173
- GRPC_MDELEM_REF(calld->md_array.md[i])));
171
+ for (const auto& md : *calld->md_array) {
172
+ mdb->Append(
173
+ md.first.as_string_view(), md.second.Ref(),
174
+ [&](absl::string_view error_message, const grpc_core::Slice& value) {
175
+ add_error(&error, GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
176
+ "on_credentials_metadata: ", error_message,
177
+ ": ", md.first.as_string_view(), ": ",
178
+ value.as_string_view())));
179
+ });
174
180
  }
175
- }
176
- if (error == GRPC_ERROR_NONE) {
177
181
  grpc_call_next_op(elem, batch);
178
182
  } else {
179
183
  error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
@@ -228,12 +232,27 @@ static void cancel_get_request_metadata(void* arg, grpc_error_handle error) {
228
232
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
229
233
  call_data* calld = static_cast<call_data*>(elem->call_data);
230
234
  if (error != GRPC_ERROR_NONE) {
231
- calld->creds->cancel_get_request_metadata(&calld->md_array,
235
+ calld->creds->cancel_get_request_metadata(&*calld->md_array,
232
236
  GRPC_ERROR_REF(error));
233
237
  }
234
238
  GRPC_CALL_STACK_UNREF(calld->owning_call, "cancel_get_request_metadata");
235
239
  }
236
240
 
241
+ static grpc_security_level convert_security_level_string_to_enum(
242
+ const char* security_level) {
243
+ if (strcmp(security_level, "TSI_INTEGRITY_ONLY") == 0) {
244
+ return GRPC_INTEGRITY_ONLY;
245
+ } else if (strcmp(security_level, "TSI_PRIVACY_AND_INTEGRITY") == 0) {
246
+ return GRPC_PRIVACY_AND_INTEGRITY;
247
+ }
248
+ return GRPC_SECURITY_NONE;
249
+ }
250
+
251
+ bool grpc_check_security_level(grpc_security_level channel_level,
252
+ grpc_security_level call_cred_level) {
253
+ return static_cast<int>(channel_level) >= static_cast<int>(call_cred_level);
254
+ }
255
+
237
256
  static void send_security_metadata(grpc_call_element* elem,
238
257
  grpc_transport_stream_op_batch* batch) {
239
258
  call_data* calld = static_cast<call_data*>(elem->call_data);
@@ -289,7 +308,7 @@ static void send_security_metadata(grpc_call_element* elem,
289
308
  grpc_security_level call_cred_security_level =
290
309
  calld->creds->min_security_level();
291
310
  int is_security_level_ok = grpc_check_security_level(
292
- grpc_tsi_security_level_string_to_enum(prop->value),
311
+ convert_security_level_string_to_enum(prop->value),
293
312
  call_cred_security_level);
294
313
  if (!is_security_level_ok) {
295
314
  grpc_transport_stream_op_batch_finish_with_failure(
@@ -304,8 +323,9 @@ static void send_security_metadata(grpc_call_element* elem,
304
323
  }
305
324
 
306
325
  grpc_auth_metadata_context_build(
307
- chand->security_connector->url_scheme(), calld->host, calld->method,
308
- chand->auth_context.get(), &calld->auth_md_context);
326
+ chand->security_connector->url_scheme(), calld->host->c_slice(),
327
+ calld->method->c_slice(), chand->auth_context.get(),
328
+ &calld->auth_md_context);
309
329
 
310
330
  GPR_ASSERT(calld->pollent != nullptr);
311
331
  GRPC_CALL_STACK_REF(calld->owning_call, "get_request_metadata");
@@ -313,7 +333,7 @@ static void send_security_metadata(grpc_call_element* elem,
313
333
  batch, grpc_schedule_on_exec_ctx);
314
334
  grpc_error_handle error = GRPC_ERROR_NONE;
315
335
  if (calld->creds->get_request_metadata(
316
- calld->pollent, calld->auth_md_context, &calld->md_array,
336
+ calld->pollent, calld->auth_md_context, &*calld->md_array,
317
337
  &calld->async_result_closure, &error)) {
318
338
  // Synchronous return; invoke on_credentials_metadata() directly.
319
339
  on_credentials_metadata(batch, error);
@@ -340,11 +360,11 @@ static void on_host_checked(void* arg, grpc_error_handle error) {
340
360
  } else {
341
361
  grpc_transport_stream_op_batch_finish_with_failure(
342
362
  batch,
343
- grpc_error_set_int(
344
- GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
345
- "Invalid host ", grpc_core::StringViewFromSlice(calld->host),
346
- " set in :authority metadata.")),
347
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAUTHENTICATED),
363
+ grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
364
+ "Invalid host ", calld->host->as_string_view(),
365
+ " set in :authority metadata.")),
366
+ GRPC_ERROR_INT_GRPC_STATUS,
367
+ GRPC_STATUS_UNAUTHENTICATED),
348
368
  calld->call_combiner);
349
369
  }
350
370
  GRPC_CALL_STACK_UNREF(calld->owning_call, "check_call_host");
@@ -372,18 +392,18 @@ static void client_auth_start_transport_stream_op_batch(
372
392
  if (batch->send_initial_metadata) {
373
393
  grpc_metadata_batch* metadata =
374
394
  batch->payload->send_initial_metadata.send_initial_metadata;
375
- if (metadata->idx.named.path != nullptr) {
376
- calld->method =
377
- grpc_slice_ref_internal(GRPC_MDVALUE(metadata->idx.named.path->md));
395
+ if (metadata->get_pointer(grpc_core::HttpPathMetadata()) != nullptr) {
396
+ *calld->method =
397
+ metadata->get_pointer(grpc_core::HttpPathMetadata())->Ref();
378
398
  }
379
- if (metadata->idx.named.authority != nullptr) {
380
- calld->host = grpc_slice_ref_internal(
381
- GRPC_MDVALUE(metadata->idx.named.authority->md));
399
+ if (metadata->get_pointer(grpc_core::HttpAuthorityMetadata()) != nullptr) {
400
+ *calld->host =
401
+ metadata->get_pointer(grpc_core::HttpAuthorityMetadata())->Ref();
382
402
  batch->handler_private.extra_arg = elem;
383
403
  GRPC_CALL_STACK_REF(calld->owning_call, "check_call_host");
384
404
  GRPC_CLOSURE_INIT(&calld->async_result_closure, on_host_checked, batch,
385
405
  grpc_schedule_on_exec_ctx);
386
- absl::string_view call_host(grpc_core::StringViewFromSlice(calld->host));
406
+ absl::string_view call_host = calld->host->as_string_view();
387
407
  grpc_error_handle error = GRPC_ERROR_NONE;
388
408
  if (chand->security_connector->check_call_host(
389
409
  call_host, chand->auth_context.get(),
@@ -116,13 +116,10 @@ SecurityHandshaker::SecurityHandshaker(tsi_handshaker* handshaker,
116
116
  connector_(connector->Ref(DEBUG_LOCATION, "handshake")),
117
117
  handshake_buffer_size_(GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE),
118
118
  handshake_buffer_(
119
- static_cast<uint8_t*>(gpr_malloc(handshake_buffer_size_))) {
120
- const grpc_arg* arg =
121
- grpc_channel_args_find(args, GRPC_ARG_TSI_MAX_FRAME_SIZE);
122
- if (arg != nullptr && arg->type == GRPC_ARG_INTEGER) {
123
- max_frame_size_ = grpc_channel_arg_get_integer(
124
- arg, {0, 0, std::numeric_limits<int>::max()});
125
- }
119
+ static_cast<uint8_t*>(gpr_malloc(handshake_buffer_size_))),
120
+ max_frame_size_(grpc_channel_args_find_integer(
121
+ args, GRPC_ARG_TSI_MAX_FRAME_SIZE,
122
+ {0, 0, std::numeric_limits<int>::max()})) {
126
123
  grpc_slice_buffer_init(&outgoing_);
127
124
  GRPC_CLOSURE_INIT(&on_peer_checked_, &SecurityHandshaker::OnPeerCheckedFn,
128
125
  this, grpc_schedule_on_exec_ctx);
@@ -232,49 +229,83 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
232
229
  HandshakeFailedLocked(error);
233
230
  return;
234
231
  }
235
- // Create zero-copy frame protector, if implemented.
236
- tsi_zero_copy_grpc_protector* zero_copy_protector = nullptr;
237
- tsi_result result = tsi_handshaker_result_create_zero_copy_grpc_protector(
238
- handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
239
- &zero_copy_protector);
240
- if (result != TSI_OK && result != TSI_UNIMPLEMENTED) {
241
- error = grpc_set_tsi_error_result(
232
+ // Get unused bytes.
233
+ const unsigned char* unused_bytes = nullptr;
234
+ size_t unused_bytes_size = 0;
235
+ tsi_result result = tsi_handshaker_result_get_unused_bytes(
236
+ handshaker_result_, &unused_bytes, &unused_bytes_size);
237
+ if (result != TSI_OK) {
238
+ HandshakeFailedLocked(grpc_set_tsi_error_result(
242
239
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
243
- "Zero-copy frame protector creation failed"),
244
- result);
245
- HandshakeFailedLocked(error);
240
+ "TSI handshaker result does not provide unused bytes"),
241
+ result));
242
+ return;
243
+ }
244
+ // Check whether we need to wrap the endpoint.
245
+ tsi_frame_protector_type frame_protector_type;
246
+ result = tsi_handshaker_result_get_frame_protector_type(
247
+ handshaker_result_, &frame_protector_type);
248
+ if (result != TSI_OK) {
249
+ HandshakeFailedLocked(grpc_set_tsi_error_result(
250
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
251
+ "TSI handshaker result does not implement "
252
+ "get_frame_protector_type"),
253
+ result));
246
254
  return;
247
255
  }
248
- // Create frame protector if zero-copy frame protector is NULL.
256
+ tsi_zero_copy_grpc_protector* zero_copy_protector = nullptr;
249
257
  tsi_frame_protector* protector = nullptr;
250
- if (zero_copy_protector == nullptr) {
251
- result = tsi_handshaker_result_create_frame_protector(
252
- handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
253
- &protector);
254
- if (result != TSI_OK) {
255
- error = grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
256
- "Frame protector creation failed"),
257
- result);
258
- HandshakeFailedLocked(error);
259
- return;
260
- }
258
+ switch (frame_protector_type) {
259
+ case TSI_FRAME_PROTECTOR_ZERO_COPY:
260
+ ABSL_FALLTHROUGH_INTENDED;
261
+ case TSI_FRAME_PROTECTOR_NORMAL_OR_ZERO_COPY:
262
+ // Create zero-copy frame protector.
263
+ result = tsi_handshaker_result_create_zero_copy_grpc_protector(
264
+ handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
265
+ &zero_copy_protector);
266
+ if (result != TSI_OK) {
267
+ HandshakeFailedLocked(grpc_set_tsi_error_result(
268
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
269
+ "Zero-copy frame protector creation failed"),
270
+ result));
271
+ return;
272
+ }
273
+ break;
274
+ case TSI_FRAME_PROTECTOR_NORMAL:
275
+ // Create normal frame protector.
276
+ result = tsi_handshaker_result_create_frame_protector(
277
+ handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
278
+ &protector);
279
+ if (result != TSI_OK) {
280
+ HandshakeFailedLocked(
281
+ grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
282
+ "Frame protector creation failed"),
283
+ result));
284
+ return;
285
+ }
286
+ break;
287
+ case TSI_FRAME_PROTECTOR_NONE:
288
+ break;
261
289
  }
262
- // Get unused bytes.
263
- const unsigned char* unused_bytes = nullptr;
264
- size_t unused_bytes_size = 0;
265
- result = tsi_handshaker_result_get_unused_bytes(
266
- handshaker_result_, &unused_bytes, &unused_bytes_size);
267
- // Create secure endpoint.
268
- if (unused_bytes_size > 0) {
290
+ // If we have a frame protector, create a secure endpoint.
291
+ if (zero_copy_protector != nullptr || protector != nullptr) {
292
+ if (unused_bytes_size > 0) {
293
+ grpc_slice slice = grpc_slice_from_copied_buffer(
294
+ reinterpret_cast<const char*>(unused_bytes), unused_bytes_size);
295
+ args_->endpoint = grpc_secure_endpoint_create(
296
+ protector, zero_copy_protector, args_->endpoint, &slice, 1);
297
+ grpc_slice_unref_internal(slice);
298
+ } else {
299
+ args_->endpoint = grpc_secure_endpoint_create(
300
+ protector, zero_copy_protector, args_->endpoint, nullptr, 0);
301
+ }
302
+ } else if (unused_bytes_size > 0) {
303
+ // Not wrapping the endpoint, so just pass along unused bytes.
269
304
  grpc_slice slice = grpc_slice_from_copied_buffer(
270
305
  reinterpret_cast<const char*>(unused_bytes), unused_bytes_size);
271
- args_->endpoint = grpc_secure_endpoint_create(
272
- protector, zero_copy_protector, args_->endpoint, &slice, 1);
273
- grpc_slice_unref_internal(slice);
274
- } else {
275
- args_->endpoint = grpc_secure_endpoint_create(
276
- protector, zero_copy_protector, args_->endpoint, nullptr, 0);
306
+ grpc_slice_buffer_add(args_->read_buffer, slice);
277
307
  }
308
+ // Done with handshaker result.
278
309
  tsi_handshaker_result_destroy(handshaker_result_);
279
310
  handshaker_result_ = nullptr;
280
311
  // Add auth context to channel args.
@@ -409,7 +440,7 @@ grpc_error_handle SecurityHandshaker::DoHandshakerNextLocked(
409
440
  void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler(
410
441
  void* arg, grpc_error_handle error) {
411
442
  SecurityHandshaker* h = static_cast<SecurityHandshaker*>(arg);
412
- grpc_core::ExecCtx::Run(
443
+ ExecCtx::Run(
413
444
  DEBUG_LOCATION,
414
445
  GRPC_CLOSURE_INIT(&h->on_handshake_data_received_from_peer_,
415
446
  &SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn,
@@ -430,7 +461,6 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
430
461
  size_t bytes_received_size = h->MoveReadBufferIntoHandshakeBuffer();
431
462
  // Call TSI handshaker.
432
463
  error = h->DoHandshakerNextLocked(h->handshake_buffer_, bytes_received_size);
433
-
434
464
  if (error != GRPC_ERROR_NONE) {
435
465
  h->HandshakeFailedLocked(error);
436
466
  } else {
@@ -443,7 +473,7 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
443
473
  void SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler(
444
474
  void* arg, grpc_error_handle error) {
445
475
  SecurityHandshaker* h = static_cast<SecurityHandshaker*>(arg);
446
- grpc_core::ExecCtx::Run(
476
+ ExecCtx::Run(
447
477
  DEBUG_LOCATION,
448
478
  GRPC_CLOSURE_INIT(&h->on_handshake_data_sent_to_peer_,
449
479
  &SecurityHandshaker::OnHandshakeDataSentToPeerFn, h,
@@ -86,51 +86,55 @@ struct call_data {
86
86
  grpc_error_handle recv_trailing_metadata_error;
87
87
  bool seen_recv_trailing_metadata_ready = false;
88
88
  grpc_metadata_array md;
89
- const grpc_metadata* consumed_md;
90
- size_t num_consumed_md;
91
89
  grpc_closure cancel_closure;
92
90
  gpr_atm state = STATE_INIT; // async_state
93
91
  };
94
92
 
93
+ class ArrayEncoder {
94
+ public:
95
+ explicit ArrayEncoder(grpc_metadata_array* result) : result_(result) {}
96
+
97
+ void Encode(const grpc_core::Slice& key, const grpc_core::Slice& value) {
98
+ Append(key.Ref(), value.Ref());
99
+ }
100
+
101
+ template <typename Which>
102
+ void Encode(Which, const typename Which::ValueType& value) {
103
+ Append(grpc_core::Slice(
104
+ grpc_core::StaticSlice::FromStaticString(Which::key())),
105
+ grpc_core::Slice(Which::Encode(value)));
106
+ }
107
+
108
+ void Encode(grpc_core::HttpMethodMetadata,
109
+ const typename grpc_core::HttpMethodMetadata::ValueType&) {}
110
+
111
+ private:
112
+ void Append(grpc_core::Slice key, grpc_core::Slice value) {
113
+ if (result_->count == result_->capacity) {
114
+ result_->capacity =
115
+ std::max(result_->capacity + 8, result_->capacity * 2);
116
+ result_->metadata = static_cast<grpc_metadata*>(gpr_realloc(
117
+ result_->metadata, result_->capacity * sizeof(grpc_metadata)));
118
+ }
119
+ auto* usr_md = &result_->metadata[result_->count++];
120
+ usr_md->key = key.TakeCSlice();
121
+ usr_md->value = value.TakeCSlice();
122
+ }
123
+
124
+ grpc_metadata_array* result_;
125
+ };
126
+
95
127
  } // namespace
96
128
 
97
129
  static grpc_metadata_array metadata_batch_to_md_array(
98
130
  const grpc_metadata_batch* batch) {
99
- grpc_linked_mdelem* l;
100
131
  grpc_metadata_array result;
101
132
  grpc_metadata_array_init(&result);
102
- for (l = batch->list.head; l != nullptr; l = l->next) {
103
- grpc_metadata* usr_md = nullptr;
104
- grpc_mdelem md = l->md;
105
- grpc_slice key = GRPC_MDKEY(md);
106
- grpc_slice value = GRPC_MDVALUE(md);
107
- if (result.count == result.capacity) {
108
- result.capacity = GPR_MAX(result.capacity + 8, result.capacity * 2);
109
- result.metadata = static_cast<grpc_metadata*>(gpr_realloc(
110
- result.metadata, result.capacity * sizeof(grpc_metadata)));
111
- }
112
- usr_md = &result.metadata[result.count++];
113
- usr_md->key = grpc_slice_ref_internal(key);
114
- usr_md->value = grpc_slice_ref_internal(value);
115
- }
133
+ ArrayEncoder encoder(&result);
134
+ batch->Encode(&encoder);
116
135
  return result;
117
136
  }
118
137
 
119
- static grpc_filtered_mdelem remove_consumed_md(void* user_data,
120
- grpc_mdelem md) {
121
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
122
- call_data* calld = static_cast<call_data*>(elem->call_data);
123
- size_t i;
124
- for (i = 0; i < calld->num_consumed_md; i++) {
125
- const grpc_metadata* consumed_md = &calld->consumed_md[i];
126
- if (grpc_slice_eq(GRPC_MDKEY(md), consumed_md->key) &&
127
- grpc_slice_eq(GRPC_MDVALUE(md), consumed_md->value)) {
128
- return GRPC_FILTERED_REMOVE();
129
- }
130
- }
131
- return GRPC_FILTERED_MDELEM(md);
132
- }
133
-
134
138
  static void on_md_processing_done_inner(grpc_call_element* elem,
135
139
  const grpc_metadata* consumed_md,
136
140
  size_t num_consumed_md,
@@ -146,11 +150,10 @@ static void on_md_processing_done_inner(grpc_call_element* elem,
146
150
  "Ignoring...");
147
151
  }
148
152
  if (error == GRPC_ERROR_NONE) {
149
- calld->consumed_md = consumed_md;
150
- calld->num_consumed_md = num_consumed_md;
151
- error = grpc_metadata_batch_filter(
152
- batch->payload->recv_initial_metadata.recv_initial_metadata,
153
- remove_consumed_md, elem, "Response metadata filtering error");
153
+ for (size_t i = 0; i < num_consumed_md; i++) {
154
+ batch->payload->recv_initial_metadata.recv_initial_metadata->Remove(
155
+ grpc_core::StringViewFromSlice(consumed_md[i].key));
156
+ }
154
157
  }
155
158
  calld->recv_initial_metadata_error = GRPC_ERROR_REF(error);
156
159
  grpc_closure* closure = calld->original_recv_initial_metadata_ready;
@@ -22,9 +22,7 @@
22
22
 
23
23
  grpc_error_handle grpc_set_tsi_error_result(grpc_error_handle error,
24
24
  tsi_result result) {
25
- return grpc_error_set_int(
26
- grpc_error_set_str(
27
- error, GRPC_ERROR_STR_TSI_ERROR,
28
- grpc_slice_from_static_string(tsi_result_to_string(result))),
29
- GRPC_ERROR_INT_TSI_CODE, result);
25
+ return grpc_error_set_int(grpc_error_set_str(error, GRPC_ERROR_STR_TSI_ERROR,
26
+ tsi_result_to_string(result)),
27
+ GRPC_ERROR_INT_TSI_CODE, result);
30
28
  }