grpc 1.71.0 → 1.72.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 (597) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -75
  3. data/include/grpc/event_engine/memory_request.h +3 -3
  4. data/include/grpc/impl/channel_arg_names.h +70 -50
  5. data/include/grpc/support/workaround_list.h +1 -4
  6. data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
  7. data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
  8. data/src/core/{lib/transport → call}/call_destination.h +4 -4
  9. data/src/core/{lib/transport → call}/call_filters.cc +2 -2
  10. data/src/core/{lib/transport → call}/call_filters.h +25 -6
  11. data/src/core/{lib/channel → call}/call_finalization.h +3 -3
  12. data/src/core/{lib/transport → call}/call_spine.cc +1 -1
  13. data/src/core/{lib/transport → call}/call_spine.h +68 -26
  14. data/src/core/{lib/transport → call}/call_state.cc +1 -1
  15. data/src/core/{lib/transport → call}/call_state.h +3 -3
  16. data/src/core/{lib/surface → call}/client_call.cc +9 -7
  17. data/src/core/{lib/surface → call}/client_call.h +4 -4
  18. data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
  19. data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
  20. data/src/core/{lib/transport → call}/interception_chain.h +7 -7
  21. data/src/core/{lib/transport → call}/message.cc +1 -1
  22. data/src/core/{lib/transport → call}/message.h +7 -3
  23. data/src/core/{lib/transport → call}/metadata.cc +2 -2
  24. data/src/core/{lib/transport → call}/metadata.h +4 -4
  25. data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
  26. data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
  27. data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
  28. data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
  29. data/src/core/{lib/transport → call}/metadata_info.h +4 -4
  30. data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
  31. data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
  32. data/src/core/call/request_buffer.h +3 -3
  33. data/src/core/call/security_context.cc +125 -0
  34. data/src/core/call/security_context.h +114 -0
  35. data/src/core/{lib/surface → call}/server_call.cc +3 -3
  36. data/src/core/{lib/surface → call}/server_call.h +5 -5
  37. data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
  38. data/src/core/{lib/channel → call}/status_util.cc +1 -1
  39. data/src/core/{lib/channel → call}/status_util.h +3 -3
  40. data/src/core/client_channel/client_channel.cc +24 -16
  41. data/src/core/client_channel/client_channel.h +4 -3
  42. data/src/core/client_channel/client_channel_filter.cc +10 -20
  43. data/src/core/client_channel/client_channel_filter.h +1 -1
  44. data/src/core/client_channel/client_channel_internal.h +1 -1
  45. data/src/core/client_channel/config_selector.h +2 -2
  46. data/src/core/client_channel/direct_channel.cc +2 -2
  47. data/src/core/client_channel/dynamic_filters.cc +0 -1
  48. data/src/core/client_channel/dynamic_filters.h +0 -1
  49. data/src/core/client_channel/lb_metadata.h +1 -1
  50. data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
  51. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  52. data/src/core/client_channel/retry_filter_legacy_call_data.cc +43 -41
  53. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -6
  54. data/src/core/client_channel/retry_interceptor.h +1 -1
  55. data/src/core/client_channel/retry_service_config.cc +1 -1
  56. data/src/core/client_channel/retry_service_config.h +1 -1
  57. data/src/core/client_channel/retry_throttle.cc +30 -34
  58. data/src/core/client_channel/retry_throttle.h +10 -2
  59. data/src/core/client_channel/subchannel.cc +7 -8
  60. data/src/core/client_channel/subchannel.h +1 -2
  61. data/src/core/client_channel/subchannel_stream_client.cc +14 -11
  62. data/src/core/client_channel/subchannel_stream_client.h +2 -2
  63. data/src/core/config/core_configuration.h +2 -2
  64. data/src/core/credentials/call/call_credentials.h +157 -0
  65. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
  66. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
  67. data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
  68. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  69. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
  70. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
  71. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +1 -1
  72. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
  73. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
  74. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
  75. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
  76. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
  77. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +3 -2
  78. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
  79. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +3 -2
  80. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
  81. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
  82. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
  83. data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
  84. data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
  85. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
  86. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
  87. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
  88. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
  89. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +3 -2
  90. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
  91. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +4 -3
  92. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
  93. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
  94. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
  95. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
  96. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
  97. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
  98. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
  99. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +4 -4
  100. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
  101. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
  102. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
  103. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
  104. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
  105. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
  106. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
  107. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
  108. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
  109. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
  110. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
  111. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +21 -17
  112. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  113. data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
  114. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
  115. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
  116. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
  117. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
  118. data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
  119. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +31 -19
  120. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
  121. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
  122. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
  123. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
  124. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
  125. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
  126. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
  127. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
  128. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
  129. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
  130. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
  131. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +2 -2
  132. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
  133. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +5 -5
  134. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +4 -4
  135. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
  136. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
  137. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
  138. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
  139. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
  140. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
  141. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
  142. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
  143. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
  144. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
  145. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
  146. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
  147. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
  148. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
  149. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
  150. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
  151. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +2 -2
  152. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
  153. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
  154. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +3 -3
  155. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +4 -4
  156. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
  157. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
  158. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +6 -6
  159. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
  160. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
  161. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
  162. data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
  163. data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
  164. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -5
  165. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
  166. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  167. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -5
  168. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
  169. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  170. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  171. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  172. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  173. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  174. data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
  175. data/src/core/ext/filters/http/message_compress/compression_filter.h +1 -1
  176. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
  177. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  178. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
  179. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
  180. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +3 -3
  181. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +8 -5
  182. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -1
  183. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  184. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
  185. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +58 -57
  186. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
  187. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -68
  188. data/src/core/ext/transport/chttp2/transport/frame.h +37 -1
  189. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
  190. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -3
  191. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -2
  192. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -2
  193. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
  194. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -2
  195. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
  196. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  197. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
  198. data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
  199. data/src/core/ext/transport/chttp2/transport/http2_status.h +52 -0
  200. data/src/core/ext/transport/chttp2/transport/internal.h +11 -14
  201. data/src/core/ext/transport/chttp2/transport/parsing.cc +36 -23
  202. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -14
  203. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
  204. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +1 -1
  205. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
  206. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
  207. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
  208. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
  209. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
  210. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
  212. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
  213. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +26 -26
  214. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
  215. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +216 -218
  216. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
  217. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
  218. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
  219. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +326 -328
  220. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
  221. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
  222. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
  223. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +22 -24
  224. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
  225. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +29 -29
  226. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
  227. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +186 -192
  228. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
  229. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +54 -54
  230. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
  231. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +59 -61
  232. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +15 -15
  233. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +100 -100
  234. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
  235. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +12 -12
  236. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
  237. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +118 -118
  238. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
  239. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +19 -19
  240. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
  241. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +27 -27
  242. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
  243. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -14
  244. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
  245. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +41 -41
  246. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
  247. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
  248. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
  249. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +139 -139
  250. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
  251. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +61 -61
  252. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
  253. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
  254. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
  255. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
  256. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
  257. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +33 -33
  258. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
  259. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +12 -14
  260. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
  261. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -54
  262. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
  263. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +620 -626
  264. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
  265. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +13 -13
  266. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
  267. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +3 -3
  268. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
  269. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
  270. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
  271. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +15 -15
  272. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
  273. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
  274. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
  275. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
  276. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
  277. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +306 -312
  278. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
  279. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +61 -61
  280. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
  281. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
  282. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
  283. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
  284. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
  285. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
  286. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
  287. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +3 -3
  288. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
  289. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +294 -294
  290. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
  291. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +3 -3
  292. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
  293. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
  294. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
  295. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +84 -84
  296. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
  297. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +87 -87
  298. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
  299. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +24 -24
  300. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
  301. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +130 -132
  302. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
  303. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
  304. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
  305. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +60 -60
  306. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
  307. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
  308. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
  309. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +6 -6
  310. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
  311. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +7 -7
  312. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
  313. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +11 -11
  314. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
  315. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +85 -89
  316. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
  317. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +80 -83
  318. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
  319. data/src/core/ext/upb-gen/google/api/http.upb.h +51 -51
  320. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
  321. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +327 -301
  322. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +97 -85
  323. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +1 -0
  324. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +9 -11
  325. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -10
  326. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +110 -113
  327. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +25 -25
  328. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +6 -6
  329. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
  330. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -22
  331. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
  332. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -72
  333. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
  334. data/src/core/ext/upb-gen/validate/validate.upb.h +368 -368
  335. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
  336. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -10
  337. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
  338. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
  339. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +12 -12
  340. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
  341. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -30
  342. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
  343. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
  344. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
  345. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
  346. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +22 -24
  347. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
  348. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +98 -87
  349. data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -7
  350. data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -6
  351. data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
  352. data/src/core/handshaker/handshaker.cc +0 -8
  353. data/src/core/handshaker/security/security_handshaker.cc +1 -1
  354. data/src/core/handshaker/security/security_handshaker.h +1 -1
  355. data/src/core/lib/channel/channel_args.h +49 -30
  356. data/src/core/lib/channel/channel_stack.h +1 -2
  357. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  358. data/src/core/lib/channel/connected_channel.cc +2 -2
  359. data/src/core/lib/channel/promise_based_filter.h +3 -3
  360. data/src/core/lib/debug/trace_flags.cc +2 -4
  361. data/src/core/lib/debug/trace_flags.h +1 -2
  362. data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
  363. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
  364. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  365. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  366. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  367. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +0 -2
  368. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +1 -3
  369. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +26 -0
  370. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +4 -0
  371. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  372. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +0 -11
  373. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +10 -2
  374. data/src/core/lib/event_engine/shim.cc +9 -16
  375. data/src/core/lib/event_engine/shim.h +11 -0
  376. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -7
  377. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -1
  378. data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
  379. data/src/core/lib/event_engine/windows/win_socket.h +3 -0
  380. data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -10
  381. data/src/core/lib/event_engine/windows/windows_engine.cc +42 -0
  382. data/src/core/lib/event_engine/windows/windows_engine.h +8 -2
  383. data/src/core/lib/event_engine/windows/windows_listener.cc +5 -6
  384. data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
  385. data/src/core/lib/experiments/experiments.cc +174 -21
  386. data/src/core/lib/experiments/experiments.h +70 -13
  387. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  388. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  389. data/src/core/lib/iomgr/error.cc +27 -43
  390. data/src/core/lib/iomgr/ev_epoll1_linux.cc +13 -1
  391. data/src/core/lib/iomgr/ev_poll_posix.cc +13 -0
  392. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  393. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  394. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
  395. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  396. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  397. data/src/core/lib/iomgr/tcp_client_posix.cc +11 -15
  398. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  399. data/src/core/lib/iomgr/tcp_posix.cc +58 -31
  400. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  401. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
  402. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  403. data/src/core/lib/iomgr/tcp_server_windows.cc +27 -16
  404. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
  405. data/src/core/lib/promise/all_ok.h +31 -0
  406. data/src/core/lib/promise/loop.h +8 -5
  407. data/src/core/lib/promise/map.h +65 -2
  408. data/src/core/lib/promise/party.h +5 -1
  409. data/src/core/lib/promise/poll.h +22 -20
  410. data/src/core/lib/promise/promise.h +2 -2
  411. data/src/core/lib/promise/status_flag.h +23 -11
  412. data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
  413. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  414. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  415. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  416. data/src/core/lib/slice/slice.h +6 -0
  417. data/src/core/lib/surface/call.cc +20 -18
  418. data/src/core/lib/surface/call_utils.cc +3 -3
  419. data/src/core/lib/surface/call_utils.h +3 -3
  420. data/src/core/lib/surface/channel.h +2 -2
  421. data/src/core/lib/surface/channel_init.h +2 -2
  422. data/src/core/lib/surface/completion_queue.cc +77 -17
  423. data/src/core/lib/surface/filter_stack_call.cc +40 -27
  424. data/src/core/lib/surface/filter_stack_call.h +1 -1
  425. data/src/core/lib/surface/init.cc +2 -3
  426. data/src/core/lib/surface/lame_client.cc +1 -1
  427. data/src/core/lib/surface/legacy_channel.cc +27 -23
  428. data/src/core/lib/surface/legacy_channel.h +1 -1
  429. data/src/core/lib/surface/version.cc +2 -2
  430. data/src/core/lib/transport/error_utils.cc +65 -11
  431. data/src/core/lib/transport/error_utils.h +2 -2
  432. data/src/core/lib/transport/status_conversion.cc +16 -14
  433. data/src/core/lib/transport/status_conversion.h +5 -4
  434. data/src/core/lib/transport/transport.h +5 -5
  435. data/src/core/lib/transport/transport_op_string.cc +1 -1
  436. data/src/core/load_balancing/delegating_helper.h +1 -1
  437. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
  438. data/src/core/load_balancing/grpclb/grpclb.cc +1 -2
  439. data/src/core/load_balancing/pick_first/pick_first.cc +0 -955
  440. data/src/core/load_balancing/rls/rls.cc +31 -37
  441. data/src/core/load_balancing/weighted_target/weighted_target.cc +1 -1
  442. data/src/core/load_balancing/xds/cds.cc +3 -10
  443. data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
  444. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  445. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -2
  446. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
  447. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  448. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
  449. data/src/core/resolver/xds/xds_dependency_manager.cc +8 -3
  450. data/src/core/resolver/xds/xds_resolver.cc +2 -2
  451. data/src/core/server/server.cc +7 -4
  452. data/src/core/server/server.h +1 -1
  453. data/src/core/server/server_call_tracer_filter.cc +1 -1
  454. data/src/core/server/server_config_selector.h +1 -1
  455. data/src/core/server/server_config_selector_filter.cc +1 -1
  456. data/src/core/server/xds_server_config_fetcher.cc +5 -5
  457. data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
  458. data/src/core/telemetry/call_tracer.cc +2 -4
  459. data/src/core/telemetry/call_tracer.h +3 -3
  460. data/src/core/telemetry/metrics.cc +30 -12
  461. data/src/core/telemetry/metrics.h +15 -3
  462. data/src/core/telemetry/stats_data.cc +75 -2
  463. data/src/core/telemetry/stats_data.h +46 -4
  464. data/src/core/telemetry/tcp_tracer.h +90 -84
  465. data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -96
  466. data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +6 -76
  467. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  468. data/src/core/tsi/ssl_transport_security.cc +1 -1
  469. data/src/core/util/check_class_size.h +48 -0
  470. data/src/core/util/gcp_metadata_query.cc +1 -1
  471. data/src/core/util/http_client/httpcli.cc +3 -3
  472. data/src/core/util/http_client/httpcli_security_connector.cc +3 -3
  473. data/src/core/util/load_file.cc +26 -14
  474. data/src/core/util/status_helper.cc +86 -63
  475. data/src/core/util/status_helper.h +9 -26
  476. data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
  477. data/src/core/xds/grpc/certificate_provider_store.h +3 -3
  478. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  479. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  480. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +10 -7
  481. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  482. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  483. data/src/core/xds/grpc/xds_client_grpc.cc +7 -6
  484. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  485. data/src/core/xds/grpc/xds_cluster.h +3 -3
  486. data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
  487. data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
  488. data/src/core/xds/grpc/xds_http_filter.h +1 -1
  489. data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
  490. data/src/core/xds/grpc/xds_route_config.h +1 -1
  491. data/src/core/xds/grpc/xds_route_config_parser.cc +1 -1
  492. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  493. data/src/core/xds/grpc/xds_routing.h +1 -1
  494. data/src/core/xds/grpc/xds_server_grpc.cc +60 -48
  495. data/src/core/xds/grpc/xds_server_grpc.h +23 -13
  496. data/src/core/xds/grpc/xds_server_grpc_interface.h +2 -2
  497. data/src/core/xds/grpc/xds_transport_grpc.cc +5 -5
  498. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  499. data/src/core/xds/xds_client/lrs_client.cc +6 -5
  500. data/src/core/xds/xds_client/lrs_client.h +7 -7
  501. data/src/core/xds/xds_client/xds_bootstrap.h +16 -1
  502. data/src/core/xds/xds_client/xds_client.cc +25 -23
  503. data/src/core/xds/xds_client/xds_client.h +3 -1
  504. data/src/core/xds/xds_client/xds_resource_type.h +1 -2
  505. data/src/core/xds/xds_client/xds_transport.h +1 -1
  506. data/src/ruby/ext/grpc/extconf.rb +1 -1
  507. data/src/ruby/lib/grpc/version.rb +1 -1
  508. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
  509. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
  510. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
  511. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
  512. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
  513. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
  514. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
  515. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +0 -1
  516. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +0 -2
  517. data/third_party/boringssl-with-bazel/src/crypto/internal.h +20 -3
  518. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
  519. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +3 -7
  520. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1 -1
  521. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  522. data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -6
  523. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +2 -1
  524. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  525. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1 -1
  526. data/third_party/upb/upb/base/internal/log2.h +3 -1
  527. data/third_party/upb/upb/base/string_view.h +10 -0
  528. data/third_party/upb/upb/hash/common.c +5 -1
  529. data/third_party/upb/upb/json/decode.c +2 -2
  530. data/third_party/upb/upb/json/decode.h +0 -1
  531. data/third_party/upb/upb/mem/alloc.h +5 -0
  532. data/third_party/upb/upb/mem/arena.c +296 -142
  533. data/third_party/upb/upb/mem/arena.h +47 -11
  534. data/third_party/upb/upb/mem/arena.hpp +4 -20
  535. data/third_party/upb/upb/mem/internal/arena.h +4 -6
  536. data/third_party/upb/upb/message/accessors.h +41 -0
  537. data/third_party/upb/upb/message/compat.c +11 -14
  538. data/third_party/upb/upb/message/compat.h +4 -3
  539. data/third_party/upb/upb/message/copy.c +35 -30
  540. data/third_party/upb/upb/message/internal/accessors.h +139 -10
  541. data/third_party/upb/upb/message/internal/extension.c +28 -25
  542. data/third_party/upb/upb/message/internal/extension.h +21 -5
  543. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  544. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  545. data/third_party/upb/upb/message/internal/map.h +2 -3
  546. data/third_party/upb/upb/message/internal/map_sorter.h +3 -2
  547. data/third_party/upb/upb/message/internal/message.c +48 -29
  548. data/third_party/upb/upb/message/internal/message.h +154 -24
  549. data/third_party/upb/upb/message/map_sorter.c +20 -8
  550. data/third_party/upb/upb/message/message.c +90 -38
  551. data/third_party/upb/upb/message/message.h +58 -2
  552. data/third_party/upb/upb/message/value.h +9 -0
  553. data/third_party/upb/upb/mini_descriptor/build_enum.c +1 -1
  554. data/third_party/upb/upb/mini_descriptor/decode.c +97 -136
  555. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  556. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  557. data/third_party/upb/upb/mini_table/extension_registry.c +24 -12
  558. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  559. data/third_party/upb/upb/mini_table/message.c +21 -13
  560. data/third_party/upb/upb/port/atomic.h +134 -7
  561. data/third_party/upb/upb/port/def.inc +140 -38
  562. data/third_party/upb/upb/port/undef.inc +11 -1
  563. data/third_party/upb/upb/reflection/def.hpp +5 -1
  564. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  565. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +1 -1
  566. data/third_party/upb/upb/reflection/file_def.c +12 -5
  567. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  568. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  569. data/third_party/upb/upb/reflection/message.c +19 -16
  570. data/third_party/upb/upb/reflection/message.h +3 -1
  571. data/third_party/upb/upb/text/encode.c +1 -13
  572. data/third_party/upb/upb/text/internal/encode.c +25 -6
  573. data/third_party/upb/upb/text/internal/encode.h +4 -0
  574. data/third_party/upb/upb/wire/decode.c +60 -45
  575. data/third_party/upb/upb/wire/decode.h +4 -2
  576. data/third_party/upb/upb/wire/encode.c +77 -42
  577. data/third_party/upb/upb/wire/encode.h +2 -0
  578. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  579. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  580. data/third_party/utf8_range/utf8_range.c +15 -275
  581. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  582. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  583. data/third_party/zlib/deflate.c +40 -15
  584. data/third_party/zlib/deflate.h +33 -2
  585. data/third_party/zlib/gzguts.h +2 -6
  586. data/third_party/zlib/inflate.c +1 -1
  587. data/third_party/zlib/inftrees.c +3 -3
  588. data/third_party/zlib/inftrees.h +2 -2
  589. data/third_party/zlib/trees.c +18 -4
  590. data/third_party/zlib/zconf.h +1 -9
  591. data/third_party/zlib/zlib.h +12 -12
  592. data/third_party/zlib/zutil.h +4 -25
  593. metadata +155 -145
  594. data/include/grpc/grpc_cronet.h +0 -37
  595. data/src/core/lib/transport/http2_errors.h +0 -43
  596. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  597. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -91,6 +91,31 @@ struct IsRawPointerTagged<T,
