grpc 1.83.1 → 1.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +21 -17
  3. data/include/grpc/credentials.h +10 -0
  4. data/include/grpc/grpc_security_constants.h +2 -0
  5. data/include/grpc/impl/channel_arg_names.h +9 -0
  6. data/src/core/call/call_filters.h +4 -2
  7. data/src/core/call/client_call.cc +20 -8
  8. data/src/core/call/client_call.h +4 -0
  9. data/src/core/call/interception_chain.cc +2 -0
  10. data/src/core/call/interception_chain.h +14 -1
  11. data/src/core/call/metadata.cc +1 -3
  12. data/src/core/call/metadata_batch.h +13 -5
  13. data/src/core/call/server_call.cc +31 -14
  14. data/src/core/call/server_call.h +4 -0
  15. data/src/core/channelz/text_encode.cc +9 -4
  16. data/src/core/channelz/v2tov1/convert.cc +2 -2
  17. data/src/core/client_channel/backup_poller.cc +1 -2
  18. data/src/core/client_channel/client_channel.cc +6 -33
  19. data/src/core/client_channel/client_channel_filter.cc +22 -55
  20. data/src/core/client_channel/client_channel_filter.h +2 -2
  21. data/src/core/client_channel/client_channel_service_config.cc +3 -19
  22. data/src/core/client_channel/direct_channel.cc +7 -1
  23. data/src/core/client_channel/direct_channel.h +2 -2
  24. data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
  25. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -12
  26. data/src/core/client_channel/subchannel.cc +310 -1058
  27. data/src/core/client_channel/subchannel.h +44 -329
  28. data/src/core/client_channel/subchannel_metrics.cc +48 -0
  29. data/src/core/client_channel/subchannel_metrics.h +60 -0
  30. data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
  31. data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
  32. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
  33. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
  34. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
  35. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
  36. data/src/core/credentials/call/json_util.h +1 -0
  37. data/src/core/credentials/call/jwt/json_token.cc +10 -2
  38. data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
  39. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
  40. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +42 -79
  41. data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -5
  42. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +52 -31
  43. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +21 -8
  44. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -4
  45. data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
  46. data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
  47. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +12 -6
  48. data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
  49. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -18
  50. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +9 -6
  51. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +45 -56
  52. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
  53. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +26 -0
  54. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +1 -1
  55. data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
  56. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +2 -4
  57. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +13 -15
  58. data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
  59. data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
  60. data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
  61. data/src/core/credentials/transport/tls/ssl_utils.cc +39 -28
  62. data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
  63. data/src/core/credentials/transport/tls/tls_security_connector.cc +48 -33
  64. data/src/core/credentials/transport/tls/tls_security_connector.h +31 -10
  65. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +15 -11
  66. data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
  67. data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
  68. data/src/core/ext/filters/rbac/rbac_filter.h +21 -3
  69. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  70. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  71. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -20
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +32 -67
  73. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
  74. data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -4
  75. data/src/core/ext/transport/chttp2/transport/frame.h +2 -0
  76. data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -4
  77. data/src/core/ext/transport/chttp2/transport/goaway.h +7 -0
  78. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -3
  79. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
  80. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +141 -130
  81. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +22 -22
  82. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +402 -269
  83. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +80 -49
  84. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +1 -2
  85. data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
  86. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +178 -5
  87. data/src/core/ext/transport/chttp2/transport/http2_transport.h +345 -5
  88. data/src/core/ext/transport/chttp2/transport/parsing.cc +5 -5
  89. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +3 -2
  90. data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +3 -4
  92. data/src/core/ext/transport/chttp2/transport/read_context.h +30 -3
  93. data/src/core/ext/transport/chttp2/transport/stream.h +65 -23
  94. data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
  95. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -5
  96. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +4 -17
  97. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
  98. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
  99. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
  100. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
  101. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
  102. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
  103. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
  104. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
  105. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
  106. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +5 -5
  107. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.c +3 -3
  108. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.h +5 -5
  109. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
  110. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
  111. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
  112. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
  113. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +715 -0
  114. data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
  115. data/src/core/filter/auth/server_auth_filter.cc +2 -3
  116. data/src/core/filter/composite/composite_filter.cc +45 -33
  117. data/src/core/filter/composite/composite_filter.h +5 -4
  118. data/src/core/filter/ext_proc/ext_proc_filter.cc +224 -0
  119. data/src/core/filter/ext_proc/ext_proc_filter.h +155 -0
  120. data/src/core/filter/ext_proc/ext_proc_messages.cc +701 -0
  121. data/src/core/filter/ext_proc/ext_proc_messages.h +297 -0
  122. data/src/core/filter/filter_args.h +13 -2
  123. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
  124. data/src/core/handshaker/security/security_handshaker.cc +9 -6
  125. data/src/core/lib/channel/channel_stack.cc +3 -0
  126. data/src/core/lib/channel/channel_stack.h +2 -0
  127. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -2
  128. data/src/core/lib/channel/promise_based_filter.cc +132 -20
  129. data/src/core/lib/channel/promise_based_filter.h +42 -12
  130. data/src/core/lib/compression/compression_internal.cc +4 -5
  131. data/src/core/lib/debug/trace_flags.cc +8 -0
  132. data/src/core/lib/debug/trace_flags.h +3 -0
  133. data/src/core/lib/event_engine/ares_resolver.cc +54 -50
  134. data/src/core/lib/event_engine/ares_resolver.h +3 -2
  135. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +3 -3
  136. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -10
  137. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +74 -33
  138. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +4 -4
  139. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -2
  140. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
  141. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  142. data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
  143. data/src/core/lib/experiments/experiments.cc +60 -96
  144. data/src/core/lib/experiments/experiments.h +34 -50
  145. data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
  146. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
  147. data/src/core/lib/iomgr/error.cc +2 -6
  148. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  149. data/src/core/lib/iomgr/ev_poll_posix.cc +5 -9
  150. data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
  151. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -2
  152. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  153. data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
  154. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
  155. data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
  156. data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
  157. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  158. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  159. data/src/core/lib/iomgr/systemd_utils.cc +0 -1
  160. data/src/core/lib/iomgr/tcp_client.h +1 -1
  161. data/src/core/lib/iomgr/tcp_posix.cc +23 -15
  162. data/src/core/lib/iomgr/tcp_server.h +1 -1
  163. data/src/core/lib/iomgr/tcp_server_posix.cc +2 -3
  164. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
  165. data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
  166. data/src/core/lib/iomgr/tcp_windows.cc +5 -10
  167. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  168. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  169. data/src/core/lib/iomgr/vsock.h +3 -1
  170. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  171. data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
  172. data/src/core/lib/security/authorization/rbac_policy.h +21 -3
  173. data/src/core/lib/surface/call.cc +3 -9
  174. data/src/core/lib/surface/call_utils.h +113 -0
  175. data/src/core/lib/surface/channel_create.cc +1 -1
  176. data/src/core/lib/surface/channel_create.h +0 -2
  177. data/src/core/lib/surface/channel_init.cc +77 -38
  178. data/src/core/lib/surface/channel_init.h +30 -16
  179. data/src/core/lib/surface/filter_stack_call.cc +5 -10
  180. data/src/core/lib/surface/init.cc +13 -27
  181. data/src/core/lib/surface/version.cc +1 -1
  182. data/src/core/lib/transport/error_utils.cc +0 -27
  183. data/src/core/lib/transport/error_utils.h +0 -16
  184. data/src/core/lib/transport/transport.h +7 -5
  185. data/src/core/load_balancing/pick_first/pick_first.cc +2 -0
  186. data/src/core/load_balancing/rls/rls.cc +28 -11
  187. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -42
  188. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +0 -2
  189. data/src/core/load_balancing/xds/cds.cc +3 -1
  190. data/src/core/load_balancing/xds/xds_cluster_impl.cc +0 -1
  191. data/src/core/mitigation_engine/mitigation.h +14 -5
  192. data/src/core/mitigation_engine/mitigation_engine.h +7 -3
  193. data/src/core/mitigation_engine/mitigation_provider.h +2 -1
  194. data/src/core/plugin_registry/grpc_plugin_registry.cc +39 -8
  195. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +42 -41
  196. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
  197. data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
  198. data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
  199. data/src/core/resolver/endpoint_addresses.h +3 -0
  200. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +2 -1
  201. data/src/core/resolver/xds/xds_resolver.cc +35 -9
  202. data/src/core/server/server.cc +2 -6
  203. data/src/core/server/server_config_selector.h +18 -3
  204. data/src/core/server/server_config_selector_filter.cc +178 -91
  205. data/src/core/server/server_config_selector_filter.h +58 -3
  206. data/src/core/server/xds_server_config_fetcher.cc +196 -129
  207. data/src/core/server/xds_server_config_fetcher.h +49 -0
  208. data/src/core/server/xds_server_config_fetcher_legacy.cc +41 -37
  209. data/src/core/telemetry/histogram.h +94 -14
  210. data/src/core/telemetry/instrument.cc +179 -74
  211. data/src/core/telemetry/instrument.h +78 -30
  212. data/src/core/telemetry/metrics.h +5 -0
  213. data/src/core/{resolver/dns/dns_resolver_plugin.h → telemetry/telemetry_label.h} +12 -8
  214. data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
  215. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
  216. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -1
  217. data/src/core/tsi/ssl_telemetry_utils.cc +216 -259
  218. data/src/core/tsi/ssl_telemetry_utils.h +12 -2
  219. data/src/core/tsi/ssl_transport_security.cc +238 -80
  220. data/src/core/tsi/ssl_transport_security.h +63 -33
  221. data/src/core/tsi/tls_telemetry.cc +31 -0
  222. data/src/core/tsi/tls_telemetry.h +47 -0
  223. data/src/core/tsi/transport_security.cc +2 -2
  224. data/src/core/tsi/transport_security.h +1 -1
  225. data/src/core/tsi/transport_security_interface.h +1 -1
  226. data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
  227. data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
  228. data/src/core/util/http_client/httpcli.cc +16 -53
  229. data/src/core/util/http_client/httpcli.h +0 -7
  230. data/src/core/util/http_client/httpcli_security_connector.cc +13 -8
  231. data/src/core/util/linux/cpu.cc +1 -1
  232. data/src/core/util/load_file.cc +3 -9
  233. data/src/core/util/load_file.h +3 -4
  234. data/src/core/util/matchers.h +8 -0
  235. data/src/core/util/posix/cpu.cc +1 -1
  236. data/src/core/util/status_helper.cc +0 -20
  237. data/src/core/util/status_helper.h +3 -14
  238. data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
  239. data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
  240. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -10
  241. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
  242. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
  243. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
  244. data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
  245. data/src/core/xds/grpc/xds_client_grpc.cc +4 -8
  246. data/src/core/xds/grpc/xds_client_grpc.h +0 -4
  247. data/src/core/xds/grpc/xds_cluster.h +1 -0
  248. data/src/core/xds/grpc/xds_cluster_parser.cc +1 -5
  249. data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
  250. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -2
  251. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
  252. data/src/core/xds/grpc/xds_common_types.cc +0 -91
  253. data/src/core/xds/grpc/xds_common_types.h +1 -47
  254. data/src/core/xds/grpc/xds_common_types_parser.cc +84 -378
  255. data/src/core/xds/grpc/xds_common_types_parser.h +9 -11
  256. data/src/core/xds/grpc/xds_endpoint_parser.cc +0 -2
  257. data/src/core/xds/grpc/xds_grpc_service_parser.cc +177 -0
  258. data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → xds/grpc/xds_grpc_service_parser.h} +14 -9
  259. data/src/core/xds/grpc/xds_http_composite_filter.cc +26 -21
  260. data/src/core/xds/grpc/xds_http_composite_filter.h +4 -3
  261. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +418 -0
  262. data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
  263. data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -12
  264. data/src/core/xds/grpc/xds_http_fault_filter.h +1 -4
  265. data/src/core/xds/grpc/xds_http_filter.cc +2 -1
  266. data/src/core/xds/grpc/xds_http_filter.h +6 -5
  267. data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -127
  268. data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
  269. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +13 -14
  270. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -2
  271. data/src/core/xds/grpc/xds_http_rbac_filter.cc +403 -25
  272. data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
  273. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -13
  274. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +1 -4
  275. data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -292
  276. data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
  277. data/src/core/xds/grpc/xds_listener.cc +2 -0
  278. data/src/core/xds/grpc/xds_listener.h +5 -0
  279. data/src/core/xds/grpc/xds_listener_parser.cc +16 -11
  280. data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
  281. data/src/core/xds/grpc/xds_metadata_parser.cc +6 -1
  282. data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
  283. data/src/core/xds/grpc/xds_route_config.cc +2 -0
  284. data/src/core/xds/grpc/xds_route_config.h +3 -1
  285. data/src/core/xds/grpc/xds_route_config_parser.cc +13 -79
  286. data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
  287. data/src/core/xds/grpc/xds_routing.cc +116 -69
  288. data/src/core/xds/grpc/xds_routing.h +19 -8
  289. data/src/core/xds/grpc/xds_tls_context.cc +117 -0
  290. data/src/core/xds/grpc/xds_tls_context.h +76 -0
  291. data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
  292. data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
  293. data/src/core/xds/grpc/xds_transport_grpc.cc +41 -38
  294. data/src/core/xds/grpc/xds_transport_grpc.h +4 -2
  295. data/src/ruby/ext/grpc/rb_call.c +26 -15
  296. data/src/ruby/ext/grpc/rb_completion_queue.c +6 -5
  297. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  298. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  299. data/src/ruby/lib/grpc/version.rb +1 -1
  300. data/src/ruby/pb/test/client.rb +5 -4
  301. data/src/ruby/spec/call_spec.rb +14 -0
  302. data/src/ruby/spec/generic/server_interceptors_spec.rb +3 -6
  303. metadata +50 -35
  304. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
  305. data/src/core/lib/iomgr/resolve_address.cc +0 -59
  306. data/src/core/lib/iomgr/resolve_address.h +0 -125
  307. data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
  308. data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
  309. data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
  310. data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
  311. data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
  312. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
  313. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
  314. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
  315. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
  316. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
  317. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
  318. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
  319. data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -64
  320. data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
  321. data/src/core/util/json/json_util.cc +0 -101
  322. data/src/core/util/json/json_util.h +0 -163
