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
@@ -77,10 +77,6 @@ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return true; }
77
77
  inline bool IsCustomFrameCheckEnabled() { return true; }
78
78
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
79
79
  inline bool IsEventEngineClientEnabled() { return true; }
80
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
81
- inline bool IsEventEngineDnsEnabled() { return true; }
82
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
83
- inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
84
80
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
85
81
  inline bool IsEventEngineForkEnabled() { return true; }
86
82
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
@@ -90,6 +86,7 @@ inline bool IsEventEngineCallbackCqEnabled() { return true; }
90
86
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
91
87
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
92
88
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; }
89
+ inline bool IsFixV3FilterStackServerSideOrderingEnabled() { return false; }
93
90
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
94
91
  inline bool IsFuseFiltersEnabled() { return false; }
95
92
  inline bool IsH2MaxDeallocatingStreamsHeadroomEnabled() { return false; }
@@ -107,7 +104,6 @@ inline bool IsMetadataOutstandingTokenRefactorEnabled() { return false; }
107
104
  inline bool IsMetadataPublishToAppTagEnabled() { return false; }
108
105
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
109
106
  inline bool IsMonitoringExperimentEnabled() { return true; }
110
- inline bool IsMultipingEnabled() { return false; }
111
107
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_01
112
108
  inline bool IsOptimization01Enabled() { return true; }
113
109
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_02
@@ -131,7 +127,9 @@ inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
131
127
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
132
128
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BATCH_CLEANUP_ON_CANCEL
133
129
  inline bool IsPromiseBatchCleanupOnCancelEnabled() { return true; }
134
- inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; }
130
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_FILTER_SEND_CANCEL_METADATA
131
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() { return true; }
132
+ inline bool IsRecvMessageFilterBypassFixEnabled() { return false; }
135
133
  inline bool IsRetryInCallv3Enabled() { return false; }
136
134
  #define GRPC_EXPERIMENT_IS_INCLUDED_RETURN_PREEXISTING_ERRORS
137
135
  inline bool IsReturnPreexistingErrorsEnabled() { return true; }
@@ -140,17 +138,17 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
140
138
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
141
139
  inline bool IsSecureEndpointReadCoalescingEnabled() { return false; }
142
140
  inline bool IsSkipClearPeerOnCancellationEnabled() { return false; }
143
- #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_CONNECTION_SCALING
144
- inline bool IsSubchannelConnectionScalingEnabled() { return true; }
145
141
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
146
142
  inline bool IsTcpRcvLowatEnabled() { return false; }
147
143
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
148
144
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
149
145
  inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; }
150
- inline bool IsV2NonOwningWakerImplementationEnabled() { return false; }
146
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V2_NON_OWNING_WAKER_IMPLEMENTATION
147
+ inline bool IsV2NonOwningWakerImplementationEnabled() { return true; }
151
148
  inline bool IsVerboseChannelzConnectionLoggingEnabled() { return false; }
152
149
  inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; }
153
- inline bool IsXdsServerFilterChainPerRouteEnabled() { return false; }
150
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_SERVER_FILTER_CHAIN_PER_ROUTE
151
+ inline bool IsXdsServerFilterChainPerRouteEnabled() { return true; }
154
152
 
155
153
  #elif defined(GPR_WINDOWS)
156
154
  inline bool IsBufferListDeletionPrepEnabled() { return false; }
@@ -173,10 +171,6 @@ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return true; }
173
171
  inline bool IsCustomFrameCheckEnabled() { return true; }
174
172
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
175
173
  inline bool IsEventEngineClientEnabled() { return true; }
176
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
177
- inline bool IsEventEngineDnsEnabled() { return true; }
178
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
179
- inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
180
174
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
181
175
  inline bool IsEventEngineForkEnabled() { return true; }
182
176
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
@@ -186,6 +180,7 @@ inline bool IsEventEngineCallbackCqEnabled() { return true; }
186
180
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
187
181
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
188
182
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; }
183
+ inline bool IsFixV3FilterStackServerSideOrderingEnabled() { return false; }
189
184
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
190
185
  inline bool IsFuseFiltersEnabled() { return false; }