91
91
  absl::void_t<typename T::RawPointerChannelArgTag>> {
92
92
  static constexpr bool kValue = true;
93
93
  };
94
+
95
+ // Define a check for shared_ptr supported types, which must extend
96
+ // enable_shared_from_this.
97
+ template <typename T>
98
+ struct SupportedSharedPtrType
99
+ : std::integral_constant<
100
+ bool, std::is_base_of<std::enable_shared_from_this<T>, T>::value> {};
101
+ template <>
102
+ struct SupportedSharedPtrType<grpc_event_engine::experimental::EventEngine>
103
+ : std::true_type {};
104
+
105
+ // Specialization for shared_ptr
106
+ // Incurs an allocation because shared_ptr.release is not a thing.
107
+ template <typename T>
108
+ struct is_shared_ptr : std::false_type {};
109
+ template <typename T>
110
+ struct is_shared_ptr<std::shared_ptr<T>> : std::true_type {};
111
+
112
+ template <typename T, typename = void>
113
+ struct has_channel_args_compare : std::false_type {};
114
+ template <typename T>
115
+ struct has_channel_args_compare<
116
+ T, absl::void_t<decltype(T::ChannelArgsCompare(std::declval<const T*>(),
117
+ std::declval<const T*>()))>>
118
+ : std::true_type {};
94
119
  } // namespace channel_args_detail
