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
@@ -29,41 +29,18 @@
29
29
 
30
30
  namespace tsi {
31
31
 
32
- static void cache_key_avl_destroy(void* /*key*/, void* /*unused*/) {}
33
-
34
- static void* cache_key_avl_copy(void* key, void* /*unused*/) { return key; }
35
-
36
- static long cache_key_avl_compare(void* key1, void* key2, void* /*unused*/) {
37
- return grpc_slice_cmp(*static_cast<grpc_slice*>(key1),
38
- *static_cast<grpc_slice*>(key2));
39
- }
40
-
41
- static void cache_value_avl_destroy(void* /*value*/, void* /*unused*/) {}
42
-
43
- static void* cache_value_avl_copy(void* value, void* /*unused*/) {
44
- return value;
45
- }
46
-
47
- // AVL only stores pointers, ownership belonges to the linked list.
48
- static const grpc_avl_vtable cache_avl_vtable = {
49
- cache_key_avl_destroy, cache_key_avl_copy, cache_key_avl_compare,
50
- cache_value_avl_destroy, cache_value_avl_copy,
51
- };
52
-
53
32
  /// Node for single cached session.
54
33
  class SslSessionLRUCache::Node {
55
34
  public:
56
- Node(const grpc_slice& key, SslSessionPtr session) : key_(key) {
35
+ Node(const std::string& key, SslSessionPtr session) : key_(key) {
57
36
  SetSession(std::move(session));
58
37
  }
59
38
 
60
- ~Node() { grpc_slice_unref_internal(key_); }
61
-
62
39
  // Not copyable nor movable.
63
40
  Node(const Node&) = delete;
64
41
  Node& operator=(const Node&) = delete;
65
42
 
66
- void* AvlKey() { return &key_; }
43
+ const std::string& key() const { return key_; }
67
44
 
68
45
  /// Returns a copy of the node's cache session.
69
46
  SslSessionPtr CopySession() const { return session_->CopySession(); }
@@ -76,7 +53,7 @@ class SslSessionLRUCache::Node {
76
53
  private:
77
54
  friend class SslSessionLRUCache;
78
55
 
79
- grpc_slice key_;
56
+ std::string key_;
80
57
  std::unique_ptr<SslCachedSession> session_;
81
58
 
82
59
  Node* next_ = nullptr;
@@ -85,7 +62,6 @@ class SslSessionLRUCache::Node {
85
62
 
86
63
  SslSessionLRUCache::SslSessionLRUCache(size_t capacity) : capacity_(capacity) {
87
64
  GPR_ASSERT(capacity > 0);
88
- entry_by_key_ = grpc_avl_create(&cache_avl_vtable);
89
65
  }
90
66
 
91
67
  SslSessionLRUCache::~SslSessionLRUCache() {
@@ -95,7 +71,6 @@ SslSessionLRUCache::~SslSessionLRUCache() {
95
71
  delete node;
96
72
  node = next;
97
73
  }
98
- grpc_avl_unref(entry_by_key_, nullptr);
99
74
  }
100
75
 
101
76
  size_t SslSessionLRUCache::Size() {
@@ -104,13 +79,12 @@ size_t SslSessionLRUCache::Size() {
104
79
  }
105
80
 
106
81
  SslSessionLRUCache::Node* SslSessionLRUCache::FindLocked(
107
- const grpc_slice& key) {
108
- void* value =
109
- grpc_avl_get(entry_by_key_, const_cast<grpc_slice*>(&key), nullptr);
110
- if (value == nullptr) {
82
+ const std::string& key) {
83
+ auto it = entry_by_key_.find(key);
84
+ if (it == entry_by_key_.end()) {
111
85
  return nullptr;
112
86
  }
113
- Node* node = static_cast<Node*>(value);
87
+ Node* node = it->second;
114
88
  // Move to the beginning.
115
89
  Remove(node);
116
90
  PushFront(node);
@@ -120,22 +94,21 @@ SslSessionLRUCache::Node* SslSessionLRUCache::FindLocked(
120
94
 
121
95
  void SslSessionLRUCache::Put(const char* key, SslSessionPtr session) {
122
96
  grpc_core::MutexLock lock(&lock_);
123
- Node* node = FindLocked(grpc_slice_from_static_string(key));
97
+ Node* node = FindLocked(key);
124
98
  if (node != nullptr) {
125
99
  node->SetSession(std::move(session));
126
100
  return;
127
101
  }
128
- grpc_slice key_slice = grpc_slice_from_copied_string(key);
129
- node = new Node(key_slice, std::move(session));
102
+ node = new Node(key, std::move(session));
130
103
  PushFront(node);
131
- entry_by_key_ = grpc_avl_add(entry_by_key_, node->AvlKey(), node, nullptr);
104
+ entry_by_key_.emplace(key, node);
132
105
  AssertInvariants();
133
106
  if (use_order_list_size_ > capacity_) {
134
107
  GPR_ASSERT(use_order_list_tail_);
135
108
  node = use_order_list_tail_;
136
109
  Remove(node);
137
110
  // Order matters, key is destroyed after deleting node.
138
- entry_by_key_ = grpc_avl_remove(entry_by_key_, node->AvlKey(), nullptr);
111
+ entry_by_key_.erase(node->key());
139
112
  delete node;
140
113
  AssertInvariants();
141
114
  }
@@ -144,8 +117,7 @@ void SslSessionLRUCache::Put(const char* key, SslSessionPtr session) {
144
117
  SslSessionPtr SslSessionLRUCache::Get(const char* key) {
145
118
  grpc_core::MutexLock lock(&lock_);
146
119
  // Key is only used for lookups.
147
- grpc_slice key_slice = grpc_slice_from_static_string(key);
148
- Node* node = FindLocked(key_slice);
120
+ Node* node = FindLocked(key);
149
121
  if (node == nullptr) {
150
122
  return nullptr;
151
123
  }
@@ -183,13 +155,6 @@ void SslSessionLRUCache::PushFront(SslSessionLRUCache::Node* node) {
183
155
  }
184
156
 
185
157
  #ifndef NDEBUG
186
- static size_t calculate_tree_size(grpc_avl_node* node) {
187
- if (node == nullptr) {
188
- return 0;
189
- }
190
- return 1 + calculate_tree_size(node->left) + calculate_tree_size(node->right);
191
- }
192
-
193
158
  void SslSessionLRUCache::AssertInvariants() {
194
159
  size_t size = 0;
195
160
  Node* prev = nullptr;
@@ -197,14 +162,15 @@ void SslSessionLRUCache::AssertInvariants() {
197
162
  while (current != nullptr) {
198
163
  size++;
199
164
  GPR_ASSERT(current->prev_ == prev);
200
- void* node = grpc_avl_get(entry_by_key_, current->AvlKey(), nullptr);
201
- GPR_ASSERT(node == current);
165
+ auto it = entry_by_key_.find(current->key());
166
+ GPR_ASSERT(it != entry_by_key_.end());
167
+ GPR_ASSERT(it->second == current);
202
168
  prev = current;
203
169
  current = current->next_;
204
170
  }
205
171
  GPR_ASSERT(prev == use_order_list_tail_);
206
172
  GPR_ASSERT(size == use_order_list_size_);
207
- GPR_ASSERT(calculate_tree_size(entry_by_key_.root) == use_order_list_size_);
173
+ GPR_ASSERT(entry_by_key_.size() == use_order_list_size_);
208
174
  }
209
175
  #else
210
176
  void SslSessionLRUCache::AssertInvariants() {}
@@ -21,14 +21,13 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <grpc/slice.h>
25
- #include <grpc/support/sync.h>
24
+ #include <map>
26
25
 
27
- extern "C" {
28
26
  #include <openssl/ssl.h>
29
- }
30
27
 
31
- #include "src/core/lib/avl/avl.h"
28
+ #include <grpc/slice.h>
29
+ #include <grpc/support/sync.h>
30
+
32
31
  #include "src/core/lib/gprpp/memory.h"
33
32
  #include "src/core/lib/gprpp/ref_counted.h"
34
33
  #include "src/core/lib/gprpp/sync.h"
@@ -72,7 +71,7 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
72
71
  private:
73
72
  class Node;
74
73
 
75
- Node* FindLocked(const grpc_slice& key);
74
+ Node* FindLocked(const std::string& key);
76
75
  void Remove(Node* node);
77
76
  void PushFront(Node* node);
78
77
  void AssertInvariants();
@@ -83,7 +82,7 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
83
82
  Node* use_order_list_head_ = nullptr;
84
83
  Node* use_order_list_tail_ = nullptr;
85
84
  size_t use_order_list_size_ = 0;
86
- grpc_avl entry_by_key_;
85
+ std::map<std::string, Node*> entry_by_key_;
87
86
  };
88
87
 
89
88
  } // namespace tsi
@@ -35,6 +35,15 @@
35
35
 
36
36
  #include <string>
37
37
 
38
+ #include <openssl/bio.h>
39
+ #include <openssl/crypto.h> /* For OPENSSL_free */
40
+ #include <openssl/engine.h>
41
+ #include <openssl/err.h>
42
+ #include <openssl/ssl.h>
43
+ #include <openssl/tls1.h>
44
+ #include <openssl/x509.h>
45
+ #include <openssl/x509v3.h>
46
+
38
47
  #include "absl/strings/match.h"
39
48
  #include "absl/strings/string_view.h"
40
49
 
@@ -45,17 +54,6 @@
45
54
  #include <grpc/support/sync.h>
46
55
  #include <grpc/support/thd_id.h>
47
56
 
48
- extern "C" {
49
- #include <openssl/bio.h>
50
- #include <openssl/crypto.h> /* For OPENSSL_free */
51
- #include <openssl/engine.h>
52
- #include <openssl/err.h>
53
- #include <openssl/ssl.h>
54
- #include <openssl/tls1.h>
55
- #include <openssl/x509.h>
56
- #include <openssl/x509v3.h>
57
- }
58
-
59
57
  #include "src/core/lib/gpr/useful.h"
60
58
  #include "src/core/tsi/ssl/session_cache/ssl_session_cache.h"
61
59
  #include "src/core/tsi/ssl_types.h"
@@ -323,6 +321,30 @@ static tsi_result peer_property_from_x509_common_name(
323
321
  return result;
324
322
  }
325
323
 
324
+ /* Gets the subject of an X509 cert as a tsi_peer_property. */
325
+ static tsi_result peer_property_from_x509_subject(X509* cert,
326
+ tsi_peer_property* property) {
327
+ X509_NAME* subject_name = X509_get_subject_name(cert);
328
+ if (subject_name == nullptr) {
329
+ gpr_log(GPR_INFO, "Could not get subject name from certificate.");
330
+ return TSI_NOT_FOUND;
331
+ }
332
+ BIO* bio = BIO_new(BIO_s_mem());
333
+ X509_NAME_print_ex(bio, subject_name, 0, XN_FLAG_RFC2253);
334
+ char* contents;
335
+ long len = BIO_get_mem_data(bio, &contents);
336
+ if (len < 0) {
337
+ gpr_log(GPR_ERROR, "Could not get subject entry from certificate.");
338
+ BIO_free(bio);
339
+ return TSI_INTERNAL_ERROR;
340
+ }
341
+ tsi_result result = tsi_construct_string_peer_property(
342
+ TSI_X509_SUBJECT_PEER_PROPERTY, contents, static_cast<size_t>(len),
343
+ property);
344
+ BIO_free(bio);
345
+ return result;
346
+ }
347
+
326
348
  /* Gets the X509 cert in PEM format as a tsi_peer_property. */
327
349
  static tsi_result add_pem_certificate(X509* cert, tsi_peer_property* property) {
328
350
  BIO* bio = BIO_new(BIO_s_mem());
@@ -439,7 +461,7 @@ static tsi_result peer_from_x509(X509* cert, int include_certificate_type,
439
461
  tsi_result result;
440
462
  GPR_ASSERT(subject_alt_name_count >= 0);
441
463
  property_count = (include_certificate_type ? static_cast<size_t>(1) : 0) +
442
- 2 /* common name, certificate */ +
464
+ 3 /* subject, common name, certificate */ +
443
465
  static_cast<size_t>(subject_alt_name_count);
444
466
  for (int i = 0; i < subject_alt_name_count; i++) {
445
467
  GENERAL_NAME* subject_alt_name =
@@ -465,6 +487,11 @@ static tsi_result peer_from_x509(X509* cert, int include_certificate_type,
465
487
  &peer->properties[current_insert_index++]);
466
488
  if (result != TSI_OK) break;
467
489
  }
490
+
491
+ result = peer_property_from_x509_subject(
492
+ cert, &peer->properties[current_insert_index++]);
493
+ if (result != TSI_OK) break;
494
+
468
495
  result = peer_property_from_x509_common_name(
469
496
  cert, &peer->properties[current_insert_index++]);
470
497
  if (result != TSI_OK) break;
@@ -1302,6 +1329,13 @@ static tsi_result ssl_handshaker_result_extract_peer(
1302
1329
  return result;
1303
1330
  }
1304
1331
 
1332
+ static tsi_result ssl_handshaker_result_get_frame_protector_type(
1333
+ const tsi_handshaker_result* /*self*/,
1334
+ tsi_frame_protector_type* frame_protector_type) {
1335
+ *frame_protector_type = TSI_FRAME_PROTECTOR_NORMAL;
1336
+ return TSI_OK;
1337
+ }
1338
+
1305
1339
  static tsi_result ssl_handshaker_result_create_frame_protector(
1306
1340
  const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
1307
1341
  tsi_frame_protector** protector) {
@@ -1368,6 +1402,7 @@ static void ssl_handshaker_result_destroy(tsi_handshaker_result* self) {
1368
1402
 
1369
1403
  static const tsi_handshaker_result_vtable handshaker_result_vtable = {
1370
1404
  ssl_handshaker_result_extract_peer,
1405
+ ssl_handshaker_result_get_frame_protector_type,
1371
1406
  nullptr, /* create_zero_copy_grpc_protector */
1372
1407
  ssl_handshaker_result_create_frame_protector,
1373
1408
  ssl_handshaker_result_get_unused_bytes,
@@ -1382,7 +1417,7 @@ static tsi_result ssl_handshaker_result_create(
1382
1417
  return TSI_INVALID_ARGUMENT;
1383
1418
  }
1384
1419
  tsi_ssl_handshaker_result* result =
1385
- static_cast<tsi_ssl_handshaker_result*>(gpr_zalloc(sizeof(*result)));
1420
+ grpc_core::Zalloc<tsi_ssl_handshaker_result>();
1386
1421
  result->base.vtable = &handshaker_result_vtable;
1387
1422
  /* Transfer ownership of ssl and network_io to the handshaker result. */
1388
1423
  result->ssl = handshaker->ssl;
@@ -1661,7 +1696,7 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
1661
1696
  SSL_set_accept_state(ssl);
1662
1697
  }
1663
1698
 
1664
- impl = static_cast<tsi_ssl_handshaker*>(gpr_zalloc(sizeof(*impl)));
1699
+ impl = grpc_core::Zalloc<tsi_ssl_handshaker>();
1665
1700
  impl->ssl = ssl;
1666
1701
  impl->network_io = network_io;
1667
1702
  impl->result = TSI_HANDSHAKE_IN_PROGRESS;
@@ -1886,6 +1921,14 @@ static int server_handshaker_factory_new_session_callback(
1886
1921
  return 1;
1887
1922
  }
1888
1923
 
1924
+ static int verify_cb(int ok, X509_STORE_CTX* ctx) {
1925
+ int cert_error = X509_STORE_CTX_get_error(ctx);
1926
+ if (cert_error != 0) {
1927
+ gpr_log(GPR_ERROR, "Certificate verify failed with code %d", cert_error);
1928
+ }
1929
+ return ok;
1930
+ }
1931
+
1889
1932
  /* --- tsi_ssl_handshaker_factory constructors. --- */
1890
1933
 
1891
1934
  static tsi_ssl_handshaker_factory_vtable client_handshaker_factory_vtable = {
@@ -2006,7 +2049,24 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options(
2006
2049
  } else {
2007
2050
  SSL_CTX_set_verify(ssl_context, SSL_VERIFY_PEER, nullptr);
2008
2051
  }
2009
- /* TODO(jboeuf): Add revocation verification. */
2052
+
2053
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000
2054
+ if (options->crl_directory != nullptr &&
2055
+ strcmp(options->crl_directory, "") != 0) {
2056
+ gpr_log(GPR_INFO, "enabling client CRL checking with path: %s",
2057
+ options->crl_directory);
2058
+ X509_STORE* cert_store = SSL_CTX_get_cert_store(ssl_context);
2059
+ X509_STORE_set_verify_cb(cert_store, verify_cb);
2060
+ if (!X509_STORE_load_locations(cert_store, nullptr,
2061
+ options->crl_directory)) {
2062
+ gpr_log(GPR_ERROR, "Failed to load CRL File from directory.");
2063
+ } else {
2064
+ X509_VERIFY_PARAM* param = X509_STORE_get0_param(cert_store);
2065
+ X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK);
2066
+ gpr_log(GPR_INFO, "enabled client side CRL checking.");
2067
+ }
2068
+ }
2069
+ #endif
2010
2070
 
2011
2071
  *factory = impl;
2012
2072
  return TSI_OK;
@@ -2168,7 +2228,24 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options(
2168
2228
  nullptr);
2169
2229
  break;
2170
2230
  }
2171
- /* TODO(jboeuf): Add revocation verification. */
2231
+
2232
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000
2233
+ if (options->crl_directory != nullptr &&
2234
+ strcmp(options->crl_directory, "") != 0) {
2235
+ gpr_log(GPR_INFO, "enabling server CRL checking with path %s",
2236
+ options->crl_directory);
2237
+ X509_STORE* cert_store = SSL_CTX_get_cert_store(impl->ssl_contexts[i]);
2238
+ X509_STORE_set_verify_cb(cert_store, verify_cb);
2239
+ if (!X509_STORE_load_locations(cert_store, nullptr,
2240
+ options->crl_directory)) {
2241
+ gpr_log(GPR_ERROR, "Failed to load CRL File from directory.");
2242
+ } else {
2243
+ X509_VERIFY_PARAM* param = X509_STORE_get0_param(cert_store);
2244
+ X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK);
2245
+ gpr_log(GPR_INFO, "enabled server CRL checking.");
2246
+ }
2247
+ }
2248
+ #endif
2172
2249
 
2173
2250
  result = tsi_ssl_extract_x509_subject_names_from_pem_cert(
2174
2251
  options->pem_key_cert_pairs[i].cert_chain,
@@ -21,20 +21,19 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <openssl/x509.h>
25
+
24
26
  #include "absl/strings/string_view.h"
25
27
 
26
28
  #include <grpc/grpc_security_constants.h>
27
29
 
28
30
  #include "src/core/tsi/transport_security_interface.h"
29
31
 
30
- extern "C" {
31
- #include <openssl/x509.h>
32
- }
33
-
34
32
  /* Value for the TSI_CERTIFICATE_TYPE_PEER_PROPERTY property for X509 certs. */
35
33
  #define TSI_X509_CERTIFICATE_TYPE "X509"
36
34
 
37
35
  /* This property is of type TSI_PEER_PROPERTY_STRING. */
36
+ #define TSI_X509_SUBJECT_PEER_PROPERTY "x509_subject"
38
37
  #define TSI_X509_SUBJECT_COMMON_NAME_PEER_PROPERTY "x509_subject_common_name"
39
38
  #define TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY \
40
39
  "x509_subject_alternative_name"
@@ -158,6 +157,12 @@ struct tsi_ssl_client_handshaker_options {
158
157
  tsi_tls_version min_tls_version;
159
158
  tsi_tls_version max_tls_version;
160
159
 
160
+ /* The directory where all hashed CRL files enforced by the handshaker are
161
+ located. If the directory is invalid, CRL checking will fail open and just
162
+ log. An empty directory will not enable crl checking. Only OpenSSL version
163
+ > 1.1 is supported for CRL checking*/
164
+ const char* crl_directory;
165
+
161
166
  tsi_ssl_client_handshaker_options()
162
167
  : pem_key_cert_pair(nullptr),
163
168
  pem_root_certs(nullptr),
@@ -168,7 +173,8 @@ struct tsi_ssl_client_handshaker_options {
168
173
  session_cache(nullptr),
169
174
  skip_server_certificate_verification(false),
170
175
  min_tls_version(tsi_tls_version::TSI_TLS1_2),
171
- max_tls_version(tsi_tls_version::TSI_TLS1_3) {}
176
+ max_tls_version(tsi_tls_version::TSI_TLS1_3),
177
+ crl_directory(nullptr) {}
172
178
  };
173
179
 
174
180
  /* Creates a client handshaker factory.
@@ -288,6 +294,12 @@ struct tsi_ssl_server_handshaker_options {
288
294
  tsi_tls_version min_tls_version;
289
295
  tsi_tls_version max_tls_version;
290
296
 
297
+ /* The directory where all hashed CRL files are cached in the x.509 store and
298
+ * enforced by the handshaker are located. If the directory is invalid, CRL
299
+ * checking will fail open and just log. An empty directory will not enable
300
+ * crl checking. Only OpenSSL version > 1.1 is supported for CRL checking */
301
+ const char* crl_directory;
302
+
291
303
  tsi_ssl_server_handshaker_options()
292
304
  : pem_key_cert_pairs(nullptr),
293
305
  num_key_cert_pairs(0),
@@ -299,7 +311,8 @@ struct tsi_ssl_server_handshaker_options {
299
311
  session_ticket_key(nullptr),
300
312
  session_ticket_key_size(0),
301
313
  min_tls_version(tsi_tls_version::TSI_TLS1_2),
302
- max_tls_version(tsi_tls_version::TSI_TLS1_3) {}
314
+ max_tls_version(tsi_tls_version::TSI_TLS1_3),
315
+ crl_directory(nullptr) {}
303
316
  };
304
317
 
305
318
  /* Creates a server handshaker factory.
@@ -251,6 +251,18 @@ tsi_result tsi_handshaker_result_extract_peer(const tsi_handshaker_result* self,
251
251
  return self->vtable->extract_peer(self, peer);
252
252
  }
253
253
 
254
+ tsi_result tsi_handshaker_result_get_frame_protector_type(
255
+ const tsi_handshaker_result* self,
256
+ tsi_frame_protector_type* frame_protector_type) {
257
+ if (self == nullptr || frame_protector_type == nullptr) {
258
+ return TSI_INVALID_ARGUMENT;
259
+ }
260
+ if (self->vtable->get_frame_protector_type == nullptr) {
261
+ return TSI_UNIMPLEMENTED;
262
+ }
263
+ return self->vtable->get_frame_protector_type(self, frame_protector_type);
264
+ }
265
+
254
266
  tsi_result tsi_handshaker_result_create_frame_protector(
255
267
  const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
256
268
  tsi_frame_protector** protector) {
@@ -29,7 +29,8 @@
29
29
  extern grpc_core::TraceFlag tsi_tracing_enabled;
30
30
 
31
31
  /* Base for tsi_frame_protector implementations.
32
- See transport_security_interface.h for documentation. */
32
+ See transport_security_interface.h for documentation.
33
+ All methods must be implemented. */
33
34
  struct tsi_frame_protector_vtable {
34
35
  tsi_result (*protect)(tsi_frame_protector* self,
35
36
  const unsigned char* unprotected_bytes,
@@ -54,6 +55,9 @@ struct tsi_frame_protector {
54
55
  /* Base for tsi_handshaker implementations.
55
56
  See transport_security_interface.h for documentation. */
56
57
  struct tsi_handshaker_vtable {
58
+ /* Methods for supporting the old synchronous API.
59
+ These can be null if the TSI impl supports only the new
60
+ async-capable API. */
57
61
  tsi_result (*get_bytes_to_send_to_peer)(tsi_handshaker* self,
58
62
  unsigned char* bytes,
59
63
  size_t* bytes_size);
@@ -65,7 +69,10 @@ struct tsi_handshaker_vtable {
65
69
  tsi_result (*create_frame_protector)(tsi_handshaker* self,
66
70
  size_t* max_protected_frame_size,
67
71
  tsi_frame_protector** protector);
72
+ /* Must be implemented by all TSI impls. */
68
73
  void (*destroy)(tsi_handshaker* self);
74
+ /* Methods for supporting the new async-capable API.
75
+ These can be null if the TSI impl supports only the old sync API. */
69
76
  tsi_result (*next)(tsi_handshaker* self, const unsigned char* received_bytes,
70
77
  size_t received_bytes_size,
71
78
  const unsigned char** bytes_to_send,
@@ -88,13 +95,21 @@ struct tsi_handshaker {
88
95
  API depend on grpc. The create_zero_copy_grpc_protector() method is only used
89
96
  in grpc, where we do need the exec_ctx passed through, but the API still
90
97
  needs to compile in other applications, where grpc_exec_ctx is not defined.
98
+ All methods must be non-null, except where noted below.
91
99
  */
92
100
  struct tsi_handshaker_result_vtable {
93
101
  tsi_result (*extract_peer)(const tsi_handshaker_result* self, tsi_peer* peer);
102
+ tsi_result (*get_frame_protector_type)(
103
+ const tsi_handshaker_result* self,
104
+ tsi_frame_protector_type* frame_protector_type);
105
+ /* May be null if get_frame_protector_type() returns
106
+ TSI_FRAME_PROTECTOR_NORMAL or TSI_FRAME_PROTECTOR_NONE. */
94
107
  tsi_result (*create_zero_copy_grpc_protector)(
95
108
  const tsi_handshaker_result* self,
96
109
  size_t* max_output_protected_frame_size,
97
110
  tsi_zero_copy_grpc_protector** protector);
111
+ /* May be null if get_frame_protector_type() returns
112
+ TSI_FRAME_PROTECTOR_ZERO_COPY or TSI_FRAME_PROTECTOR_NONE. */
98
113
  tsi_result (*create_frame_protector)(const tsi_handshaker_result* self,
99
114
  size_t* max_output_protected_frame_size,
100
115
  tsi_frame_protector** protector);
@@ -64,6 +64,26 @@ typedef enum {
64
64
  TSI_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY,
65
65
  } tsi_client_certificate_request_type;
66
66
 
67
+ typedef enum {
68
+ // TSI implementation provides a normal frame protector. The caller
69
+ // should invoke tsi_handshaker_result_create_frame_protector() to
70
+ // generate the frame protector.
71
+ TSI_FRAME_PROTECTOR_NORMAL,
72
+ // TSI implementation provides a zero-copy frame protector. The caller
73
+ // should invoke tsi_handshaker_result_create_zero_copy_grpc_protector()
74
+ // to generate the frame protector.
75
+ TSI_FRAME_PROTECTOR_ZERO_COPY,
76
+ // TSI implementation provides both normal and zero-copy frame protectors.
77
+ // The caller should invoke either
78
+ // tsi_handshaker_result_create_frame_protector() or
79
+ // tsi_handshaker_result_create_zero_copy_grpc_protector() to generate
80
+ // the frame protector.
81
+ TSI_FRAME_PROTECTOR_NORMAL_OR_ZERO_COPY,
82
+ // TSI implementation does not provide any frame protector. This means
83
+ // that it is safe for the caller to send bytes unprotected on the wire.
84
+ TSI_FRAME_PROTECTOR_NONE,
85
+ } tsi_frame_protector_type;
86
+
67
87
  typedef enum {
68
88
  TSI_TLS1_2,
69
89
  TSI_TLS1_3,
@@ -234,6 +254,12 @@ typedef struct tsi_handshaker_result tsi_handshaker_result;
234
254
  tsi_result tsi_handshaker_result_extract_peer(const tsi_handshaker_result* self,
235
255
  tsi_peer* peer);
236
256
 
257
+ /* This method indicates what type of frame protector is provided by the
258
+ TSI implementation. */
259
+ tsi_result tsi_handshaker_result_get_frame_protector_type(
260
+ const tsi_handshaker_result* self,
261
+ tsi_frame_protector_type* frame_protector_type);
262
+
237
263
  /* This method creates a tsi_frame_protector object. It returns TSI_OK assuming
238
264
  there is no fatal error.
239
265
  The caller is responsible for destroying the protector. */
@@ -17,6 +17,9 @@ require 'mkmf'
17
17
 
18
18
  windows = RUBY_PLATFORM =~ /mingw|mswin/
19
19
  bsd = RUBY_PLATFORM =~ /bsd/
20
+ darwin = RUBY_PLATFORM =~ /darwin/
21
+ linux = RUBY_PLATFORM =~ /linux/
22
+ cross_compiling = ENV['RCD_HOST_RUBY_VERSION'] # set by rake-compiler-dock in build containers
20
23
 
21
24
  grpc_root = File.expand_path(File.join(File.dirname(__FILE__), '../../../..'))
22
25
 
@@ -37,17 +40,17 @@ if ENV['LD'].nil? || ENV['LD'].size == 0
37
40
  ENV['LD'] = ENV['CC']
38
41
  end
39
42
 
40
- if RUBY_PLATFORM =~ /darwin/
43
+ if darwin && !cross_compiling
41
44
  ENV['AR'] = 'libtool'
42
45
  ENV['ARFLAGS'] = '-o'
43
- end
46
+ end
44
47
 
45
48
  ENV['EMBED_OPENSSL'] = 'true'
46
49
  ENV['EMBED_ZLIB'] = 'true'
47
50
  ENV['EMBED_CARES'] = 'true'
48
51
 
49
52
  ENV['ARCH_FLAGS'] = RbConfig::CONFIG['ARCH_FLAG']
50
- if RUBY_PLATFORM =~ /darwin/
53
+ if darwin && !cross_compiling
51
54
  if RUBY_PLATFORM =~ /arm64/
52
55
  ENV['ARCH_FLAGS'] = '-arch arm64'
53
56
  else
@@ -57,7 +60,7 @@ end
57
60
 
58
61
  ENV['CPPFLAGS'] = '-DGPR_BACKWARDS_COMPATIBILITY_MODE'
59
62
  ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="\"RUBY\"" '
60
- ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.41.1\"" '
63
+ ENV['CPPFLAGS'] += ' -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="\"1.44.0.pre2\"" '
61
64
 
62
65
  output_dir = File.expand_path(RbConfig::CONFIG['topdir'])
63
66
  grpc_lib_dir = File.join(output_dir, 'libs', grpc_config)
@@ -66,17 +69,24 @@ ENV['BUILDDIR'] = output_dir
66
69
  unless windows
67
70
  puts 'Building internal gRPC into ' + grpc_lib_dir
68
71
  nproc = 4
69
- nproc = Etc.nprocessors * 2 if Etc.respond_to? :nprocessors
72
+ nproc = Etc.nprocessors if Etc.respond_to? :nprocessors
73
+ nproc_override = ENV['GRPC_RUBY_BUILD_PROCS']
74
+ unless nproc_override.nil? or nproc_override.size == 0
75
+ nproc = nproc_override
76
+ puts "Overriding make parallelism to #{nproc}"
77
+ end
70
78
  make = bsd ? 'gmake' : 'make'
71
- system("#{make} -j#{nproc} -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config} Q=")
79
+ cmd = "#{make} -j#{nproc} -C #{grpc_root} #{grpc_lib_dir}/libgrpc.a CONFIG=#{grpc_config} Q="
80
+ puts "Building grpc native library: #{cmd}"
81
+ system(cmd)
72
82
  exit 1 unless $? == 0
73
83
  end
74
84
 
75
85
  $CFLAGS << ' -I' + File.join(grpc_root, 'include')
76
86
 
77
87
  ext_export_file = File.join(grpc_root, 'src', 'ruby', 'ext', 'grpc', 'ext-export')
78
- $LDFLAGS << ' -Wl,--version-script="' + ext_export_file + '.gcc"' if RUBY_PLATFORM =~ /linux/
79
- $LDFLAGS << ' -Wl,-exported_symbols_list,"' + ext_export_file + '.clang"' if RUBY_PLATFORM =~ /darwin/
88
+ $LDFLAGS << ' -Wl,--version-script="' + ext_export_file + '.gcc"' if linux
89
+ $LDFLAGS << ' -Wl,-exported_symbols_list,"' + ext_export_file + '.clang"' if darwin
80
90
 
81
91
  $LDFLAGS << ' ' + File.join(grpc_lib_dir, 'libgrpc.a') unless windows
82
92
  if grpc_config == 'gcov'
@@ -88,8 +98,8 @@ if grpc_config == 'dbg'
88
98
  $CFLAGS << ' -O0 -ggdb3'
89
99
  end
90
100
 
91
- $LDFLAGS << ' -Wl,-wrap,memcpy' if RUBY_PLATFORM =~ /linux/
92
- $LDFLAGS << ' -static-libgcc -static-libstdc++' if RUBY_PLATFORM =~ /linux/
101
+ $LDFLAGS << ' -Wl,-wrap,memcpy' if linux
102
+ $LDFLAGS << ' -static-libgcc -static-libstdc++' if linux
93
103
  $LDFLAGS << ' -static' if windows
94
104
 
95
105
  $CFLAGS << ' -std=c99 '
@@ -102,7 +112,7 @@ puts 'Generating Makefile for ' + output
102
112
  create_makefile(output)
103
113
 
104
114
  strip_tool = RbConfig::CONFIG['STRIP']
105
- strip_tool = 'strip -x' if RUBY_PLATFORM =~ /darwin/
115
+ strip_tool += ' -x' if darwin
106
116
 
107
117
  if grpc_config == 'opt'
108
118
  File.open('Makefile.new', 'w') do |o|