191
186
  inline bool IsH2MaxDeallocatingStreamsHeadroomEnabled() { return false; }
@@ -203,7 +198,6 @@ inline bool IsMetadataOutstandingTokenRefactorEnabled() { return false; }
203
198
  inline bool IsMetadataPublishToAppTagEnabled() { return false; }
204
199
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
205
200
  inline bool IsMonitoringExperimentEnabled() { return true; }
206
- inline bool IsMultipingEnabled() { return false; }
207
201
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_01
208
202
  inline bool IsOptimization01Enabled() { return true; }
209
203
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_02
@@ -227,7 +221,9 @@ inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
227
221
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
228
222
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BATCH_CLEANUP_ON_CANCEL
229
223
  inline bool IsPromiseBatchCleanupOnCancelEnabled() { return true; }
230
- inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; }
224
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_FILTER_SEND_CANCEL_METADATA
225
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() { return true; }
226
+ inline bool IsRecvMessageFilterBypassFixEnabled() { return false; }
231
227
  inline bool IsRetryInCallv3Enabled() { return false; }
232
228
  #define GRPC_EXPERIMENT_IS_INCLUDED_RETURN_PREEXISTING_ERRORS
233
229
  inline bool IsReturnPreexistingErrorsEnabled() { return true; }
@@ -236,17 +232,17 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
236
232
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
237
233
  inline bool IsSecureEndpointReadCoalescingEnabled() { return false; }
238
234
  inline bool IsSkipClearPeerOnCancellationEnabled() { return false; }
239
- #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_CONNECTION_SCALING
240
- inline bool IsSubchannelConnectionScalingEnabled() { return true; }
241
235
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
242
236
  inline bool IsTcpRcvLowatEnabled() { return false; }
243
237
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
244
238
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
245
239
  inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; }
246
- inline bool IsV2NonOwningWakerImplementationEnabled() { return false; }
240
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V2_NON_OWNING_WAKER_IMPLEMENTATION
241
+ inline bool IsV2NonOwningWakerImplementationEnabled() { return true; }
247
242
  inline bool IsVerboseChannelzConnectionLoggingEnabled() { return false; }
248
243
  inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; }
249
- inline bool IsXdsServerFilterChainPerRouteEnabled() { return false; }
244
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_SERVER_FILTER_CHAIN_PER_ROUTE
245
+ inline bool IsXdsServerFilterChainPerRouteEnabled() { return true; }
250
246
 
251
247
  #else
252
248
  inline bool IsBufferListDeletionPrepEnabled() { return false; }
@@ -269,10 +265,6 @@ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return true; }
269
265
  inline bool IsCustomFrameCheckEnabled() { return true; }
270
266
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
271
267
  inline bool IsEventEngineClientEnabled() { return true; }
272
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
273
- inline bool IsEventEngineDnsEnabled() { return true; }
274
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
275
- inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
276
268
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
277
269
  inline bool IsEventEngineForkEnabled() { return true; }
278
270
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
@@ -282,6 +274,7 @@ inline bool IsEventEngineCallbackCqEnabled() { return true; }
282
274
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
283
275
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
284
276
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; }
277
+ inline bool IsFixV3FilterStackServerSideOrderingEnabled() { return false; }
285
278
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
286
279
  inline bool IsFuseFiltersEnabled() { return false; }
287
280
  inline bool IsH2MaxDeallocatingStreamsHeadroomEnabled() { return false; }
@@ -299,7 +292,6 @@ inline bool IsMetadataOutstandingTokenRefactorEnabled() { return false; }
299
292
  inline bool IsMetadataPublishToAppTagEnabled() { return false; }
300
293
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
301
294
  inline bool IsMonitoringExperimentEnabled() { return true; }
302
- inline bool IsMultipingEnabled() { return false; }
303
295
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_01
304
296
  inline bool IsOptimization01Enabled() { return true; }
305
297
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_02
@@ -323,7 +315,9 @@ inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
323
315
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
324
316
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BATCH_CLEANUP_ON_CANCEL
325
317
  inline bool IsPromiseBatchCleanupOnCancelEnabled() { return true; }
