grpc 1.41.0 → 1.43.1

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

Potentially problematic release.


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

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