95
120
 
96
121
  // Specialization for ref-counted pointers.
@@ -133,25 +158,9 @@ struct ChannelArgTypeTraits<
133
158
  };
134
159
  };
135
160
 
136
- // Define a check for shared_ptr supported types, which must extend
137
- // enable_shared_from_this.
138
161
  template <typename T>
139
- struct SupportedSharedPtrType
140
- : std::integral_constant<
141
- bool, std::is_base_of<std::enable_shared_from_this<T>, T>::value> {};
142
- template <>
143
- struct SupportedSharedPtrType<grpc_event_engine::experimental::EventEngine>
144
- : std::true_type {};
145
-
146
- // Specialization for shared_ptr
147
- // Incurs an allocation because shared_ptr.release is not a thing.
148
- template <typename T>
149
- struct is_shared_ptr : std::false_type {};
150
- template <typename T>
151
- struct is_shared_ptr<std::shared_ptr<T>> : std::true_type {};
152
- template <typename T>
153
- struct ChannelArgTypeTraits<T,
154
- absl::enable_if_t<is_shared_ptr<T>::value, void>> {
162
+ struct ChannelArgTypeTraits<
163
+ T, absl::enable_if_t<channel_args_detail::is_shared_ptr<T>::value, void>> {
155
164
  static void* TakeUnownedPointer(T* p) { return p; }
156
165
  static const grpc_arg_pointer_vtable* VTable() {
157
166
  static const grpc_arg_pointer_vtable tbl = {
@@ -161,8 +170,15 @@ struct ChannelArgTypeTraits<T,
161
170
  [](void* p) { delete static_cast<T*>(p); },
162
171
  // compare
163
172
  [](void* p1, void* p2) {
164
- return QsortCompare(static_cast<const T*>(p1)->get(),
165
- static_cast<const T*>(p2)->get());
173
+ if constexpr (channel_args_detail::has_channel_args_compare<
174
+ typename T::element_type>::value) {
175
+ return T::element_type::ChannelArgsCompare(
176
+ static_cast<const T*>(p1)->get(),
177
+ static_cast<const T*>(p2)->get());
178
+ } else {
179
+ return QsortCompare(static_cast<const T*>(p1)->get(),
180
+ static_cast<const T*>(p2)->get());
181
+ }
166
182
  },
167
183
  };
168
184
  return &tbl;
@@ -209,9 +225,10 @@ struct GetObjectImpl;
209
225
  // std::shared_ptr implementation
210
226
  template <typename T>
211
227
  struct GetObjectImpl<
212
- T, absl::enable_if_t<!ChannelArgPointerShouldBeConst<T>::kValue &&
213
- SupportedSharedPtrType<T>::value,
214
- void>> {
228
+ T,
229
+ absl::enable_if_t<!ChannelArgPointerShouldBeConst<T>::kValue &&
230
+ channel_args_detail::SupportedSharedPtrType<T>::value,
231
+ void>> {
215
232
  using Result = T*;
216
233
  using ReffedResult = std::shared_ptr<T>;
217
234
  using StoredType = std::shared_ptr<T>*;
@@ -232,9 +249,10 @@ struct GetObjectImpl<
232
249
  // RefCountedPtr
233
250
  template <typename T>
234
251
  struct GetObjectImpl<
235
- T, absl::enable_if_t<!ChannelArgPointerShouldBeConst<T>::kValue &&
236
- !SupportedSharedPtrType<T>::value,
237
- void>> {
252
+ T, absl::enable_if_t<
253
+ !ChannelArgPointerShouldBeConst<T>::kValue &&
254
+ !channel_args_detail::SupportedSharedPtrType<T>::value,
255
+ void>> {
238
256
  using Result = T*;
239
257
  using ReffedResult = RefCountedPtr<T>;
240
258
  using StoredType = Result;
@@ -252,9 +270,10 @@ struct GetObjectImpl<
252
270
 
253
271
  template <typename T>
254
272
  struct GetObjectImpl<
255
- T, absl::enable_if_t<ChannelArgPointerShouldBeConst<T>::kValue &&
256
- !SupportedSharedPtrType<T>::value,
257
- void>> {
273
+ T, absl::enable_if_t<
274
+ ChannelArgPointerShouldBeConst<T>::kValue &&
275
+ !channel_args_detail::SupportedSharedPtrType<T>::value,
276
+ void>> {
258
277
  using Result = const T*;
259
278
  using ReffedResult = RefCountedPtr<const T>;
260
279
  using StoredType = Result;
@@ -469,7 +488,7 @@ class ChannelArgs {
469
488
  decltype(ChannelArgTypeTraits<std::shared_ptr<T>>::VTable())>::value,
470
489
  ChannelArgs>
471
490
  Set(absl::string_view name, std::shared_ptr<T> value) const {
472
- static_assert(SupportedSharedPtrType<T>::value,
491
+ static_assert(channel_args_detail::SupportedSharedPtrType<T>::value,
473
492
  "Type T must extend std::enable_shared_from_this to be added "
474
493
  "into ChannelArgs as a shared_ptr<T>");
475
494
  auto* store_value = new std::shared_ptr<T>(value);
@@ -81,7 +81,6 @@ struct grpc_channel_element_args {
81
81
  struct grpc_call_element_args {
82
82
  grpc_call_stack* call_stack;
83
83
  const void* server_transport_data;
84
- const grpc_slice& path;
85
84
  gpr_cycle_counter start_time; // Note: not populated in subchannel stack.
86
85
  grpc_core::Timestamp deadline;
87
86
  grpc_core::Arena* arena;
@@ -198,7 +197,7 @@ struct grpc_channel_stack {
198
197
  }
199
198
 
200
199
  grpc_core::ManualConstructor<
201
- grpc_core::GlobalStatsPluginRegistry::StatsPluginGroup>
200
+ std::shared_ptr<grpc_core::GlobalStatsPluginRegistry::StatsPluginGroup>>
202
201
  stats_plugin_group;
203
202
 
204
203
  // Minimal infrastructure to act like a RefCounted thing without converting
@@ -33,6 +33,7 @@
33
33
  #include "absl/container/flat_hash_map.h"
34
34
  #include "absl/status/status.h"
35
35
  #include "absl/strings/str_cat.h"
36
+ #include "src/core/call/metadata_batch.h"
36
37
  #include "src/core/lib/channel/channel_fwd.h"
37
38
  #include "src/core/lib/channel/channel_stack.h"
38
39
  #include "src/core/lib/debug/trace.h"
@@ -43,7 +44,6 @@
43
44
  #include "src/core/lib/promise/poll.h"
44
45
  #include "src/core/lib/surface/channel_stack_type.h"
45
46
  #include "src/core/lib/transport/error_utils.h"
46
- #include "src/core/lib/transport/metadata_batch.h"
47
47
  #include "src/core/lib/transport/transport.h"
48
48
  #include "src/core/util/no_destruct.h"
49
49
  #include "src/core/util/sync.h"
@@ -34,8 +34,9 @@
34
34
  #include "absl/log/check.h"
35
35
  #include "absl/status/status.h"
36
36
  #include "absl/status/statusor.h"
37
+ #include "src/core/call/call_finalization.h"
38
+ #include "src/core/call/metadata_batch.h"
37
39
  #include "src/core/config/core_configuration.h"
38
- #include "src/core/lib/channel/call_finalization.h"
39
40
  #include "src/core/lib/channel/channel_args.h"
40
41
  #include "src/core/lib/channel/channel_fwd.h"
41
42
  #include "src/core/lib/channel/channel_stack.h"
@@ -67,7 +68,6 @@
67
68
  #include "src/core/lib/surface/call.h"
68
69
  #include "src/core/lib/surface/channel_stack_type.h"
69
70
  #include "src/core/lib/transport/error_utils.h"
70
- #include "src/core/lib/transport/metadata_batch.h"
71
71
  #include "src/core/lib/transport/transport.h"
72
72
  #include "src/core/util/alloc.h"
73
73
  #include "src/core/util/debug_location.h"
@@ -40,9 +40,11 @@
40
40
  #include "absl/meta/type_traits.h"
41
41
  #include "absl/status/status.h"
42
42
  #include "absl/strings/string_view.h"
43
+ #include "src/core/call/call_filters.h"
44
+ #include "src/core/call/call_finalization.h"
45
+ #include "src/core/call/metadata_batch.h"
43
46
  #include "src/core/filter/blackboard.h"
44
47
  #include "src/core/filter/filter_args.h"
45
- #include "src/core/lib/channel/call_finalization.h"
46
48
  #include "src/core/lib/channel/channel_args.h"
47
49
  #include "src/core/lib/channel/channel_fwd.h"
48
50
  #include "src/core/lib/channel/channel_stack.h"
@@ -65,9 +67,7 @@
65
67
  #include "src/core/lib/resource_quota/arena.h"
66
68
  #include "src/core/lib/slice/slice_buffer.h"
67
69
  #include "src/core/lib/surface/call.h"
68
- #include "src/core/lib/transport/call_filters.h"
69
70
  #include "src/core/lib/transport/error_utils.h"
70
- #include "src/core/lib/transport/metadata_batch.h"
71
71
  #include "src/core/lib/transport/transport.h"
72
72
  #include "src/core/util/debug_location.h"
73
73
  #include "src/core/util/match.h"
@@ -37,7 +37,7 @@ DebugOnlyTraceFlag fd_trace_trace(false, "fd_trace");
37
37
  DebugOnlyTraceFlag lb_policy_refcount_trace(false, "lb_policy_refcount");
38
38
  DebugOnlyTraceFlag party_state_trace(false, "party_state");
39
39
  DebugOnlyTraceFlag pending_tags_trace(false, "pending_tags");
40
- DebugOnlyTraceFlag ph2_trace(false, "ph2");
40
+ DebugOnlyTraceFlag http2_ph2_transport_trace(false, "http2_ph2_transport");
41
41
  DebugOnlyTraceFlag polling_trace(false, "polling");
42
42
  DebugOnlyTraceFlag polling_api_trace(false, "polling_api");
43
43
  DebugOnlyTraceFlag promise_primitives_trace(false, "promise_primitives");
@@ -69,7 +69,6 @@ TraceFlag client_channel_lb_call_trace(false, "client_channel_lb_call");
69
69
  TraceFlag client_idle_filter_trace(false, "client_idle_filter");
70
70
  TraceFlag compression_trace(false, "compression");
71
71
  TraceFlag connectivity_state_trace(false, "connectivity_state");
72
- TraceFlag cronet_trace(false, "cronet");
73
72
  TraceFlag dns_resolver_trace(false, "dns_resolver");
74
73
  TraceFlag environment_autodetect_trace(false, "environment_autodetect");
75
74
  TraceFlag event_engine_trace(false, "event_engine");
@@ -153,7 +152,6 @@ const absl::flat_hash_map<std::string, TraceFlag*>& GetAllTraceFlags() {
153
152
  {"client_idle_filter", &client_idle_filter_trace},
154
153
  {"compression", &compression_trace},
155
154
  {"connectivity_state", &connectivity_state_trace},
156
- {"cronet", &cronet_trace},
157
155
  {"dns_resolver", &dns_resolver_trace},
158
156
  {"environment_autodetect", &environment_autodetect_trace},
159
157
  {"event_engine", &event_engine_trace},
@@ -227,7 +225,7 @@ const absl::flat_hash_map<std::string, TraceFlag*>& GetAllTraceFlags() {
227
225
  {"lb_policy_refcount", &lb_policy_refcount_trace},
228
226
  {"party_state", &party_state_trace},
229
227
  {"pending_tags", &pending_tags_trace},
230
- {"ph2", &ph2_trace},
228
+ {"http2_ph2_transport", &http2_ph2_transport_trace},
231
229
  {"polling", &polling_trace},
232
230
  {"polling_api", &polling_api_trace},
233
231
  {"promise_primitives", &promise_primitives_trace},
@@ -37,7 +37,7 @@ extern DebugOnlyTraceFlag fd_trace_trace;
37
37
  extern DebugOnlyTraceFlag lb_policy_refcount_trace;
38
38
  extern DebugOnlyTraceFlag party_state_trace;
39
39
  extern DebugOnlyTraceFlag pending_tags_trace;
40
- extern DebugOnlyTraceFlag ph2_trace;
40
+ extern DebugOnlyTraceFlag http2_ph2_transport_trace;
41
41
  extern DebugOnlyTraceFlag polling_trace;
42
42
  extern DebugOnlyTraceFlag polling_api_trace;
43
43
  extern DebugOnlyTraceFlag promise_primitives_trace;
@@ -68,7 +68,6 @@ extern TraceFlag client_channel_lb_call_trace;
68
68
  extern TraceFlag client_idle_filter_trace;
69
69
  extern TraceFlag compression_trace;
70
70
  extern TraceFlag connectivity_state_trace;
71
- extern TraceFlag cronet_trace;
72
71
  extern TraceFlag dns_resolver_trace;
73
72
  extern TraceFlag environment_autodetect_trace;
74
73
  extern TraceFlag event_engine_trace;
@@ -24,8 +24,8 @@
24
24
 
25
25
  namespace grpc_event_engine::experimental {
26
26
 
27
- std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
28
- return std::make_unique<WindowsEventEngine>();
27
+ std::shared_ptr<EventEngine> DefaultEventEngineFactory() {
28
+ return std::make_shared<WindowsEventEngine>();
29
29
  }
30
30
 
31
31
  } // namespace grpc_event_engine::experimental
@@ -34,8 +34,8 @@ std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
34
34
 
35
35
  namespace grpc_event_engine::experimental {
36
36
 
37
- std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
38
- return std::make_unique<CFEventEngine>();
37
+ std::shared_ptr<EventEngine> DefaultEventEngineFactory() {
38
+ return std::make_shared<CFEventEngine>();
39
39
  }
40
40
 
41
41
  } // namespace grpc_event_engine::experimental
@@ -44,8 +44,8 @@ std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
44
44
 
45
45
  namespace grpc_event_engine::experimental {
46
46
 
47
- std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
48
- return std::make_unique<PosixEventEngine>();
47
+ std::shared_ptr<EventEngine> DefaultEventEngineFactory() {
48
+ return std::make_shared<PosixEventEngine>();
49
49
  }
50
50
 
51
51
  } // namespace grpc_event_engine::experimental
@@ -23,7 +23,7 @@
23
23
  namespace grpc_event_engine::experimental {
24
24
 
25
25
  /// Create an EventEngine using the default factory provided at link time.
26
- std::unique_ptr<EventEngine> DefaultEventEngineFactory();
26
+ std::shared_ptr<EventEngine> DefaultEventEngineFactory();
27
27
 
28
28
  } // namespace grpc_event_engine::experimental
29
29
 
@@ -0,0 +1,39 @@
1
+ // Copyright 2025 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_IOMGR_COMPATIBLE_H
16
+ #define GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_IOMGR_COMPATIBLE_H
17
+
18
+ #include <grpc/event_engine/event_engine.h>
19
+ #include <grpc/support/port_platform.h>
20
+
21
+ #include "absl/functional/any_invocable.h"
22
+ #include "absl/status/statusor.h"
23
+ #include "absl/strings/string_view.h"
24
+
25
+ namespace grpc_event_engine::experimental {
26
+
27
+ class IomgrCompatibleListener {
28
+ public:
29
+ virtual ~IomgrCompatibleListener() = default;
30
+ static absl::string_view EndpointExtensionName() {
31
+ return "io.grpc.event_engine.extension.iomgr_compatible_listener";
32
+ }
33
+ /// Supports shutdown before destruction.
34
+ virtual void Shutdown() = 0;
35
+ };
36
+
37
+ } // namespace grpc_event_engine::experimental
38
+
39
+ #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_IOMGR_COMPATIBLE_H
@@ -0,0 +1,48 @@
1
+ // Copyright 2025 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_SUPPORTS_WIN_SOCKETS_H
16
+ #define GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_SUPPORTS_WIN_SOCKETS_H
17
+
18
+ #include <grpc/support/port_platform.h>
19
+
20
+ #ifdef GRPC_WINSOCK_SOCKET
21
+ #include <grpc/event_engine/event_engine.h>
22
+
23
+ #include "absl/functional/any_invocable.h"
24
+ #include "absl/status/statusor.h"
25
+ #include "absl/strings/string_view.h"
26
+
27
+ namespace grpc_event_engine::experimental {
28
+
29
+ class EventEngineWindowsSocketSupport {
30
+ public:
31
+ virtual ~EventEngineWindowsSocketSupport() = default;
32
+ static absl::string_view EndpointExtensionName() {
33
+ return "io.grpc.event_engine.extension.event_engine_supports_win_sockets";
34
+ }
35
+ /// Creates an EventEngine::Endpoint from a windows SOCKET which is already
36
+ /// assumed to be connected to a remote peer.
37
+ /// Parameters:
38
+ /// \a fd - The connected socket.
39
+ /// \a config - Additional configuration to applied to the endpoint.
40
+ virtual std::unique_ptr<EventEngine::Endpoint> CreateEndpointFromWinSocket(
41
+ SOCKET socket, const EndpointConfig& config) = 0;
42
+ };
43
+
44
+ } // namespace grpc_event_engine::experimental
45
+
46
+ #endif // GRPC_WINSOCK_SOCKET
47
+
48
+ #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_SUPPORTS_WIN_SOCKETS_H
@@ -31,7 +31,7 @@ class TcpTraceExtension {
31
31
  static absl::string_view EndpointExtensionName() {
32
32
  return "io.grpc.event_engine.extension.tcp_trace";
33
33
  }
34
- virtual std::shared_ptr<grpc_core::TcpTracerInterface>
34
+ virtual std::shared_ptr<grpc_core::TcpConnectionTracer>
35
35
  InitializeAndReturnTcpTracer() = 0;
36
36
  };
37
37
 
@@ -277,8 +277,6 @@ void PosixEndpointImpl::FinishEstimate() {
277
277
  }
278
278
 
279
279
  absl::Status PosixEndpointImpl::TcpAnnotateError(absl::Status src_error) const {
280
- grpc_core::StatusSetInt(&src_error, grpc_core::StatusIntProperty::kFd,
281
- handle_->WrappedFd());
282
280
  grpc_core::StatusSetInt(&src_error, grpc_core::StatusIntProperty::kRpcStatus,
283
281
  GRPC_STATUS_UNAVAILABLE);
284
282
  return src_error;
@@ -67,9 +67,7 @@
67
67
 
68
68
  // IWYU pragma: no_include <ratio>
69
69
 
70
- // TODO(eryu): remove this GRPC_CFSTREAM condition when the CFEngine is ready.
71
- // The posix poller currently crashes iOS.
72
- #if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM) && \
70
+ #if defined(GRPC_POSIX_SOCKET_TCP) && \
73
71
  !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
74
72
  #define GRPC_PLATFORM_SUPPORTS_POSIX_POLLING true
75
73
  #else
@@ -20,6 +20,7 @@
20
20
  #include <stdio.h>
21
21
  #include <stdlib.h>
22
22
 
23
+ #include <cstdint>
23
24
  #include <cstring>
24
25
  #include <string>
25
26
 
@@ -226,6 +227,27 @@ absl::StatusOr<ListenerSocket> CreateAndPrepareListenerSocket(
226
227
  return socket;
227
228
  }
228
229
 
230
+ bool IsSockAddrLinkLocal(const EventEngine::ResolvedAddress* resolved_addr) {
231
+ const sockaddr* addr = resolved_addr->address();
232
+ if (addr->sa_family == AF_INET) {
233
+ const sockaddr_in* addr4 = reinterpret_cast<const sockaddr_in*>(addr);
234
+ // Link-local IPv4 addresses are in the range 169.254.0.0/16
235
+ if ((addr4->sin_addr.s_addr & htonl(0xFFFF0000)) == htonl(0xA9FE0000)) {
236
+ return true;
237
+ }
238
+ } else if (addr->sa_family == AF_INET6) {
239
+ const sockaddr_in6* addr6 = reinterpret_cast<const sockaddr_in6*>(addr);
240
+ const uint8_t* addr_bytes = addr6->sin6_addr.s6_addr;
241
+
242
+ // Check the first 10 bits to make sure they are 1111 1110 10
243
+ if ((addr_bytes[0] == 0xfe) && ((addr_bytes[1] & 0xc0) == 0x80)) {
244
+ return true;
245
+ }
246
+ }
247
+
248
+ return false;
249
+ }
250
+
229
251
  absl::StatusOr<int> ListenerContainerAddAllLocalAddresses(
230
252
  ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options,
231
253
  int requested_port) {
@@ -271,6 +293,10 @@ absl::StatusOr<int> ListenerContainerAddAllLocalAddresses(
271
293
  addr = EventEngine::ResolvedAddress(ifa_it->ifa_addr, len);
272
294
  ResolvedAddressSetPort(addr, requested_port);
273
295
  std::string addr_str = *ResolvedAddressToString(addr);
296
+ if (IsSockAddrLinkLocal(&addr)) {
297
+ /* Exclude link-local addresses. */
298
+ continue;
299
+ }
274
300
  VLOG(2) << absl::StrFormat(
275
301
  "Adding local addr from interface %s flags 0x%x to server: %s",
276
302
  ifa_name, ifa_it->ifa_flags, addr_str.c_str());
@@ -82,6 +82,10 @@ absl::StatusOr<int> ListenerContainerAddAllLocalAddresses(
82
82
  ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options,
83
83
  int requested_port);
84
84
 
85
+ // Returns true if addr is link-local (i.e. within the range 169.254.0.0/16 or
86
+ // fe80::/10).
87
+ bool IsSockAddrLinkLocal(const EventEngine::ResolvedAddress* resolved_addr);
88
+
85
89
  } // namespace grpc_event_engine::experimental
86
90
 
87
91
  #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENGINE_LISTENER_UTILS_H
@@ -0,0 +1,64 @@
1
+ // Copyright 2022 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include <errno.h>
16
+ #include <grpc/event_engine/event_engine.h>
17
+ #include <grpc/event_engine/memory_allocator.h>
18
+ #include <grpc/impl/channel_arg_names.h>
19
+ #include <grpc/support/port_platform.h>
20
+ #include <limits.h>
21
+
22
+ #include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
23
+ #include "src/core/lib/iomgr/port.h"
24
+ #include "src/core/util/crash.h" // IWYU pragma: keep
25
+
26
+ #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
27
+ #include <arpa/inet.h> // IWYU pragma: keep
28
+ #ifdef GRPC_LINUX_TCP_H
29
+ #include <linux/tcp.h>
30
+ #else
31
+ #include <netinet/in.h> // IWYU pragma: keep
32
+ #include <netinet/tcp.h>
33
+ #endif
34
+ #include <fcntl.h>
35
+ #include <sys/socket.h>
36
+ #include <unistd.h>
37
+ #endif // GRPC_POSIX_SOCKET_UTILS_COMMON
38
+
39
+ #ifdef GRPC_HAVE_UNIX_SOCKET
40
+ #ifdef GPR_WINDOWS
41
+ // clang-format off
42
+ #include <ws2def.h>
43
+ #include <afunix.h>
44
+ // clang-format on
45
+ #else
46
+ #include <sys/stat.h> // IWYU pragma: keep
47
+ #include <sys/un.h>
48
+ #endif // GPR_WINDOWS
49
+ #endif
50
+
51
+ namespace grpc_event_engine::experimental {
52
+
53
+ #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
54
+ #ifndef GRPC_SET_SOCKET_DUALSTACK_CUSTOM
55
+
56
+ bool SetSocketDualStack(int fd) {
57
+ const int off = 0;
58
+ return 0 == setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &off, sizeof(off));
59
+ }
60
+
61
+ #endif // GRPC_SET_SOCKET_DUALSTACK_CUSTOM
62
+ #endif // GRPC_POSIX_SOCKET_UTILS_COMMON
63
+
64
+ } // namespace grpc_event_engine::experimental
@@ -150,17 +150,6 @@ absl::Status PrepareTcpClientSocket(PosixSocketWrapper sock,
150
150
 
151
151
  } // namespace
152
152
 
153
- #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
154
- #ifndef GRPC_SET_SOCKET_DUALSTACK_CUSTOM
155
-
156
- bool SetSocketDualStack(int fd) {
157
- const int off = 0;
158
- return 0 == setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &off, sizeof(off));
159
- }
160
-
161
- #endif // GRPC_SET_SOCKET_DUALSTACK_CUSTOM
162
- #endif // GRPC_POSIX_SOCKET_UTILS_COMMON
163
-
164
153
  PosixTcpOptions TcpOptionsFromEndpointConfig(const EndpointConfig& config) {
165
154
  void* value;
166
155
  PosixTcpOptions options;
@@ -64,9 +64,17 @@ absl::Status PipeWakeupFd::Init() {
64
64
  absl::StrCat("pipe: ", grpc_core::StrError(errno)));
65
65
  }
66
66
  auto status = SetSocketNonBlocking(pipefd[0]);
67
- if (!status.ok()) return status;
67
+ if (!status.ok()) {
68
+ close(pipefd[0]);
69
+ close(pipefd[1]);
70
+ return status;
71
+ }
68
72
  status = SetSocketNonBlocking(pipefd[1]);
69
- if (!status.ok()) return status;
73
+ if (!status.ok()) {
74
+ close(pipefd[0]);
75
+ close(pipefd[1]);
76
+ return status;
77
+ }
70
78
  SetWakeupFds(pipefd[0], pipefd[1]);
71
79
  return absl::OkStatus();
72
80
  }
@@ -22,29 +22,22 @@
22
22
  namespace grpc_event_engine::experimental {
23
23
 
24
24
  bool UseEventEngineClient() {
25
- // TODO(hork, eryu): Adjust the ifdefs accordingly when event engines become
26
- // available for other platforms.
27
- #if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM) && \
28
- !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
29
- return grpc_core::IsEventEngineClientEnabled();
30
- #elif defined(GPR_WINDOWS) && !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
31
- return grpc_core::IsEventEngineClientEnabled();
32
- #elif GRPC_IOS_EVENT_ENGINE_CLIENT
33
- return true;
34
- #else
25
+ #if defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
35
26
  return false;
36
27
  #endif
28
+ return grpc_core::IsEventEngineClientEnabled();
37
29
  }
38
30
 
39
31
  bool UseEventEngineListener() {
40
- // TODO(hork, eryu): Adjust the ifdefs accordingly when event engines become
41
- // available for other platforms.
42
- #if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM) && \
43
- !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
44
- return grpc_core::IsEventEngineListenerEnabled();
45
- #else
32
+ #if defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
46
33
  return false;
47
34
  #endif
35
+ return grpc_core::IsEventEngineListenerEnabled();
36
+ }
37
+
38
+ bool UsePollsetAlternative() {
39
+ return UseEventEngineClient() && UseEventEngineListener() &&
40
+ grpc_core::IsPollsetAlternativeEnabled();
48
41
  }
49
42
 
50
43
  } // namespace grpc_event_engine::experimental
@@ -20,10 +20,21 @@
20
20
 
21
21
  namespace grpc_event_engine::experimental {
22
22
 
23
+ // Returns true if the EventEngine client shim should be used.
24
+ // This is based on the experiment state, and compile-time configurations that
25
+ // may disable the poller in some builds.
23
26
  bool UseEventEngineClient();
24
27
 
28
+ // Returns true if the EventEngine listener shim should be used.
29
+ // This is based on the experiment state, and compile-time configurations that
30
+ // may disable the poller in some builds.
25
31
  bool UseEventEngineListener();
26
32
 
33
+ // Returns true if the pollset alternative experiment should be used.
34
+ // This is based on the experiment state, and compile-time configurations that
35
+ // may disable the poller in some builds.
36
+ bool UsePollsetAlternative();
37
+
27
38
  } // namespace grpc_event_engine::experimental
28
39
 
29
40
  #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_SHIM_H