326
- inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; }
318
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_FILTER_SEND_CANCEL_METADATA
319
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() { return true; }
320
+ inline bool IsRecvMessageFilterBypassFixEnabled() { return false; }
327
321
  inline bool IsRetryInCallv3Enabled() { return false; }
328
322
  #define GRPC_EXPERIMENT_IS_INCLUDED_RETURN_PREEXISTING_ERRORS
329
323
  inline bool IsReturnPreexistingErrorsEnabled() { return true; }
@@ -332,17 +326,17 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
332
326
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
333
327
  inline bool IsSecureEndpointReadCoalescingEnabled() { return false; }
334
328
  inline bool IsSkipClearPeerOnCancellationEnabled() { return false; }
335
- #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_CONNECTION_SCALING
336
- inline bool IsSubchannelConnectionScalingEnabled() { return true; }
337
329
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
338
330
  inline bool IsTcpRcvLowatEnabled() { return false; }
339
331
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
340
332
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
341
333
  inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; }
342
- inline bool IsV2NonOwningWakerImplementationEnabled() { return false; }
334
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V2_NON_OWNING_WAKER_IMPLEMENTATION
335
+ inline bool IsV2NonOwningWakerImplementationEnabled() { return true; }
343
336
  inline bool IsVerboseChannelzConnectionLoggingEnabled() { return false; }
344
337
  inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; }
345
- inline bool IsXdsServerFilterChainPerRouteEnabled() { return false; }
338
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_SERVER_FILTER_CHAIN_PER_ROUTE
339
+ inline bool IsXdsServerFilterChainPerRouteEnabled() { return true; }
346
340
  #endif
347
341
 
348
342
  #else