@@ -18,150 +18,33 @@
18
18
 
19
19
  #include <map>
20
20
  #include <utility>
21
- #include <variant>
22
21
  #include <vector>
23
22
 
24
- #include "envoy/extensions/filters/http/router/v3/router.upb.h"
25
- #include "envoy/extensions/filters/http/router/v3/router.upbdefs.h"
26
- #include "src/core/config/experiment_env_var.h"
27
23
  #include "src/core/util/grpc_check.h"
28
- #include "src/core/util/json/json.h"
29
- #include "src/core/util/sync.h"
30
- #include "src/core/xds/grpc/xds_http_composite_filter.h"
31
- #include "src/core/xds/grpc/xds_http_fault_filter.h"
32
- #include "src/core/xds/grpc/xds_http_gcp_authn_filter.h"
33
- #include "src/core/xds/grpc/xds_http_rbac_filter.h"
34
- #include "src/core/xds/grpc/xds_http_stateful_session_filter.h"
35
- #include "src/core/xds/grpc/xds_metadata_parser.h"
36
24
 
37
25
  namespace grpc_core {
38
26
 
39
- //
40
- // XdsHttpRouterFilter
41
- //
42
-
43
- absl::string_view XdsHttpRouterFilter::ConfigProtoName() const {
44
- return "envoy.extensions.filters.http.router.v3.Router";
45
- }
46
-
47
- absl::string_view XdsHttpRouterFilter::OverrideConfigProtoName() const {
48
- return "";
49
- }
50
-
51
- void XdsHttpRouterFilter::PopulateSymtab(upb_DefPool* symtab) const {
52
- envoy_extensions_filters_http_router_v3_Router_getmsgdef(symtab);
53
- }
54
-
55
- std::optional<Json> XdsHttpRouterFilter::GenerateFilterConfig(
56
- absl::string_view /*instance_name*/,
57
- const XdsResourceType::DecodeContext& context,
58
- const XdsExtension& extension, ValidationErrors* errors) const {
59
- const absl::string_view* serialized_filter_config =
60
- std::get_if<absl::string_view>(&extension.value);
61
- if (serialized_filter_config == nullptr) {
62
- errors->AddError("could not parse router filter config");
63
- return std::nullopt;
64
- }
65
- if (envoy_extensions_filters_http_router_v3_Router_parse(
66
- serialized_filter_config->data(), serialized_filter_config->size(),
67
- context.arena) == nullptr) {
68
- errors->AddError("could not parse router filter config");
69
- return std::nullopt;
70
- }
71
- return Json();
72
- }
73
-
74
- std::optional<Json> XdsHttpRouterFilter::GenerateFilterConfigOverride(
75
- absl::string_view /*instance_name*/,
76
- const XdsResourceType::DecodeContext& /*context*/,
77
- const XdsExtension& /*extension*/, ValidationErrors* errors) const {
78
- errors->AddError("router filter does not support config override");
79
- return std::nullopt;
80
- }
81
-
82
- RefCountedPtr<const FilterConfig> XdsHttpRouterFilter::ParseTopLevelConfig(
83
- absl::string_view /*instance_name*/,
84
- const XdsResourceType::DecodeContext& context,
85
- const XdsExtension& extension, ValidationErrors* errors) const {
86
- const absl::string_view* serialized_filter_config =
87
- std::get_if<absl::string_view>(&extension.value);
88
- if (serialized_filter_config == nullptr) {
89
- errors->AddError("could not parse router filter config");
90
- return nullptr;
91
- }
92
- if (envoy_extensions_filters_http_router_v3_Router_parse(
93
- serialized_filter_config->data(), serialized_filter_config->size(),
94
- context.arena) == nullptr) {
95
- errors->AddError("could not parse router filter config");
96
- return nullptr;
97
- }
98
- return nullptr;
99
- }
100
-
101
- RefCountedPtr<const FilterConfig> XdsHttpRouterFilter::ParseOverrideConfig(
102
- absl::string_view /*instance_name*/,
103
- const XdsResourceType::DecodeContext& /*context*/,
104
- const XdsExtension& /*extension*/, ValidationErrors* errors) const {
105
- errors->AddError("router filter does not support config override");
106
- return nullptr;
107
- }
108
-
109
- //
110
- // XdsHttpFilterRegistry
111
- //
112
-
113
- namespace {
114
-
115
- Mutex* g_mu = new Mutex;
116
- NoDestruct<absl::AnyInvocable<std::unique_ptr<XdsHttpFilterImpl>()>>
117
- g_http_filter_factory_factory ABSL_GUARDED_BY(*g_mu);
118
-
119
- } // namespace
120
-
121
- void SetXdsHttpFilterFactoryForTest(
122
- absl::AnyInvocable<std::unique_ptr<XdsHttpFilterImpl>()> factory) {
123
- MutexLock lock(g_mu);
124
- *g_http_filter_factory_factory = std::move(factory);
125
- }
126
-
127
- XdsHttpFilterRegistry::XdsHttpFilterRegistry(bool register_builtins) {
128
- if (register_builtins) {
129
- RegisterFilter(std::make_unique<XdsHttpRouterFilter>());
130
- RegisterFilter(std::make_unique<XdsHttpFaultFilter>());
131
- RegisterFilter(std::make_unique<XdsHttpRbacFilter>());
132
- RegisterFilter(std::make_unique<XdsHttpStatefulSessionFilter>());
133
- RegisterFilter(std::make_unique<XdsHttpGcpAuthnFilter>());
134
- if (IsExperimentEnvVarEnabled("GRPC_EXPERIMENTAL_XDS_COMPOSITE_FILTER")) {
135
- RegisterFilter(std::make_unique<XdsHttpCompositeFilter>());
136
- }
137
- MutexLock lock(g_mu);
138
- if (*g_http_filter_factory_factory != nullptr) {
139
- RegisterFilter((*g_http_filter_factory_factory)());
140
- }
141
- }
142
- }
143
-
144
27
  void XdsHttpFilterRegistry::RegisterFilter(
145
- std::unique_ptr<XdsHttpFilterImpl> filter) {
28
+ std::unique_ptr<XdsHttpFilterFactory> factory) {
146
29
  GRPC_CHECK(
147
- top_level_config_map_.emplace(filter->ConfigProtoName(), filter.get())
30
+ top_level_config_map_.emplace(factory->ConfigProtoName(), factory.get())
148
31
  .second);
149
- auto override_proto_name = filter->OverrideConfigProtoName();
32
+ auto override_proto_name = factory->OverrideConfigProtoName();
150
33
  if (!override_proto_name.empty()) {
151
- GRPC_CHECK(
152
- override_config_map_.emplace(override_proto_name, filter.get()).second);
34
+ GRPC_CHECK(override_config_map_.emplace(override_proto_name, factory.get())
35
+ .second);
153
36
  }
154
- owning_list_.push_back(std::move(filter));
37
+ owning_list_.push_back(std::move(factory));
155
38
  }
156
39
 
157
- const XdsHttpFilterImpl* XdsHttpFilterRegistry::GetFilterForTopLevelType(
40
+ const XdsHttpFilterFactory* XdsHttpFilterRegistry::GetFilterForTopLevelType(
158
41
  absl::string_view proto_type_name) const {
159
42
  auto it = top_level_config_map_.find(proto_type_name);
160
43
  if (it == top_level_config_map_.end()) return nullptr;
161
44
  return it->second;
162
45
  }
163
46
 
164
- const XdsHttpFilterImpl* XdsHttpFilterRegistry::GetFilterForOverrideType(
47
+ const XdsHttpFilterFactory* XdsHttpFilterRegistry::GetFilterForOverrideType(
165
48
  absl::string_view proto_type_name) const {
166
49
  auto it = override_config_map_.find(proto_type_name);
167
50
  if (it == override_config_map_.end()) return nullptr;
@@ -169,8 +52,8 @@ const XdsHttpFilterImpl* XdsHttpFilterRegistry::GetFilterForOverrideType(
169
52
  }
170
53
 
171
54
  void XdsHttpFilterRegistry::PopulateSymtab(upb_DefPool* symtab) const {
172
- for (const auto& filter : owning_list_) {
173
- filter->PopulateSymtab(symtab);
55
+ for (const auto& factory : owning_list_) {
56
+ factory->PopulateSymtab(symtab);
174
57
  }
175
58
  }
176
59
 
@@ -19,68 +19,19 @@
19
19
 
20
20
  #include <map>
21
21
  #include <memory>
22
- #include <optional>
23
- #include <string>
24
22
  #include <utility>
25
23
  #include <vector>
26
24
 
27
- #include "src/core/lib/channel/channel_args.h"
28
25
  #include "src/core/lib/channel/channel_fwd.h"
29
- #include "src/core/util/validation_errors.h"
30
- #include "src/core/xds/grpc/xds_common_types.h"
31
26
  #include "src/core/xds/grpc/xds_http_filter.h"
32
- #include "src/core/xds/xds_client/xds_resource_type.h"
33
27
  #include "upb/reflection/def.h"
34
- #include "absl/functional/any_invocable.h"
35
- #include "absl/status/statusor.h"
36
28
  #include "absl/strings/string_view.h"
37
29
 
38
30
  namespace grpc_core {
39
31
 
40
- // Exposed for testing purposes only.
41
- class XdsHttpRouterFilter final : public XdsHttpFilterImpl {
42
- public:
43
- absl::string_view ConfigProtoName() const override;
44
- absl::string_view OverrideConfigProtoName() const override;
45
- void PopulateSymtab(upb_DefPool* symtab) const override;
46
- std::optional<Json> GenerateFilterConfig(
47
- absl::string_view /*instance_name*/,
48
- const XdsResourceType::DecodeContext& context,
49
- const XdsExtension& extension, ValidationErrors* errors) const override;
50
- std::optional<Json> GenerateFilterConfigOverride(
51
- absl::string_view /*instance_name*/,
52
- const XdsResourceType::DecodeContext& context,
53
- const XdsExtension& extension, ValidationErrors* errors) const override;
54
- const grpc_channel_filter* channel_filter() const override { return nullptr; }
55
- absl::StatusOr<ServiceConfigJsonEntry> GenerateMethodConfig(
56
- const Json& /*hcm_filter_config*/,
57
- const Json* /*filter_config_override*/) const override {
58
- // This will never be called, since channel_filter() returns null.
59
- return absl::UnimplementedError("router filter should never be called");
60
- }
61
- absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
62
- const Json& /*hcm_filter_config*/) const override {
63
- // This will never be called, since channel_filter() returns null.
64
- return absl::UnimplementedError("router filter should never be called");
65
- }
66
- void AddFilter(FilterChainBuilder& /*builder*/,
67
- RefCountedPtr<const FilterConfig> /*config*/) const override {}
68
- RefCountedPtr<const FilterConfig> ParseTopLevelConfig(
69
- absl::string_view instance_name,
70
- const XdsResourceType::DecodeContext& context,
71
- const XdsExtension& extension, ValidationErrors* errors) const override;
72
- RefCountedPtr<const FilterConfig> ParseOverrideConfig(
73
- absl::string_view instance_name,
74
- const XdsResourceType::DecodeContext& context,
75
- const XdsExtension& extension, ValidationErrors* errors) const override;
76
- bool IsSupportedOnClients() const override { return true; }
77
- bool IsSupportedOnServers() const override { return true; }
78
- bool IsTerminalFilter() const override { return true; }
79
- };
80
-
81
32
  class XdsHttpFilterRegistry final {
82
33
  public:
83
- explicit XdsHttpFilterRegistry(bool register_builtins = true);
34
+ XdsHttpFilterRegistry() = default;
84
35
 
85
36
  // Not copyable.
86
37
  XdsHttpFilterRegistry(const XdsHttpFilterRegistry&) = delete;
@@ -98,25 +49,22 @@ class XdsHttpFilterRegistry final {
98
49
  return *this;
99
50
  }
100
51
 
101
- void RegisterFilter(std::unique_ptr<XdsHttpFilterImpl> filter);
52
+ void RegisterFilter(std::unique_ptr<XdsHttpFilterFactory> factory);
102
53
 
103
- const XdsHttpFilterImpl* GetFilterForTopLevelType(
54
+ const XdsHttpFilterFactory* GetFilterForTopLevelType(
104
55
  absl::string_view proto_type_name) const;
105
56
 
106
- const XdsHttpFilterImpl* GetFilterForOverrideType(
57
+ const XdsHttpFilterFactory* GetFilterForOverrideType(
107
58
  absl::string_view proto_type_name) const;
108
59
 
109
60
  void PopulateSymtab(upb_DefPool* symtab) const;
110
61
 
111
62
  private:
112
- std::vector<std::unique_ptr<XdsHttpFilterImpl>> owning_list_;
113
- std::map<absl::string_view, XdsHttpFilterImpl*> top_level_config_map_;
114
- std::map<absl::string_view, XdsHttpFilterImpl*> override_config_map_;
63
+ std::vector<std::unique_ptr<XdsHttpFilterFactory>> owning_list_;
64
+ std::map<absl::string_view, XdsHttpFilterFactory*> top_level_config_map_;
65
+ std::map<absl::string_view, XdsHttpFilterFactory*> override_config_map_;
115
66
  };
116
67
 
117
- void SetXdsHttpFilterFactoryForTest(
118
- absl::AnyInvocable<std::unique_ptr<XdsHttpFilterImpl>()> factory);
119
-
120
68
  } // namespace grpc_core
121
69
 
122
70
  #endif // GRPC_SRC_CORE_XDS_GRPC_XDS_HTTP_FILTER_REGISTRY_H
@@ -16,8 +16,6 @@
16
16
 
17
17
  #include "src/core/xds/grpc/xds_http_gcp_authn_filter.h"
18
18
 
19
- #include <grpc/support/json.h>
20
-
21
19
  #include <string>
22
20
  #include <utility>
23
21
  #include <variant>
@@ -25,9 +23,6 @@
25
23
  #include "envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h"
26
24
  #include "envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h"
27
25
  #include "src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h"
28
- #include "src/core/lib/channel/channel_args.h"
29
- #include "src/core/util/json/json.h"
30
- #include "src/core/util/json/json_writer.h"
31
26
  #include "src/core/util/validation_errors.h"
32
27
  #include "src/core/xds/grpc/xds_common_types.h"
33
28
  #include "src/core/xds/grpc/xds_common_types_parser.h"
@@ -37,35 +32,37 @@
37
32
 
38
33
  namespace grpc_core {
39
34
 
40
- absl::string_view XdsHttpGcpAuthnFilter::ConfigProtoName() const {
35
+ absl::string_view XdsHttpGcpAuthnFilterFactory::ConfigProtoName() const {
41
36
  return "envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig";
42
37
  }
43
38
 
44
- absl::string_view XdsHttpGcpAuthnFilter::OverrideConfigProtoName() const {
39
+ absl::string_view XdsHttpGcpAuthnFilterFactory::OverrideConfigProtoName()
40
+ const {
45
41
  return "";
46
42
  }
47
43
 
48
- void XdsHttpGcpAuthnFilter::PopulateSymtab(upb_DefPool* symtab) const {
44
+ void XdsHttpGcpAuthnFilterFactory::PopulateSymtab(upb_DefPool* symtab) const {
49
45
  envoy_extensions_filters_http_gcp_authn_v3_GcpAuthnFilterConfig_getmsgdef(
50
46
  symtab);
51
47
  }
52
48
 
53
- const grpc_channel_filter* XdsHttpGcpAuthnFilter::channel_filter() const {
49
+ const grpc_channel_filter* XdsHttpGcpAuthnFilterFactory::channel_filter()
50
+ const {
54
51
  return &GcpAuthenticationFilter::kFilterVtable;
55
52
  }
56
53
 
57
- void XdsHttpGcpAuthnFilter::AddFilter(
54
+ void XdsHttpGcpAuthnFilterFactory::AddFilter(
58
55
  FilterChainBuilder& builder,
59
56
  RefCountedPtr<const FilterConfig> config) const {
60
57
  builder.AddFilter<GcpAuthenticationFilter>(std::move(config));
61
58
  }
62
59
 
63
- RefCountedPtr<const FilterConfig> XdsHttpGcpAuthnFilter::MergeConfigs(
60
+ RefCountedPtr<const FilterConfig> XdsHttpGcpAuthnFilterFactory::MergeConfigs(
64
61
  RefCountedPtr<const FilterConfig> top_level_config,
65
62
  RefCountedPtr<const FilterConfig> /*virtual_host_override_config*/,
66
63
  RefCountedPtr<const FilterConfig> /*route_override_config*/,
67
64
  RefCountedPtr<const FilterConfig> /*cluster_weight_override_config*/,
68
- Blackboard& blackboard) const {
65
+ XdsTransportFactory& /*transport_factory*/, Blackboard& blackboard) const {
69
66
  // Make a copy of the parsed config.
70
67
  const auto& parsed_config =
71
68
  DownCast<const GcpAuthenticationFilter::Config&>(*top_level_config);
@@ -87,7 +84,8 @@ RefCountedPtr<const FilterConfig> XdsHttpGcpAuthnFilter::MergeConfigs(
87
84
  return new_config;
88
85
  }
89
86
 
90
- RefCountedPtr<const FilterConfig> XdsHttpGcpAuthnFilter::ParseTopLevelConfig(
87
+ RefCountedPtr<const FilterConfig>
88
+ XdsHttpGcpAuthnFilterFactory::ParseTopLevelConfig(
91
89
  absl::string_view instance_name,
92
90
  const XdsResourceType::DecodeContext& context,
93
91
  const XdsExtension& extension, ValidationErrors* errors) const {
@@ -124,7 +122,8 @@ RefCountedPtr<const FilterConfig> XdsHttpGcpAuthnFilter::ParseTopLevelConfig(
124
122
  return config;
125
123
  }
126
124
 
127
- RefCountedPtr<const FilterConfig> XdsHttpGcpAuthnFilter::ParseOverrideConfig(
125
+ RefCountedPtr<const FilterConfig>
126
+ XdsHttpGcpAuthnFilterFactory::ParseOverrideConfig(
128
127
  absl::string_view /*instance_name*/,
129
128
  const XdsResourceType::DecodeContext& /*context*/,
130
129
  const XdsExtension& /*extension*/, ValidationErrors* errors) const {
@@ -19,19 +19,19 @@
19
19
 
20
20
  #include <optional>
21
21
 
22
- #include "src/core/lib/channel/channel_args.h"
23
22
  #include "src/core/lib/channel/channel_fwd.h"
24
23
  #include "src/core/util/validation_errors.h"
25
24
  #include "src/core/xds/grpc/xds_common_types.h"
26
25
  #include "src/core/xds/grpc/xds_http_filter.h"
27
26
  #include "src/core/xds/xds_client/xds_resource_type.h"
27
+ #include "src/core/xds/xds_client/xds_transport.h"
28
28
  #include "upb/reflection/def.h"
29
29
  #include "absl/status/statusor.h"
30
30
  #include "absl/strings/string_view.h"
31
31
 
32
32
  namespace grpc_core {
33
33
 
34
- class XdsHttpGcpAuthnFilter final : public XdsHttpFilterImpl {
34
+ class XdsHttpGcpAuthnFilterFactory final : public XdsHttpFilterFactory {
35
35
  public:
36
36
  absl::string_view ConfigProtoName() const override;
37
37
  absl::string_view OverrideConfigProtoName() const override;
@@ -77,6 +77,7 @@ class XdsHttpGcpAuthnFilter final : public XdsHttpFilterImpl {
77
77
  RefCountedPtr<const FilterConfig> /*virtual_host_override_config*/,
78
78
  RefCountedPtr<const FilterConfig> /*route_override_config*/,
79
79
  RefCountedPtr<const FilterConfig> /*cluster_weight_override_config*/,
80
+ XdsTransportFactory& transport_factory,
80
81
  Blackboard& blackboard) const override;
81
82
  bool IsSupportedOnClients() const override { return true; }
82
83
  bool IsSupportedOnServers() const override { return false; }