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
@@ -28,7 +28,9 @@
28
28
  #include "absl/meta/type_traits.h"
29
29
  #include "absl/random/random.h"
30
30
  #include "absl/status/statusor.h"
31
+ #include "src/core/call/metadata_batch.h"
31
32
  #include "src/core/config/core_configuration.h"
33
+ #include "src/core/ext/transport/chttp2/transport/http2_status.h"
32
34
  #include "src/core/lib/channel/channel_args.h"
33
35
  #include "src/core/lib/channel/promise_based_filter.h"
34
36
  #include "src/core/lib/debug/trace.h"
@@ -44,8 +46,6 @@
44
46
  #include "src/core/lib/promise/try_seq.h"
45
47
  #include "src/core/lib/resource_quota/arena.h"
46
48
  #include "src/core/lib/surface/channel_stack_type.h"
47
- #include "src/core/lib/transport/http2_errors.h"
48
- #include "src/core/lib/transport/metadata_batch.h"
49
49
  #include "src/core/util/debug_location.h"
50
50
  #include "src/core/util/no_destruct.h"
51
51
  #include "src/core/util/orphanable.h"
@@ -55,12 +55,14 @@
55
55
 
56
56
  namespace grpc_core {
57
57
 
58
- namespace {
58
+ using http2::Http2ErrorCode;
59
59
 
60
+ namespace {
60
61
  constexpr Duration kDefaultIdleTimeout = Duration::Minutes(30);
61
62
 
62
63
  // If these settings change, make sure that we are not sending a GOAWAY for
63
- // inproc transport, since a GOAWAY to inproc ends up destroying the transport.
64
+ // inproc transport, since a GOAWAY to inproc ends up destroying the
65
+ // transport.
64
66
  const auto kDefaultMaxConnectionAge = Duration::Infinity();
65
67
  const auto kDefaultMaxConnectionAgeGrace = Duration::Infinity();
66
68
  const auto kDefaultMaxConnectionIdle = Duration::Infinity();
@@ -184,7 +186,8 @@ void LegacyMaxAgeFilter::PostInit() {
184
186
  grpc_transport_op* op = grpc_make_transport_op(nullptr);
185
187
  op->goaway_error = grpc_error_set_int(
186
188
  GRPC_ERROR_CREATE("max_age"),
187
- StatusIntProperty::kHttp2Error, GRPC_HTTP2_NO_ERROR);
189
+ StatusIntProperty::kHttp2Error,
190
+ static_cast<intptr_t>(Http2ErrorCode::kNoError));
188
191
  grpc_channel_element* elem =
189
192
  grpc_channel_stack_element(channel_stack, 0);
190
193
  elem->filter->start_transport_op(elem, op);
@@ -35,15 +35,15 @@
35
35
  #include "absl/strings/numbers.h"
36
36
  #include "absl/strings/str_cat.h"
37
37
  #include "absl/strings/string_view.h"
38
+ #include "src/core/call/metadata_batch.h"
39
+ #include "src/core/call/status_util.h"
38
40
  #include "src/core/config/core_configuration.h"
39
41
  #include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h"
40
42
  #include "src/core/lib/channel/channel_stack.h"
41
- #include "src/core/lib/channel/status_util.h"
42
43
  #include "src/core/lib/debug/trace.h"
43
44
  #include "src/core/lib/promise/context.h"
44
45
  #include "src/core/lib/promise/sleep.h"
45
46
  #include "src/core/lib/promise/try_seq.h"
46
- #include "src/core/lib/transport/metadata_batch.h"
47
47
  #include "src/core/lib/transport/transport.h"
48
48
  #include "src/core/service_config/service_config_call_data.h"
49
49
  #include "src/core/util/time.h"
@@ -21,8 +21,8 @@
21
21
  #include <optional>
22
22
  #include <vector>
23
23
 
24
+ #include "src/core/call/status_util.h"
24
25
  #include "src/core/lib/channel/channel_args.h"
25
- #include "src/core/lib/channel/status_util.h"
26
26
 
27
27
  namespace grpc_core {
28
28
 
@@ -22,13 +22,13 @@
22
22
 
23
23
  #include "absl/log/check.h"
24
24
  #include "absl/strings/str_cat.h"
25
+ #include "src/core/call/security_context.h"
25
26
  #include "src/core/config/core_configuration.h"
27
+ #include "src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h"
26
28
  #include "src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h"
27
29
  #include "src/core/lib/channel/channel_stack.h"
28
30
  #include "src/core/lib/promise/context.h"
29
31
  #include "src/core/lib/resource_quota/arena.h"
30
- #include "src/core/lib/security/context/security_context.h"
31
- #include "src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h"
32
32
  #include "src/core/lib/transport/transport.h"
33
33
  #include "src/core/resolver/xds/xds_resolver_attributes.h"
34
34
  #include "src/core/service_config/service_config.h"
@@ -23,12 +23,12 @@
23
23
  #include "absl/status/status.h"
24
24
  #include "absl/status/statusor.h"
25
25
  #include "absl/strings/string_view.h"
26
+ #include "src/core/credentials/call/call_credentials.h"
26
27
  #include "src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h"
27
28
  #include "src/core/filter/blackboard.h"
28
29
  #include "src/core/lib/channel/channel_args.h"
29
30
  #include "src/core/lib/channel/channel_fwd.h"
30
31
  #include "src/core/lib/channel/promise_based_filter.h"
31
- #include "src/core/lib/security/credentials/credentials.h"
32
32
  #include "src/core/lib/transport/transport.h"
33
33
  #include "src/core/resolver/xds/xds_config.h"
34
34
  #include "src/core/util/lru_cache.h"
@@ -21,11 +21,11 @@
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
23
  #include "absl/status/statusor.h"
24
+ #include "src/core/call/metadata_batch.h"
24
25
  #include "src/core/lib/channel/channel_args.h"
25
26
  #include "src/core/lib/channel/channel_fwd.h"
26
27
  #include "src/core/lib/channel/promise_based_filter.h"
27
28
  #include "src/core/lib/slice/slice.h"
28
- #include "src/core/lib/transport/metadata_batch.h"
29
29
  #include "src/core/lib/transport/transport.h"
30
30
 
31
31
  namespace grpc_core {
@@ -27,11 +27,11 @@
27
27
 
28
28
  #include "absl/status/status.h"
29
29
  #include "absl/strings/string_view.h"
30
+ #include "src/core/call/metadata_batch.h"
30
31
  #include "src/core/config/core_configuration.h"
32
+ #include "src/core/filter/auth/auth_filters.h"
31
33
  #include "src/core/lib/channel/channel_stack.h"
32
- #include "src/core/lib/security/transport/auth_filters.h"
33
34
  #include "src/core/lib/surface/channel_stack_type.h"
34
- #include "src/core/lib/transport/metadata_batch.h"
35
35
  #include "src/core/util/latent_see.h"
36
36
 
37
37
  namespace grpc_core {
@@ -30,6 +30,7 @@
30
30
  #include "absl/status/status.h"
31
31
  #include "absl/strings/str_cat.h"
32
32
  #include "absl/strings/str_format.h"
33
+ #include "src/core/call/metadata_batch.h"
33
34
  #include "src/core/ext/filters/message_size/message_size_filter.h"
34
35
  #include "src/core/lib/channel/channel_args.h"
35
36
  #include "src/core/lib/channel/channel_stack.h"
@@ -45,7 +46,6 @@
45
46
  #include "src/core/lib/resource_quota/arena.h"
46
47
  #include "src/core/lib/slice/slice_buffer.h"
47
48
  #include "src/core/lib/surface/call.h"
48
- #include "src/core/lib/transport/metadata_batch.h"
49
49
  #include "src/core/lib/transport/transport.h"
50
50
  #include "src/core/telemetry/call_tracer.h"
51
51
  #include "src/core/util/latent_see.h"
@@ -28,12 +28,12 @@
28
28
 
29
29
  #include "absl/status/statusor.h"
30
30
  #include "absl/strings/string_view.h"
31
+ #include "src/core/call/metadata_batch.h"
31
32
  #include "src/core/lib/channel/channel_args.h"
32
33
  #include "src/core/lib/channel/channel_fwd.h"
33
34
  #include "src/core/lib/channel/promise_based_filter.h"
34
35
  #include "src/core/lib/compression/compression_internal.h"
35
36
  #include "src/core/lib/promise/arena_promise.h"
36
- #include "src/core/lib/transport/metadata_batch.h"
37
37
  #include "src/core/lib/transport/transport.h"
38
38
 
39
39
  namespace grpc_core {
@@ -30,6 +30,7 @@
30
30
  #include "absl/base/attributes.h"
31
31
  #include "absl/log/log.h"
32
32
  #include "absl/strings/string_view.h"
33
+ #include "src/core/call/metadata_batch.h"
33
34
  #include "src/core/lib/channel/channel_args.h"
34
35
  #include "src/core/lib/channel/channel_stack.h"
35
36
  #include "src/core/lib/debug/trace.h"
@@ -42,7 +43,6 @@
42
43
  #include "src/core/lib/resource_quota/arena.h"
43
44
  #include "src/core/lib/slice/percent_encoding.h"
44
45
  #include "src/core/lib/slice/slice.h"
45
- #include "src/core/lib/transport/metadata_batch.h"
46
46
  #include "src/core/util/latent_see.h"
47
47
 
48
48
  namespace grpc_core {
@@ -26,6 +26,7 @@
26
26
 
27
27
  #include "absl/log/log.h"
28
28
  #include "absl/strings/str_format.h"
29
+ #include "src/core/call/metadata_batch.h"
29
30
  #include "src/core/config/core_configuration.h"
30
31
  #include "src/core/lib/channel/channel_args.h"
31
32
  #include "src/core/lib/channel/channel_stack.h"
@@ -38,7 +39,6 @@
38
39
  #include "src/core/lib/slice/slice.h"
39
40
  #include "src/core/lib/slice/slice_buffer.h"
40
41
  #include "src/core/lib/surface/channel_stack_type.h"
41
- #include "src/core/lib/transport/metadata_batch.h"
42
42
  #include "src/core/lib/transport/transport.h"
43
43
  #include "src/core/service_config/service_config_call_data.h"
44
44
  #include "src/core/util/latent_see.h"
@@ -24,6 +24,7 @@
24
24
  #include <utility>
25
25
 
26
26
  #include "absl/status/status.h"
27
+ #include "src/core/call/metadata_batch.h"
27
28
  #include "src/core/config/core_configuration.h"
28
29
  #include "src/core/ext/filters/rbac/rbac_service_config_parser.h"
29
30
  #include "src/core/lib/channel/channel_args.h"
@@ -33,10 +34,9 @@
33
34
  #include "src/core/lib/promise/promise.h"
34
35
  #include "src/core/lib/security/authorization/authorization_engine.h"
35
36
  #include "src/core/lib/security/authorization/grpc_authorization_engine.h"
36
- #include "src/core/lib/security/context/security_context.h"
37
- #include "src/core/lib/transport/metadata_batch.h"
38
37
  #include "src/core/lib/transport/transport.h"
39
38
  #include "src/core/service_config/service_config_call_data.h"
39
+ #include "src/core/transport/auth_context.h"
40
40
  #include "src/core/util/latent_see.h"
41
41
 
42
42
  namespace grpc_core {
@@ -35,6 +35,7 @@
35
35
  #include "absl/strings/str_split.h"
36
36
  #include "absl/strings/string_view.h"
37
37
  #include "absl/strings/strip.h"
38
+ #include "src/core/call/metadata_batch.h"
38
39
  #include "src/core/config/core_configuration.h"
39
40
  #include "src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h"
40
41
  #include "src/core/lib/channel/channel_stack.h"
@@ -44,7 +45,6 @@
44
45
  #include "src/core/lib/promise/pipe.h"
45
46
  #include "src/core/lib/resource_quota/arena.h"
46
47
  #include "src/core/lib/slice/slice.h"
47
- #include "src/core/lib/transport/metadata_batch.h"
48
48
  #include "src/core/lib/transport/transport.h"
49
49
  #include "src/core/resolver/xds/xds_resolver_attributes.h"
50
50
  #include "src/core/service_config/service_config_call_data.h"
@@ -43,6 +43,9 @@
43
43
  #include "src/core/client_channel/connector.h"
44
44
  #include "src/core/client_channel/subchannel.h"
45
45
  #include "src/core/config/core_configuration.h"
46
+ #include "src/core/credentials/transport/insecure/insecure_credentials.h"
47
+ #include "src/core/credentials/transport/security_connector.h"
48
+ #include "src/core/credentials/transport/transport_credentials.h"
46
49
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
47
50
  #include "src/core/handshaker/handshaker.h"
48
51
  #include "src/core/handshaker/handshaker_registry.h"
@@ -55,9 +58,6 @@
55
58
  #include "src/core/lib/iomgr/endpoint.h"
56
59
  #include "src/core/lib/iomgr/exec_ctx.h"
57
60
  #include "src/core/lib/iomgr/resolved_address.h"
58
- #include "src/core/lib/security/credentials/credentials.h"
59
- #include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
60
- #include "src/core/lib/security/security_connector/security_connector.h"
61
61
  #include "src/core/lib/surface/channel.h"
62
62
  #include "src/core/lib/surface/channel_create.h"
63
63
  #include "src/core/lib/surface/channel_stack_type.h"
@@ -48,6 +48,9 @@
48
48
  #include "absl/strings/strip.h"
49
49
  #include "src/core/channelz/channelz.h"
50
50
  #include "src/core/config/core_configuration.h"
51
+ #include "src/core/credentials/transport/insecure/insecure_credentials.h"
52
+ #include "src/core/credentials/transport/security_connector.h"
53
+ #include "src/core/credentials/transport/transport_credentials.h"
51
54
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
52
55
  #include "src/core/ext/transport/chttp2/transport/internal.h"
53
56
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
@@ -75,9 +78,6 @@
75
78
  #include "src/core/lib/resource_quota/connection_quota.h"
76
79
  #include "src/core/lib/resource_quota/memory_quota.h"
77
80
  #include "src/core/lib/resource_quota/resource_quota.h"
78
- #include "src/core/lib/security/credentials/credentials.h"
79
- #include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
80
- #include "src/core/lib/security/security_connector/security_connector.h"
81
81
  #include "src/core/lib/transport/error_utils.h"
82
82
  #include "src/core/lib/transport/transport.h"
83
83
  #include "src/core/server/server.h"
@@ -103,6 +103,7 @@ using grpc_event_engine::experimental::ChannelArgsEndpointConfig;
103
103
  using grpc_event_engine::experimental::EventEngine;
104
104
  using grpc_event_engine::experimental::EventEngineSupportsFdExtension;
105
105
  using grpc_event_engine::experimental::QueryExtension;
106
+ using http2::Http2ErrorCode;
106
107
 
107
108
  const char kUnixUriPrefix[] = "unix:";
108
109
  const char kUnixAbstractUriPrefix[] = "unix-abstract:";
@@ -631,7 +632,8 @@ void Chttp2ServerListener::ActiveConnection::SendGoAway() {
631
632
  // Set an HTTP2 error of NO_ERROR to do graceful GOAWAYs.
632
633
  op->goaway_error = grpc_error_set_int(
633
634
  GRPC_ERROR_CREATE("Server is stopping to serve requests."),
634
- StatusIntProperty::kHttp2Error, GRPC_HTTP2_NO_ERROR);
635
+ StatusIntProperty::kHttp2Error,
636
+ static_cast<intptr_t>(Http2ErrorCode::kNoError));
635
637
  transport->PerformOp(op);
636
638
  }
637
639
  }
@@ -1214,7 +1216,8 @@ void NewChttp2ServerListener::ActiveConnection::SendGoAwayImplLocked() {
1214
1216
  // Set an HTTP2 error of NO_ERROR to do graceful GOAWAYs.
1215
1217
  op->goaway_error = grpc_error_set_int(
1216
1218
  GRPC_ERROR_CREATE("Server is stopping to serve requests."),
1217
- StatusIntProperty::kHttp2Error, GRPC_HTTP2_NO_ERROR);
1219
+ StatusIntProperty::kHttp2Error,
1220
+ static_cast<intptr_t>(Http2ErrorCode::kNoError));
1218
1221
  transport->PerformOp(op);
1219
1222
  }
1220
1223
  });
@@ -19,6 +19,7 @@
19
19
  #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H
20
20
  #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H
21
21
 
22
+ #include <grpc/byte_buffer.h>
22
23
  #include <grpc/event_engine/event_engine.h>
23
24
  #include <grpc/passive_listener.h>
24
25
  #include <grpc/support/port_platform.h>
@@ -35,7 +36,10 @@ namespace grpc_core {
35
36
 
36
37
  struct AcceptorDeleter {
37
38
  void operator()(grpc_tcp_server_acceptor* acceptor) const {
38
- gpr_free(acceptor);
39
+ if (acceptor != nullptr) {
40
+ grpc_byte_buffer_destroy(acceptor->pending_data);
41
+ gpr_free(acceptor);
42
+ }
39
43
  }
40
44
  };
41
45
 
@@ -30,7 +30,7 @@ void Chttp2CallTracerWrapper::RecordIncomingBytes(
30
30
  stream_->stats.incoming.header_bytes += transport_byte_size.header_bytes;
31
31
  // Update new API.
32
32
  if (!IsCallTracerInTransportEnabled()) return;
33
- auto* call_tracer = stream_->CallTracer();
33
+ auto* call_tracer = stream_->call_tracer;
34
34
  if (call_tracer != nullptr) {
35
35
  call_tracer->RecordIncomingBytes(transport_byte_size);
36
36
  }
@@ -44,7 +44,7 @@ void Chttp2CallTracerWrapper::RecordOutgoingBytes(
44
44
  stream_->stats.outgoing.header_bytes +=
45
45
  transport_byte_size.header_bytes; // Update new API.
46
46
  if (!IsCallTracerInTransportEnabled()) return;
47
- auto* call_tracer = stream_->CallTracer();
47
+ auto* call_tracer = stream_->call_tracer;
48
48
  if (call_tracer != nullptr) {
49
49
  call_tracer->RecordOutgoingBytes(transport_byte_size);
50
50
  }
@@ -54,9 +54,7 @@ class Chttp2CallTracerWrapper final : public CallTracerInterface {
54
54
  void RecordReceivedDecompressedMessage(
55
55
  const Message& /*recv_decompressed_message*/) override {}
56
56
  void RecordCancel(grpc_error_handle /*cancel_error*/) override {}
57
- std::shared_ptr<TcpTracerInterface> StartNewTcpTrace() override {
58
- return nullptr;
59
- }
57
+ std::shared_ptr<TcpCallTracer> StartNewTcpTrace() override { return nullptr; }
60
58
  void RecordAnnotation(absl::string_view /*annotation*/) override {}
61
59
  void RecordAnnotation(const Annotation& /*annotation*/) override {}
62
60
  std::string TraceId() override { return ""; }
@@ -55,6 +55,8 @@
55
55
  #include "absl/strings/str_cat.h"
56
56
  #include "absl/strings/str_format.h"
57
57
  #include "absl/strings/string_view.h"
58
+ #include "src/core/call/metadata_batch.h"
59
+ #include "src/core/call/metadata_info.h"
58
60
  #include "src/core/config/config_vars.h"
59
61
  #include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h"
60
62
  #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
@@ -65,6 +67,7 @@
65
67
  #include "src/core/ext/transport/chttp2/transport/frame_security.h"
66
68
  #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
67
69
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
70
+ #include "src/core/ext/transport/chttp2/transport/http2_status.h"
68
71
  #include "src/core/ext/transport/chttp2/transport/internal.h"
69
72
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
70
73
  #include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h"
@@ -95,16 +98,12 @@
95
98
  #include "src/core/lib/transport/bdp_estimator.h"
96
99
  #include "src/core/lib/transport/connectivity_state.h"
97
100
  #include "src/core/lib/transport/error_utils.h"
98
- #include "src/core/lib/transport/http2_errors.h"
99
- #include "src/core/lib/transport/metadata_batch.h"
100
- #include "src/core/lib/transport/metadata_info.h"
101
101
  #include "src/core/lib/transport/status_conversion.h"
102
102
  #include "src/core/lib/transport/transport.h"
103
103
  #include "src/core/lib/transport/transport_framing_endpoint_extension.h"
104
104
  #include "src/core/telemetry/call_tracer.h"
105
105
  #include "src/core/telemetry/stats.h"
106
106
  #include "src/core/telemetry/stats_data.h"
107
- #include "src/core/telemetry/tcp_tracer.h"
108
107
  #include "src/core/util/bitset.h"
109
108
  #include "src/core/util/crash.h"
110
109
  #include "src/core/util/debug_location.h"
@@ -226,6 +225,7 @@ namespace {
226
225
 
227
226
  using EventEngine = ::grpc_event_engine::experimental::EventEngine;
228
227
  using TaskHandle = ::grpc_event_engine::experimental::EventEngine::TaskHandle;
228
+ using grpc_core::http2::Http2ErrorCode;
229
229
 
230
230
  grpc_core::CallTracerAnnotationInterface* ParentCallTracerIfSampled(
231
231
  grpc_chttp2_stream* s) {
@@ -237,16 +237,6 @@ grpc_core::CallTracerAnnotationInterface* ParentCallTracerIfSampled(
237
237
  return parent_call_tracer;
238
238
  }
239
239
 
240
- std::shared_ptr<grpc_core::TcpTracerInterface> TcpTracerIfSampled(
241
- grpc_chttp2_stream* s) {
242
- auto* call_attempt_tracer =
243
- s->arena->GetContext<grpc_core::CallTracerInterface>();
244
- if (call_attempt_tracer == nullptr || !call_attempt_tracer->IsSampled()) {
245
- return nullptr;
246
- }
247
- return call_attempt_tracer->StartNewTcpTrace();
248
- }
249
-
250
240
  grpc_core::WriteTimestampsCallback g_write_timestamps_callback = nullptr;
251
241
  grpc_core::CopyContextFn g_get_copied_context_fn = nullptr;
252
242
  } // namespace
@@ -724,11 +714,7 @@ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
724
714
  grpc_core::RefCountedPtr<grpc_chttp2_transport> t(
725
715
  static_cast<grpc_chttp2_transport*>(tp));
726
716
  t->destroying = 1;
727
- close_transport_locked(
728
- t.get(),
729
- grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
730
- grpc_core::StatusIntProperty::kOccurredDuringWrite,
731
- t->write_state));
717
+ close_transport_locked(t.get(), GRPC_ERROR_CREATE("Transport destroyed"));
732
718
  t->memory_owner.Reset();
733
719
  }
734
720
 
@@ -860,7 +846,8 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
860
846
  }()),
861
847
  arena(arena),
862
848
  flow_control(&t->flow_control),
863
- call_tracer_wrapper(this) {
849
+ call_tracer_wrapper(this),
850
+ call_tracer(arena->GetContext<grpc_core::CallTracerInterface>()) {
864
851
  t->streams_allocated.fetch_add(1, std::memory_order_relaxed);
865
852
  if (server_data) {
866
853
  id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
@@ -1197,7 +1184,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1197
1184
  << last_stream_id;
1198
1185
  // We want to log this irrespective of whether http tracing is enabled if we
1199
1186
  // received a GOAWAY with a non NO_ERROR code.
1200
- if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1187
+ if (goaway_error != static_cast<int>(Http2ErrorCode::kNoError)) {
1201
1188
  LOG(INFO) << t->peer_string.as_string_view() << ": Got goaway ["
1202
1189
  << goaway_error
1203
1190
  << "] err=" << grpc_core::StatusToString(t->goaway_error);
@@ -1224,7 +1211,8 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1224
1211
  // that is enabled by default and double the configured KEEPALIVE_TIME used
1225
1212
  // for new connections on that channel.
1226
1213
  if (GPR_UNLIKELY(t->is_client &&
1227
- goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
1214
+ goaway_error ==
1215
+ static_cast<int>(Http2ErrorCode::kEnhanceYourCalm) &&
1228
1216
  goaway_text == "too_many_pings")) {
1229
1217
  LOG(ERROR) << t->peer_string.as_string_view()
1230
1218
  << ": Received a GOAWAY with error code ENHANCE_YOUR_CALM and "
@@ -1390,9 +1378,8 @@ static void trace_annotations(grpc_chttp2_stream* s) {
1390
1378
  .Add(s->flow_control.stats()));
1391
1379
  }
1392
1380
  } else {
1393
- auto* call_tracer = s->CallTracer();
1394
- if (call_tracer != nullptr && call_tracer->IsSampled()) {
1395
- call_tracer->RecordAnnotation(
1381
+ if (s->call_tracer != nullptr && s->call_tracer->IsSampled()) {
1382
+ s->call_tracer->RecordAnnotation(
1396
1383
  grpc_core::HttpAnnotation(grpc_core::HttpAnnotation::Type::kStart,
1397
1384
  gpr_now(GPR_CLOCK_REALTIME))
1398
1385
  .Add(s->t->flow_control.stats())
@@ -1649,14 +1636,13 @@ static void perform_stream_op_locked(void* stream_op,
1649
1636
  if (!grpc_core::IsCallTracerTransportFixEnabled()) {
1650
1637
  s->parent_call_tracer = ParentCallTracerIfSampled(s);
1651
1638
  }
1652
- // TODO(yashykt): Remove call_tracer field after transition to call v3. (See
1653
- // https://github.com/grpc/grpc/pull/38729 for more information.) On the
1654
- // client, the call attempt tracer will be available for use when the
1655
- // send_initial_metadata op arrives.
1656
- if (s->t->is_client && op->send_initial_metadata) {
1639
+ // Some server filters populate CallTracerInterface in the context only after
1640
+ // reading initial metadata. (Client-side population is done by
1641
+ // client_channel filter.)
1642
+ if (!t->is_client && !grpc_core::IsCallTracerInTransportEnabled() &&
1643
+ op->send_initial_metadata) {
1657
1644
  s->call_tracer = s->arena->GetContext<grpc_core::CallTracerInterface>();
1658
1645
  }
1659
- s->tcp_tracer = TcpTracerIfSampled(s);
1660
1646
  if (GRPC_TRACE_FLAG_ENABLED(http)) {
1661
1647
  LOG(INFO) << "perform_stream_op_locked[s=" << s << "; op=" << op
1662
1648
  << "]: " << grpc_transport_stream_op_batch_string(op, false)
@@ -1847,9 +1833,10 @@ void grpc_chttp2_keepalive_timeout(
1847
1833
  << ": Keepalive timeout. Closing transport.";
1848
1834
  send_goaway(
1849
1835
  t.get(),
1850
- grpc_error_set_int(GRPC_ERROR_CREATE("keepalive_timeout"),
1851
- grpc_core::StatusIntProperty::kHttp2Error,
1852
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
1836
+ grpc_error_set_int(
1837
+ GRPC_ERROR_CREATE("keepalive_timeout"),
1838
+ grpc_core::StatusIntProperty::kHttp2Error,
1839
+ static_cast<intptr_t>(Http2ErrorCode::kEnhanceYourCalm)),
1853
1840
  /*immediate_disconnect_hint=*/true);
1854
1841
  close_transport_locked(
1855
1842
  t.get(),
@@ -1868,9 +1855,10 @@ void grpc_chttp2_ping_timeout(
1868
1855
  << ": Ping timeout. Closing transport.";
1869
1856
  send_goaway(
1870
1857
  t.get(),
1871
- grpc_error_set_int(GRPC_ERROR_CREATE("ping_timeout"),
1872
- grpc_core::StatusIntProperty::kHttp2Error,
1873
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
1858
+ grpc_error_set_int(
1859
+ GRPC_ERROR_CREATE("ping_timeout"),
1860
+ grpc_core::StatusIntProperty::kHttp2Error,
1861
+ static_cast<intptr_t>(Http2ErrorCode::kEnhanceYourCalm)),
1874
1862
  /*immediate_disconnect_hint=*/true);
1875
1863
  close_transport_locked(
1876
1864
  t.get(),
@@ -1889,9 +1877,10 @@ void grpc_chttp2_settings_timeout(
1889
1877
  << ": Settings timeout. Closing transport.";
1890
1878
  send_goaway(
1891
1879
  t.get(),
1892
- grpc_error_set_int(GRPC_ERROR_CREATE("settings_timeout"),
1893
- grpc_core::StatusIntProperty::kHttp2Error,
1894
- GRPC_HTTP2_SETTINGS_TIMEOUT),
1880
+ grpc_error_set_int(
1881
+ GRPC_ERROR_CREATE("settings_timeout"),
1882
+ grpc_core::StatusIntProperty::kHttp2Error,
1883
+ static_cast<intptr_t>(Http2ErrorCode::kSettingsTimeout)),
1895
1884
  /*immediate_disconnect_hint=*/true);
1896
1885
  close_transport_locked(
1897
1886
  t.get(),
@@ -1991,7 +1980,7 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1991
1980
 
1992
1981
  static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1993
1982
  const bool immediate_disconnect_hint) {
1994
- grpc_http2_error_code http_error;
1983
+ Http2ErrorCode http_error;
1995
1984
  std::string message;
1996
1985
  grpc_error_get_status(error, grpc_core::Timestamp::InfFuture(), nullptr,
1997
1986
  &message, &http_error, nullptr);
@@ -2021,9 +2010,10 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
2021
2010
 
2022
2011
  void grpc_chttp2_exceeded_ping_strikes(grpc_chttp2_transport* t) {
2023
2012
  send_goaway(t,
2024
- grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
2025
- grpc_core::StatusIntProperty::kHttp2Error,
2026
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
2013
+ grpc_error_set_int(
2014
+ GRPC_ERROR_CREATE("too_many_pings"),
2015
+ grpc_core::StatusIntProperty::kHttp2Error,
2016
+ static_cast<intptr_t>(Http2ErrorCode::kEnhanceYourCalm)),
2027
2017
  /*immediate_disconnect_hint=*/true);
2028
2018
  // The transport will be closed after the write is done
2029
2019
  close_transport_locked(
@@ -2306,14 +2296,25 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2306
2296
  }
2307
2297
  if (!s->read_closed || !s->write_closed) {
2308
2298
  if (s->id != 0) {
2309
- grpc_http2_error_code http_error;
2299
+ Http2ErrorCode http_error;
2310
2300
  grpc_error_get_status(due_to_error, s->deadline, nullptr, nullptr,
2311
2301
  &http_error, nullptr);
2312
2302
  grpc_core::MaybeTarpit(
2313
2303
  t, tarpit,
2314
- [id = s->id, http_error,
2304
+ // Capture the individual fields of the stream by value, since the
2305
+ // stream state might have been deleted by the time we run the lambda.
2306
+ [id = s->id, sent_initial_metadata = s->sent_initial_metadata,
2307
+ http_error,
2315
2308
  remove_stream_handle = grpc_chttp2_mark_stream_closed(
2316
2309
  t, s, 1, 1, due_to_error)](grpc_chttp2_transport* t) {
2310
+ // Do not send RST_STREAM from the client for a stream that hasn't
2311
+ // sent headers yet (still in "idle" state). Note that since we have
2312
+ // marked the stream closed above, we won't be writing to it
2313
+ // anymore.
2314
+ if (grpc_core::IsRstStreamFixEnabled() && t->is_client &&
2315
+ !sent_initial_metadata) {
2316
+ return;
2317
+ }
2317
2318
  grpc_chttp2_add_rst_stream_to_next_write(
2318
2319
  t, id, static_cast<uint32_t>(http_error), nullptr);
2319
2320
  grpc_chttp2_initiate_write(t,
@@ -2641,8 +2642,8 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2641
2642
  grpc_slice_buffer_add(&t->qbuf,
2642
2643
  grpc_slice_from_cpp_string(std::move(message)));
2643
2644
  grpc_chttp2_reset_ping_clock(t);
2644
- grpc_chttp2_add_rst_stream_to_next_write(t, id, GRPC_HTTP2_NO_ERROR,
2645
- nullptr);
2645
+ grpc_chttp2_add_rst_stream_to_next_write(
2646
+ t, id, static_cast<intptr_t>(Http2ErrorCode::kNoError), nullptr);
2646
2647
 
2647
2648
  grpc_chttp2_initiate_write(t,
2648
2649
  GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API);
@@ -2857,9 +2858,7 @@ static void read_action_locked(
2857
2858
  }
2858
2859
  grpc_error_handle err = error;
2859
2860
  if (!err.ok()) {
2860
- err = grpc_error_set_int(
2861
- GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
2862
- grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
2861
+ err = GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1);
2863
2862
  }
2864
2863
  std::swap(err, error);
2865
2864
  read_action_parse_loop_locked(std::move(t), std::move(err));
@@ -3218,9 +3217,10 @@ static void benign_reclaimer_locked(
3218
3217
  << "HTTP2: " << t->peer_string.as_string_view()
3219
3218
  << " - send goaway to free memory";
3220
3219
  send_goaway(t.get(),
3221
- grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3222
- grpc_core::StatusIntProperty::kHttp2Error,
3223
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
3220
+ grpc_error_set_int(
3221
+ GRPC_ERROR_CREATE("Buffers full"),
3222
+ grpc_core::StatusIntProperty::kHttp2Error,
3223
+ static_cast<intptr_t>(Http2ErrorCode::kEnhanceYourCalm)),
3224
3224
  /*immediate_disconnect_hint=*/true);
3225
3225
  } else if (error.ok() && GRPC_TRACE_FLAG_ENABLED(resource_quota)) {
3226
3226
  LOG(INFO) << "HTTP2: " << t->peer_string.as_string_view()
@@ -3246,9 +3246,10 @@ static void destructive_reclaimer_locked(
3246
3246
  grpc_core::global_stats().IncrementRqCallsDropped();
3247
3247
  grpc_chttp2_cancel_stream(
3248
3248
  t.get(), s,
3249
- grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
3250
- grpc_core::StatusIntProperty::kHttp2Error,
3251
- GRPC_HTTP2_ENHANCE_YOUR_CALM),
3249
+ grpc_error_set_int(
3250
+ GRPC_ERROR_CREATE("Buffers full"),
3251
+ grpc_core::StatusIntProperty::kHttp2Error,
3252
+ static_cast<intptr_t>(Http2ErrorCode::kEnhanceYourCalm)),
3252
3253
  false);
3253
3254
  if (!t->stream_map.empty()) {
3254
3255
  // Since we cancel one stream per destructive reclamation, if