@@ -356,13 +350,12 @@ enum ExperimentIds {
356
350
  kExperimentIdChaoticGoodSendSupportedFeatures,
357
351
  kExperimentIdCustomFrameCheck,
358
352
  kExperimentIdEventEngineClient,
359
- kExperimentIdEventEngineDns,
360
- kExperimentIdEventEngineDnsNonClientChannel,
361
353
  kExperimentIdEventEngineFork,
362
354
  kExperimentIdEventEngineListener,
363
355
  kExperimentIdEventEngineCallbackCq,
364
356
  kExperimentIdEventEngineForAllOtherEndpoints,
365
357
  kExperimentIdFailRecvMetadataOnDeadlineExceeded,
358
+ kExperimentIdFixV3FilterStackServerSideOrdering,
366
359
  kExperimentIdFreeLargeAllocator,
367
360
  kExperimentIdFuseFilters,
368
361
  kExperimentIdH2MaxDeallocatingStreamsHeadroom,
@@ -376,7 +369,6 @@ enum ExperimentIds {
376
369
  kExperimentIdMetadataOutstandingTokenRefactor,
377
370
  kExperimentIdMetadataPublishToAppTag,
378
371
  kExperimentIdMonitoringExperiment,
379
- kExperimentIdMultiping,
380
372
  kExperimentIdOptimization01,
381
373
  kExperimentIdOptimization02,
382
374
  kExperimentIdOptimization03,
@@ -395,6 +387,7 @@ enum ExperimentIds {
395
387
  kExperimentIdPromiseBasedInprocTransport,
396
388
  kExperimentIdPromiseBatchCleanupOnCancel,
397
389
  kExperimentIdPromiseFilterSendCancelMetadata,
390
+ kExperimentIdRecvMessageFilterBypassFix,
398
391
  kExperimentIdRetryInCallv3,
399
392
  kExperimentIdReturnPreexistingErrors,
400
393
  kExperimentIdScheduleCancellationOverWrite,
@@ -402,7 +395,6 @@ enum ExperimentIds {
402
395
  kExperimentIdSecureEndpointOffloadLargeWrites,
403
396
  kExperimentIdSecureEndpointReadCoalescing,
404
397
  kExperimentIdSkipClearPeerOnCancellation,
405
- kExperimentIdSubchannelConnectionScaling,
406
398
  kExperimentIdTcpFrameSizeTuning,
407
399
  kExperimentIdTcpRcvLowat,
408
400
  kExperimentIdTsiFrameProtectorWithoutLocks,
@@ -452,14 +444,6 @@ inline bool IsCustomFrameCheckEnabled() {
452
444
  inline bool IsEventEngineClientEnabled() {
453
445
  return IsExperimentEnabled<kExperimentIdEventEngineClient>();
454
446
  }
455
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
456
- inline bool IsEventEngineDnsEnabled() {
457
- return IsExperimentEnabled<kExperimentIdEventEngineDns>();
458
- }
459
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
460
- inline bool IsEventEngineDnsNonClientChannelEnabled() {
461
- return IsExperimentEnabled<kExperimentIdEventEngineDnsNonClientChannel>();
462
- }
463
447
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
464
448
  inline bool IsEventEngineForkEnabled() {
465
449
  return IsExperimentEnabled<kExperimentIdEventEngineFork>();
@@ -480,6 +464,10 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() {
480
464
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() {
481
465
  return IsExperimentEnabled<kExperimentIdFailRecvMetadataOnDeadlineExceeded>();
482
466
  }
467
+ #define GRPC_EXPERIMENT_IS_INCLUDED_FIX_V3_FILTER_STACK_SERVER_SIDE_ORDERING
468
+ inline bool IsFixV3FilterStackServerSideOrderingEnabled() {
469
+ return IsExperimentEnabled<kExperimentIdFixV3FilterStackServerSideOrdering>();
470
+ }
483
471
  #define GRPC_EXPERIMENT_IS_INCLUDED_FREE_LARGE_ALLOCATOR
484
472
  inline bool IsFreeLargeAllocatorEnabled() {
485
473
  return IsExperimentEnabled<kExperimentIdFreeLargeAllocator>();
@@ -532,10 +520,6 @@ inline bool IsMetadataPublishToAppTagEnabled() {
532
520
  inline bool IsMonitoringExperimentEnabled() {
533
521
  return IsExperimentEnabled<kExperimentIdMonitoringExperiment>();
534
522
  }
535
- #define GRPC_EXPERIMENT_IS_INCLUDED_MULTIPING
536
- inline bool IsMultipingEnabled() {
537
- return IsExperimentEnabled<kExperimentIdMultiping>();
538
- }
539
523
  #define GRPC_EXPERIMENT_IS_INCLUDED_OPTIMIZATION_01
540
524
  inline bool IsOptimization01Enabled() {
541
525
  return IsExperimentEnabled<kExperimentIdOptimization01>();
@@ -608,6 +592,10 @@ inline bool IsPromiseBatchCleanupOnCancelEnabled() {
608
592
  inline bool IsPromiseFilterSendCancelMetadataEnabled() {
609
593
  return IsExperimentEnabled<kExperimentIdPromiseFilterSendCancelMetadata>();
610
594
  }
595
+ #define GRPC_EXPERIMENT_IS_INCLUDED_RECV_MESSAGE_FILTER_BYPASS_FIX
596
+ inline bool IsRecvMessageFilterBypassFixEnabled() {
597
+ return IsExperimentEnabled<kExperimentIdRecvMessageFilterBypassFix>();
598
+ }
611
599
  #define GRPC_EXPERIMENT_IS_INCLUDED_RETRY_IN_CALLV3
612
600
  inline bool IsRetryInCallv3Enabled() {
613
601
  return IsExperimentEnabled<kExperimentIdRetryInCallv3>();
@@ -636,10 +624,6 @@ inline bool IsSecureEndpointReadCoalescingEnabled() {
636
624
  inline bool IsSkipClearPeerOnCancellationEnabled() {
637
625
  return IsExperimentEnabled<kExperimentIdSkipClearPeerOnCancellation>();
638
626
  }
639
- #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_CONNECTION_SCALING
640
- inline bool IsSubchannelConnectionScalingEnabled() {
641
- return IsExperimentEnabled<kExperimentIdSubchannelConnectionScaling>();
642
- }
643
627
  #define GRPC_EXPERIMENT_IS_INCLUDED_TCP_FRAME_SIZE_TUNING
644
628
  inline bool IsTcpFrameSizeTuningEnabled() {
645
629
  return IsExperimentEnabled<kExperimentIdTcpFrameSizeTuning>();
@@ -75,9 +75,7 @@ void CFStreamHandle::ReadCallback(CFReadStreamRef stream,
75
75
  break;
76
76
  case kCFStreamEventErrorOccurred:
77
77
  stream_error = CFReadStreamCopyError(stream);
78
- error = grpc_error_set_int(
79
- GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "read error"),
80
- grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
78
+ error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "read error");
81
79
  CFRelease(stream_error);
82
80
  handle->open_event_.SetShutdown(error);
83
81
  handle->write_event_.SetShutdown(error);
@@ -107,9 +105,7 @@ void CFStreamHandle::WriteCallback(CFWriteStreamRef stream,
107
105
  break;
108
106
  case kCFStreamEventErrorOccurred:
109
107
  stream_error = CFWriteStreamCopyError(stream);
110
- error = grpc_error_set_int(
111
- GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "write error"),
112
- grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
108
+ error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "write error");
113
109
  CFRelease(stream_error);
114
110
  handle->open_event_.SetShutdown(error);
115
111
  handle->write_event_.SetShutdown(error);
@@ -101,11 +101,6 @@ static void CFStreamUnref(CFStreamEndpoint* ep) {
101
101
  static void CFStreamRef(CFStreamEndpoint* ep) { gpr_ref(&ep->refcount); }
102
102
  #endif
103
103
 
104
- static grpc_error_handle CFStreamAnnotateError(grpc_error_handle src_error) {
105
- return grpc_error_set_int(src_error, grpc_core::StatusIntProperty::kRpcStatus,
106
- GRPC_STATUS_UNAVAILABLE);
107
- }
108
-
109
104
  static void CallReadCb(CFStreamEndpoint* ep, grpc_error_handle error) {
110
105
  if (GRPC_TRACE_FLAG_ENABLED(tcp) && ABSL_VLOG_IS_ON(2)) {
111
106
  VLOG(2) << "CFStream endpoint:" << ep << " call_read_cb " << ep->read_cb
@@ -156,8 +151,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
156
151
  grpc_slice_buffer_reset_and_unref(ep->read_slices);
157
152
  CFErrorRef stream_error = CFReadStreamCopyError(ep->read_stream);
158
153
  if (stream_error != nullptr) {
159
- error = CFStreamAnnotateError(
160
- GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "Read error"));
154
+ error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "Read error");
161
155
  CFRelease(stream_error);
162
156
  } else {
163
157
  error = GRPC_ERROR_CREATE("Read error");
@@ -166,7 +160,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
166
160
  EP_UNREF(ep, "read");
167
161
  } else if (read_size == 0) {
168
162
  grpc_slice_buffer_reset_and_unref(ep->read_slices);
169
- CallReadCb(ep, CFStreamAnnotateError(GRPC_ERROR_CREATE("Socket closed")));
163
+ CallReadCb(ep, absl::UnavailableError("Socket closed"));
170
164
  EP_UNREF(ep, "read");
171
165
  } else {
172
166
  if (read_size < static_cast<CFIndex>(len)) {
@@ -194,8 +188,7 @@ static void WriteAction(void* arg, grpc_error_handle error) {
194
188
  grpc_slice_buffer_reset_and_unref(ep->write_slices);
195
189
  CFErrorRef stream_error = CFWriteStreamCopyError(ep->write_stream);
196
190
  if (stream_error != nullptr) {
197
- error = CFStreamAnnotateError(
198
- GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "Write failed"));
191
+ error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "Write failed");
199
192
  CFRelease(stream_error);
200
193
  } else {
201
194
  error = GRPC_ERROR_CREATE("write failed.");
@@ -95,13 +95,9 @@ std::string WSAErrorToShortDescription(int err) {
95
95
  absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
96
96
  absl::string_view call_name) {
97
97
  char* utf8_message = gpr_format_message(err);
98
- absl::Status status = StatusCreate(
99
- absl::StatusCode::kUnavailable,
98
+ absl::Status status = absl::UnavailableError(
100
99
  absl::StrCat(call_name, ": ", WSAErrorToShortDescription(err), " (",
101
- utf8_message, " -- ", err, ")"),
102
- location, {});
103
- StatusSetInt(&status, grpc_core::StatusIntProperty::kRpcStatus,
104
- GRPC_STATUS_UNAVAILABLE);
100
+ utf8_message, " -- ", err, ")"));
105
101
  gpr_free(utf8_message);
106
102
  return status;
107
103
  }
@@ -46,6 +46,6 @@ grpc_error_handle grpc_error_create_from_cferror(const char* file, int line,
46
46
  absl::StrFormat("%s (error domain:%s, code:%ld, description:%s)",
47
47
  custom_desc, buf_domain, code, buf_desc);
48
48
  CFRelease(desc);
49
- return absl::UnknownError(error_msg);
49
+ return absl::UnavailableError(error_msg);
50
50
  }
51
51
  #endif // GRPC_CFSTREAM
@@ -522,21 +522,17 @@ static void fd_unref(grpc_fd* fd) { unref_by(fd, 2); }
522
522
  static grpc_error_handle fd_shutdown_error(grpc_fd* fd) {
523
523
  if (!fd->shutdown) {
524
524
  return absl::OkStatus();
525
- } else {
526
- return grpc_error_set_int(
527
- GRPC_ERROR_CREATE_REFERENCING("FD shutdown", &fd->shutdown_error, 1),
528
- grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
529
525
  }
526
+ absl::Status status = absl::UnavailableError("FD shutdown");
527
+ grpc_core::StatusAddChild(&status, fd->shutdown_error);
528
+ return status;
530
529
  }
531
530
 
532
531
  static void notify_on_locked(grpc_fd* fd, grpc_closure** st,
533
532
  grpc_closure* closure) {
534
533
  if (fd->shutdown || gpr_atm_no_barrier_load(&fd->pollhup)) {
535
- grpc_core::ExecCtx::Run(
536
- DEBUG_LOCATION, closure,
537
- grpc_error_set_int(GRPC_ERROR_CREATE("FD shutdown"),
538
- grpc_core::StatusIntProperty::kRpcStatus,
539
- GRPC_STATUS_UNAVAILABLE));
534
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
535
+ absl::UnavailableError("FD shutdown"));
540
536
  } else if (*st == CLOSURE_NOT_READY) {
541
537
  // not ready ==> switch to a waiting state by setting the closure
542
538
  *st = closure;
@@ -49,7 +49,7 @@ void RunEventEngineClosure(grpc_closure* closure, grpc_error_handle error) {
49
49
  absl::AnyInvocable<void(absl::Status)> GrpcClosureToStatusCallback(
50
50
  grpc_closure* closure) {
51
51
  return [closure](absl::Status status) {
52
- RunEventEngineClosure(closure, absl_status_to_grpc_error(status));
52
+ RunEventEngineClosure(closure, status);
53
53
  };
54
54
  }
55
55
 
@@ -464,8 +464,7 @@ void grpc_event_engine_endpoint_destroy_and_release_fd(
464
464
  if (release_fd.ok()) {
465
465
  *fd = *release_fd;
466
466
  }
467
- RunEventEngineClosure(on_release_fd,
468
- absl_status_to_grpc_error(release_fd.status()));
467
+ RunEventEngineClosure(on_release_fd, release_fd.status());
469
468
  });
470
469
  }
471
470
  eeep->wrapper->Unref();
@@ -62,8 +62,7 @@ int64_t event_engine_tcp_client_connect(
62
62
  }
63
63
  GRPC_TRACE_LOG(event_engine, INFO)
64
64
  << "EventEngine::Connect Status: " << ep.status();
65
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_connect,
66
- absl_status_to_grpc_error(conn_status));
65
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_connect, conn_status);
67
66
  },
68
67
  CreateResolvedAddress(*addr), config,
69
68
  resource_quota != nullptr
@@ -24,8 +24,6 @@
24
24
 
25
25
  #include "src/core/lib/iomgr/ev_posix.h"
26
26
  #include "src/core/lib/iomgr/iomgr_internal.h"
27
- #include "src/core/lib/iomgr/resolve_address.h"
28
- #include "src/core/lib/iomgr/resolve_address_posix.h"
29
27
  #include "src/core/lib/iomgr/tcp_client.h"
30
28
  #include "src/core/lib/iomgr/tcp_posix.h"
31
29
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -38,7 +36,6 @@ extern grpc_pollset_vtable grpc_posix_pollset_vtable;
38
36
  extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
39
37
 
40
38
  static void iomgr_platform_init(void) {
41
- grpc_core::ResetDNSResolver(std::make_unique<grpc_core::NativeDNSResolver>());
42
39
  grpc_wakeup_fd_global_init();
43
40
  grpc_event_engine_init();
44
41
  grpc_tcp_posix_init();
@@ -50,7 +47,6 @@ static void iomgr_platform_shutdown(void) {
50
47
  grpc_tcp_posix_shutdown();
51
48
  grpc_event_engine_shutdown();
52
49
  grpc_wakeup_fd_global_destroy();
53
- grpc_core::ResetDNSResolver(nullptr); // delete the resolver
54
50
  }
55
51
 
56
52
  static void iomgr_platform_shutdown_background_closure(void) {
@@ -40,8 +40,6 @@
40
40
  #include "src/core/lib/iomgr/ev_apple.h"
41
41
  #include "src/core/lib/iomgr/ev_posix.h"
42
42
  #include "src/core/lib/iomgr/iomgr_internal.h"
43
- #include "src/core/lib/iomgr/resolve_address.h"
44
- #include "src/core/lib/iomgr/resolve_address_posix.h"
45
43
  #include "src/core/lib/iomgr/tcp_client.h"
46
44
  #include "src/core/lib/iomgr/tcp_posix.h"
47
45
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -63,7 +61,6 @@ static void apple_iomgr_platform_flush(void) {}
63
61
 
64
62
  static void apple_iomgr_platform_shutdown(void) {
65
63
  grpc_pollset_global_shutdown();
66
- grpc_core::ResetDNSResolver(nullptr); // delete the resolver
67
64
  }
68
65
 
69
66
  static void apple_iomgr_platform_shutdown_background_closure(void) {}
@@ -180,7 +177,6 @@ void grpc_set_default_iomgr_platform() {
180
177
  }
181
178
  grpc_tcp_client_global_init();
182
179
  grpc_set_timer_impl(&grpc_generic_timer_vtable);
183
- grpc_core::ResetDNSResolver(std::make_unique<grpc_core::NativeDNSResolver>());
184
180
  }
185
181
 
186
182
  bool grpc_iomgr_run_in_background() {
@@ -26,8 +26,6 @@
26
26
  #include "src/core/lib/iomgr/iocp_windows.h"
27
27
  #include "src/core/lib/iomgr/iomgr.h"
28
28
  #include "src/core/lib/iomgr/pollset_windows.h"
29
- #include "src/core/lib/iomgr/resolve_address.h"
30
- #include "src/core/lib/iomgr/resolve_address_windows.h"
31
29
  #include "src/core/lib/iomgr/sockaddr_windows.h"
32
30
  #include "src/core/lib/iomgr/socket_windows.h"
33
31
  #include "src/core/lib/iomgr/tcp_client.h"
@@ -63,7 +61,6 @@ static void iomgr_platform_init(void) {
63
61
  grpc_iocp_init();
64
62
  grpc_pollset_global_init();
65
63
  grpc_wsa_socket_flags_init();
66
- grpc_core::ResetDNSResolver(std::make_unique<grpc_core::NativeDNSResolver>());
67
64
  }
68
65
 
69
66
  static void iomgr_platform_flush(void) { grpc_iocp_flush(); }
@@ -72,7 +69,6 @@ static void iomgr_platform_shutdown(void) {
72
69
  grpc_pollset_global_shutdown();
73
70
  grpc_iocp_shutdown();
74
71
  winsock_shutdown();
75
- grpc_core::ResetDNSResolver(nullptr); // delete the resolver
76
72
  }
77
73
 
78
74
  static void iomgr_platform_shutdown_background_closure(void) {}
@@ -23,7 +23,7 @@
23
23
  #include <grpc/support/port_platform.h>
24
24
  #include <grpc/support/sync.h>
25
25
 
26
- #include "src/core/lib/iomgr/resolve_address.h"
26
+ #include "src/core/lib/iomgr/resolved_address.h"
27
27
 
28
28
  /// The virtual table of grpc_socket_factory
29
29
  struct grpc_socket_factory_vtable {
@@ -74,6 +74,9 @@ PosixTcpOptions TcpOptionsFromEndpointConfig(
74
74
  AdjustValue(PosixTcpOptions::kDefaultMaxReadChunksize, 1,
75
75
  PosixTcpOptions::kMaxChunkSize,
76
76
  config.GetInt(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE));
77
+ options.tcp_max_read_buffer_size =
78
+ AdjustValue(PosixTcpOptions::kMaxReadBufferSizeUnset, 1, INT_MAX,
79
+ config.GetInt(GRPC_ARG_TCP_MAX_READ_BUFFER_SIZE));
77
80
  options.tcp_tx_zerocopy_send_bytes_threshold =
78
81
  AdjustValue(PosixTcpOptions::kDefaultSendBytesThreshold, 0, INT_MAX,
79
82
  config.GetInt(GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD));
@@ -51,6 +51,7 @@ struct PosixTcpOptions {
51
51
  static constexpr int kDefaultMaxReadChunksize = 4 * 1024 * 1024;
52
52
  static constexpr int kZerocpTxEnabledDefault = 0;
53
53
  static constexpr int kMaxChunkSize = 32 * 1024 * 1024;
54
+ static constexpr int kMaxReadBufferSizeUnset = -1;
54
55
  static constexpr int kDefaultMaxSends = 4;
55
56
  static constexpr size_t kDefaultSendBytesThreshold = 16 * 1024;
56
57
  // Let the system decide the proper buffer size.
@@ -59,6 +60,7 @@ struct PosixTcpOptions {
59
60
  int tcp_read_chunk_size = kDefaultReadChunkSize;
60
61
  int tcp_min_read_chunk_size = kDefaultMinReadChunksize;
61
62
  int tcp_max_read_chunk_size = kDefaultMaxReadChunksize;
63
+ int tcp_max_read_buffer_size = kMaxReadBufferSizeUnset;
62
64
  int tcp_tx_zerocopy_send_bytes_threshold = kDefaultSendBytesThreshold;
63
65
  int tcp_tx_zerocopy_max_simultaneous_sends = kDefaultMaxSends;
64
66
  int tcp_receive_buffer_size = kReadBufferSizeUnset;
@@ -128,6 +130,7 @@ struct PosixTcpOptions {
128
130
  tcp_read_chunk_size = other.tcp_read_chunk_size;
129
131
  tcp_min_read_chunk_size = other.tcp_min_read_chunk_size;
130
132
  tcp_max_read_chunk_size = other.tcp_max_read_chunk_size;
133
+ tcp_max_read_buffer_size = other.tcp_max_read_buffer_size;
131
134
  tcp_tx_zerocopy_send_bytes_threshold =
132
135
  other.tcp_tx_zerocopy_send_bytes_threshold;
133
136
  tcp_tx_zerocopy_max_simultaneous_sends =
@@ -27,7 +27,6 @@
27
27
  #endif
28
28
 
29
29
  #include "src/core/lib/address_utils/sockaddr_utils.h"
30
- #include "src/core/lib/iomgr/resolve_address.h"
31
30
  #include "src/core/lib/iomgr/sockaddr.h"
32
31
  #include "src/core/lib/iomgr/systemd_utils.h"
33
32
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  #include "src/core/lib/iomgr/endpoint.h"
28
28
  #include "src/core/lib/iomgr/pollset_set.h"
29
- #include "src/core/lib/iomgr/resolve_address.h"
29
+ #include "src/core/lib/iomgr/resolved_address.h"
30
30
  #include "src/core/lib/resource_quota/memory_quota.h"
31
31
 
32
32
  typedef struct grpc_tcp_client_vtable {