grpc 1.53.1 → 1.54.0

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

Potentially problematic release.


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

Files changed (689) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -66
  3. data/include/grpc/event_engine/event_engine.h +30 -14
  4. data/include/grpc/grpc_security.h +4 -0
  5. data/include/grpc/support/port_platform.h +4 -4
  6. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  9. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  10. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  11. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  12. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  16. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  17. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
  18. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  19. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  26. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  27. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  28. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  29. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  32. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  33. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  34. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  35. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  37. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  38. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  39. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  40. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  41. data/src/core/ext/gcp/metadata_query.cc +142 -0
  42. data/src/core/ext/gcp/metadata_query.h +82 -0
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  44. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
  45. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
  47. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
  48. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
  51. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
  52. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
  53. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
  54. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
  55. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
  58. data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
  59. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  60. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  61. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  62. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  63. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  68. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  69. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  70. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  71. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  72. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  73. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  74. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  75. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  76. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  77. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  78. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  79. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
  80. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
  81. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  82. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  83. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  84. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  85. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  86. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  87. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  92. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  94. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  95. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  97. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  98. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  100. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  101. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  102. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  103. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  104. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  105. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  106. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  107. data/src/core/ext/xds/xds_client_stats.h +24 -20
  108. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  109. data/src/core/ext/xds/xds_endpoint.h +9 -1
  110. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  111. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  112. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  113. data/src/core/lib/channel/call_finalization.h +1 -1
  114. data/src/core/lib/channel/call_tracer.cc +51 -0
  115. data/src/core/lib/channel/call_tracer.h +101 -38
  116. data/src/core/lib/channel/connected_channel.cc +483 -1050
  117. data/src/core/lib/channel/context.h +8 -1
  118. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  119. data/src/core/lib/channel/promise_based_filter.h +27 -13
  120. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  121. data/src/core/lib/config/config_vars.cc +151 -0
  122. data/src/core/lib/config/config_vars.h +127 -0
  123. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  124. data/src/core/lib/config/load_config.cc +66 -0
  125. data/src/core/lib/config/load_config.h +49 -0
  126. data/src/core/lib/debug/trace.cc +5 -6
  127. data/src/core/lib/debug/trace.h +0 -5
  128. data/src/core/lib/event_engine/event_engine.cc +37 -2
  129. data/src/core/lib/event_engine/handle_containers.h +7 -22
  130. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  131. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  132. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  133. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  134. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  135. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  136. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  137. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  138. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  139. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  140. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  141. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  142. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  143. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  144. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  145. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  146. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  147. data/src/core/lib/experiments/config.cc +3 -10
  148. data/src/core/lib/experiments/experiments.cc +7 -0
  149. data/src/core/lib/experiments/experiments.h +9 -1
  150. data/src/core/lib/gpr/log.cc +15 -28
  151. data/src/core/lib/gprpp/fork.cc +8 -14
  152. data/src/core/lib/gprpp/orphanable.h +4 -3
  153. data/src/core/lib/gprpp/per_cpu.h +9 -3
  154. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  155. data/src/core/lib/gprpp/ref_counted.h +33 -34
  156. data/src/core/lib/gprpp/thd.h +16 -0
  157. data/src/core/lib/gprpp/time.cc +1 -0
  158. data/src/core/lib/gprpp/time.h +4 -4
  159. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  160. data/src/core/lib/iomgr/call_combiner.h +2 -2
  161. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  162. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  163. data/src/core/lib/iomgr/ev_posix.h +0 -3
  164. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  165. data/src/core/lib/iomgr/iomgr.cc +4 -8
  166. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  167. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  168. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  169. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  170. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  171. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  172. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  173. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  174. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  175. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  176. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  177. data/src/core/lib/promise/activity.cc +22 -6
  178. data/src/core/lib/promise/activity.h +61 -24
  179. data/src/core/lib/promise/cancel_callback.h +77 -0
  180. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  181. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  182. data/src/core/lib/promise/for_each.h +176 -0
  183. data/src/core/lib/promise/if.h +9 -0
  184. data/src/core/lib/promise/interceptor_list.h +23 -2
  185. data/src/core/lib/promise/latch.h +89 -3
  186. data/src/core/lib/promise/loop.h +13 -9
  187. data/src/core/lib/promise/map.h +7 -0
  188. data/src/core/lib/promise/party.cc +286 -0
  189. data/src/core/lib/promise/party.h +499 -0
  190. data/src/core/lib/promise/pipe.h +197 -57
  191. data/src/core/lib/promise/poll.h +48 -0
  192. data/src/core/lib/promise/promise.h +2 -2
  193. data/src/core/lib/resource_quota/arena.cc +19 -3
  194. data/src/core/lib/resource_quota/arena.h +119 -5
  195. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  196. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  197. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  198. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  199. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  200. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  203. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  204. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  205. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  206. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  207. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  208. data/src/core/lib/slice/slice.cc +1 -1
  209. data/src/core/lib/surface/builtins.cc +2 -0
  210. data/src/core/lib/surface/call.cc +926 -1024
  211. data/src/core/lib/surface/call.h +10 -0
  212. data/src/core/lib/surface/lame_client.cc +1 -0
  213. data/src/core/lib/surface/validate_metadata.cc +42 -43
  214. data/src/core/lib/surface/validate_metadata.h +0 -9
  215. data/src/core/lib/surface/version.cc +2 -2
  216. data/src/core/lib/transport/batch_builder.cc +179 -0
  217. data/src/core/lib/transport/batch_builder.h +468 -0
  218. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  219. data/src/core/lib/transport/bdp_estimator.h +10 -6
  220. data/src/core/lib/transport/custom_metadata.h +30 -0
  221. data/src/core/lib/transport/metadata_batch.cc +5 -2
  222. data/src/core/lib/transport/metadata_batch.h +17 -113
  223. data/src/core/lib/transport/parsed_metadata.h +6 -16
  224. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  225. data/src/core/lib/transport/transport.cc +30 -2
  226. data/src/core/lib/transport/transport.h +70 -14
  227. data/src/core/lib/transport/transport_impl.h +7 -0
  228. data/src/core/lib/transport/transport_op_string.cc +52 -42
  229. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  230. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  231. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  232. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  233. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  234. data/src/core/tsi/ssl_transport_security.cc +4 -2
  235. data/src/ruby/lib/grpc/version.rb +1 -1
  236. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  237. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  238. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  239. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  240. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  241. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  242. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  243. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  244. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  245. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  246. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  247. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  248. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  252. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  253. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  254. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  255. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  256. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  257. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  258. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  259. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  260. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  261. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  262. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  288. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  289. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  290. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  291. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  292. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  293. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  294. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  295. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  298. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  299. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  300. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  301. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  302. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  303. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  304. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  305. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  306. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  307. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  308. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  309. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  310. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  311. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  312. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  313. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  314. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  317. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  318. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  319. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  320. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  321. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  322. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  324. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  325. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  326. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  327. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  328. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  329. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  330. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  331. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  332. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  333. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  334. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  335. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  336. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  337. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  338. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  339. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  340. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  341. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  343. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  344. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  345. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  346. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  347. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  348. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  349. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  350. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  351. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  352. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  363. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  364. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  365. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  366. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  396. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  403. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  449. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  450. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  451. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  452. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  454. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  455. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  456. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  457. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  458. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  459. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  460. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  461. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  463. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  464. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  465. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  467. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  468. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  469. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  470. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  472. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  473. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  474. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  475. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  476. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  477. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  478. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  479. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  480. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  481. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  482. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  483. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  484. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  532. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  533. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  534. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  557. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  558. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  559. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  560. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  561. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  562. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  563. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  564. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  565. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  566. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  567. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  568. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  569. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  570. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  571. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  572. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  573. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  574. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  575. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  577. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  578. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  579. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  580. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  581. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  582. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  583. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  584. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  585. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  586. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  588. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  589. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  591. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  592. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  593. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  594. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  595. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  596. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  597. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  598. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  599. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  600. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  601. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  602. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  603. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  604. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  605. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  606. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  607. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  608. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  609. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  610. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  611. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  612. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  613. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  614. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  615. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  616. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  617. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  618. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  630. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  631. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  632. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  633. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  634. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  635. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  636. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  637. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  638. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  639. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  640. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  641. metadata +103 -70
  642. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  643. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  644. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
  645. data/src/core/lib/gprpp/global_config.h +0 -93
  646. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  647. data/src/core/lib/gprpp/global_config_env.h +0 -133
  648. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  649. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  650. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  651. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  652. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  653. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  654. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  655. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  656. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  657. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  659. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  660. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  661. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  662. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  663. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  664. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  665. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  667. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  668. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  669. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  670. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  671. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  672. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  673. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  674. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  675. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  676. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  677. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  678. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  679. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  680. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  681. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  682. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  683. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  684. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  685. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  686. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  687. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  688. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  689. /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -44,7 +44,6 @@
44
44
  #include <grpc/slice_buffer.h>
45
45
  #include <grpc/status.h>
46
46
  #include <grpc/support/alloc.h>
47
- #include <grpc/support/atm.h>
48
47
  #include <grpc/support/log.h>
49
48
  #include <grpc/support/time.h>
50
49
 
@@ -60,9 +59,12 @@
60
59
  #include "src/core/ext/transport/chttp2/transport/internal.h"
61
60
  #include "src/core/ext/transport/chttp2/transport/stream_map.h"
62
61
  #include "src/core/ext/transport/chttp2/transport/varint.h"
62
+ #include "src/core/lib/channel/call_tracer.h"
63
63
  #include "src/core/lib/channel/channel_args.h"
64
+ #include "src/core/lib/channel/context.h"
64
65
  #include "src/core/lib/debug/stats.h"
65
66
  #include "src/core/lib/debug/stats_data.h"
67
+ #include "src/core/lib/experiments/experiments.h"
66
68
  #include "src/core/lib/gpr/useful.h"
67
69
  #include "src/core/lib/gprpp/bitset.h"
68
70
  #include "src/core/lib/gprpp/crash.h"
@@ -75,6 +77,7 @@
75
77
  #include "src/core/lib/iomgr/error.h"
76
78
  #include "src/core/lib/iomgr/exec_ctx.h"
77
79
  #include "src/core/lib/iomgr/iomgr_fwd.h"
80
+ #include "src/core/lib/iomgr/port.h"
78
81
  #include "src/core/lib/iomgr/timer.h"
79
82
  #include "src/core/lib/promise/poll.h"
80
83
  #include "src/core/lib/resource_quota/arena.h"
@@ -93,6 +96,10 @@
93
96
  #include "src/core/lib/transport/transport.h"
94
97
  #include "src/core/lib/transport/transport_impl.h"
95
98
 
99
+ #ifdef GRPC_POSIX_SOCKET_TCP
100
+ #include "src/core/lib/iomgr/ev_posix.h"
101
+ #endif
102
+
96
103
  #define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
97
104
  #define MAX_WINDOW 0x7fffffffu
98
105
  #define MAX_WRITE_BUFFER_SIZE (64 * 1024 * 1024)
@@ -198,6 +205,18 @@ static void keepalive_watchdog_fired_locked(
198
205
  void* arg, GRPC_UNUSED grpc_error_handle error);
199
206
  static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t);
200
207
 
208
+ namespace {
209
+ grpc_core::CallTracerInterface* CallTracerIfEnabled(grpc_chttp2_stream* s) {
210
+ if (s->context == nullptr || !grpc_core::IsTraceRecordCallopsEnabled()) {
211
+ return nullptr;
212
+ }
213
+ return static_cast<grpc_core::CallTracerInterface*>(
214
+ static_cast<grpc_call_context_element*>(
215
+ s->context)[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE]
216
+ .value);
217
+ }
218
+ } // namespace
219
+
201
220
  namespace grpc_core {
202
221
 
203
222
  namespace {
@@ -343,8 +362,10 @@ static void read_channel_args(grpc_chttp2_transport* t,
343
362
  .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
344
363
  t->channelz_socket =
345
364
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
346
- std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
347
- absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
365
+ std::string(grpc_endpoint_get_local_address(t->ep)),
366
+ std::string(t->peer_string.as_string_view()),
367
+ absl::StrCat(get_vtable()->name, " ",
368
+ t->peer_string.as_string_view()),
348
369
  channel_args
349
370
  .GetObjectRef<grpc_core::channelz::SocketNode::Security>());
350
371
  }
@@ -511,7 +532,8 @@ grpc_chttp2_transport::grpc_chttp2_transport(
511
532
  ? "chttp2_refcount"
512
533
  : nullptr),
513
534
  ep(ep),
514
- peer_string(grpc_endpoint_get_peer(ep)),
535
+ peer_string(
536
+ grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
515
537
  memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
516
538
  ->memory_quota()
517
539
  ->CreateMemoryOwner(absl::StrCat(
@@ -524,7 +546,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
524
546
  is_client(is_client),
525
547
  next_stream_id(is_client ? 1 : 2),
526
548
  flow_control(
527
- peer_string.c_str(),
549
+ peer_string.as_string_view(),
528
550
  channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
529
551
  &memory_owner),
530
552
  deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
@@ -597,6 +619,14 @@ grpc_chttp2_transport::grpc_chttp2_transport(
597
619
  if (grpc_core::test_only_init_callback != nullptr) {
598
620
  grpc_core::test_only_init_callback();
599
621
  }
622
+
623
+ #ifdef GRPC_POSIX_SOCKET_TCP
624
+ closure_barrier_may_cover_write =
625
+ grpc_event_engine_run_in_background() &&
626
+ grpc_core::IsScheduleCancellationOverWriteEnabled()
627
+ ? 0
628
+ : CLOSURE_BARRIER_MAY_COVER_WRITE;
629
+ #endif
600
630
  }
601
631
 
602
632
  static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
@@ -844,7 +874,8 @@ static void set_write_state(grpc_chttp2_transport* t,
844
874
  grpc_chttp2_write_state st, const char* reason) {
845
875
  GRPC_CHTTP2_IF_TRACING(
846
876
  gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
847
- t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
877
+ t->is_client ? "CLIENT" : "SERVER",
878
+ std::string(t->peer_string.as_string_view()).c_str(),
848
879
  write_state_name(t->write_state), write_state_name(st), reason));
849
880
  t->write_state = st;
850
881
  // If the state is being reset back to idle, it means a write was just
@@ -1079,8 +1110,9 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1079
1110
  // We want to log this irrespective of whether http tracing is enabled if we
1080
1111
  // received a GOAWAY with a non NO_ERROR code.
1081
1112
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1082
- gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1083
- goaway_error, grpc_core::StatusToString(t->goaway_error).c_str());
1113
+ gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s",
1114
+ std::string(t->peer_string.as_string_view()).c_str(), goaway_error,
1115
+ grpc_core::StatusToString(t->goaway_error).c_str());
1084
1116
  }
1085
1117
  if (t->is_client) {
1086
1118
  cancel_unstarted_streams(t, t->goaway_error);
@@ -1111,7 +1143,8 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1111
1143
  "%s: Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
1112
1144
  "data equal to \"too_many_pings\". Current keepalive time (before "
1113
1145
  "throttling): %s",
1114
- t->peer_string.c_str(), t->keepalive_time.ToString().c_str());
1146
+ std::string(t->peer_string.as_string_view()).c_str(),
1147
+ t->keepalive_time.ToString().c_str());
1115
1148
  constexpr int max_keepalive_time_millis =
1116
1149
  INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
1117
1150
  int64_t throttled_keepalive_time =
@@ -1181,14 +1214,6 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1181
1214
  }
1182
1215
  }
1183
1216
 
1184
- // Flag that this closure barrier may be covering a write in a pollset, and so
1185
- // we should not complete this closure until we can prove that the write got
1186
- // scheduled
1187
- #define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
1188
- // First bit of the reference count, stored in the high order bits (with the low
1189
- // bits being used for flags defined above)
1190
- #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
1191
-
1192
1217
  static grpc_closure* add_closure_barrier(grpc_closure* closure) {
1193
1218
  closure->next_data.scratch += CLOSURE_BARRIER_FIRST_REF_BIT;
1194
1219
  return closure;
@@ -1207,10 +1232,11 @@ static void null_then_sched_closure(grpc_closure** closure) {
1207
1232
  }
1208
1233
 
1209
1234
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1210
- grpc_chttp2_stream* /*s*/,
1235
+ grpc_chttp2_stream* s,
1211
1236
  grpc_closure** pclosure,
1212
1237
  grpc_error_handle error,
1213
- const char* desc) {
1238
+ const char* desc,
1239
+ grpc_core::DebugLocation whence) {
1214
1240
  grpc_closure* closure = *pclosure;
1215
1241
  *pclosure = nullptr;
1216
1242
  if (closure == nullptr) {
@@ -1221,15 +1247,23 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1221
1247
  gpr_log(
1222
1248
  GPR_INFO,
1223
1249
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
1224
- "write_state=%s",
1250
+ "write_state=%s whence=%s:%d",
1225
1251
  t, closure,
1226
1252
  static_cast<int>(closure->next_data.scratch /
1227
1253
  CLOSURE_BARRIER_FIRST_REF_BIT),
1228
1254
  static_cast<int>(closure->next_data.scratch %
1229
1255
  CLOSURE_BARRIER_FIRST_REF_BIT),
1230
1256
  desc, grpc_core::StatusToString(error).c_str(),
1231
- write_state_name(t->write_state));
1257
+ write_state_name(t->write_state), whence.file(), whence.line());
1258
+ }
1259
+
1260
+ auto* tracer = CallTracerIfEnabled(s);
1261
+ if (tracer != nullptr) {
1262
+ tracer->RecordAnnotation(
1263
+ absl::StrFormat("on_complete: s=%p %p desc=%s err=%s", s, closure, desc,
1264
+ grpc_core::StatusToString(error).c_str()));
1232
1265
  }
1266
+
1233
1267
  if (!error.ok()) {
1234
1268
  grpc_error_handle cl_err =
1235
1269
  grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
@@ -1239,8 +1273,9 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1239
1273
  " write_state=", write_state_name(t->write_state), " refs=",
1240
1274
  closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT, " flags=",
1241
1275
  closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT));
1242
- cl_err = grpc_error_set_str(
1243
- cl_err, grpc_core::StatusStrProperty::kTargetAddress, t->peer_string);
1276
+ cl_err = grpc_error_set_str(cl_err,
1277
+ grpc_core::StatusStrProperty::kTargetAddress,
1278
+ std::string(t->peer_string.as_string_view()));
1244
1279
  }
1245
1280
  cl_err = grpc_error_add_child(cl_err, error);
1246
1281
  closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
@@ -1289,7 +1324,7 @@ static void perform_stream_op_locked(void* stream_op,
1289
1324
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1290
1325
  gpr_log(GPR_INFO,
1291
1326
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
1292
- op, grpc_transport_stream_op_batch_string(op).c_str(),
1327
+ op, grpc_transport_stream_op_batch_string(op, false).c_str(),
1293
1328
  op->on_complete);
1294
1329
  if (op->send_initial_metadata) {
1295
1330
  log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
@@ -1301,6 +1336,14 @@ static void perform_stream_op_locked(void* stream_op,
1301
1336
  }
1302
1337
  }
1303
1338
 
1339
+ auto* tracer = CallTracerIfEnabled(s);
1340
+ if (tracer != nullptr) {
1341
+ tracer->RecordAnnotation(absl::StrFormat(
1342
+ "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s, op,
1343
+ grpc_transport_stream_op_batch_string(op, true).c_str(),
1344
+ op->on_complete));
1345
+ }
1346
+
1304
1347
  grpc_closure* on_complete = op->on_complete;
1305
1348
  // on_complete will be null if and only if there are no send ops in the batch.
1306
1349
  if (on_complete != nullptr) {
@@ -1319,7 +1362,7 @@ static void perform_stream_op_locked(void* stream_op,
1319
1362
  t->channelz_socket->RecordStreamStartedFromLocal();
1320
1363
  }
1321
1364
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1322
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1365
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1323
1366
 
1324
1367
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1325
1368
  s->send_initial_metadata =
@@ -1369,17 +1412,13 @@ static void perform_stream_op_locked(void* stream_op,
1369
1412
  &s->write_closed_error, 1),
1370
1413
  "send_initial_metadata_finished");
1371
1414
  }
1372
- if (op_payload->send_initial_metadata.peer_string != nullptr) {
1373
- gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
1374
- (gpr_atm)t->peer_string.c_str());
1375
- }
1376
1415
  }
1377
1416
 
1378
1417
  if (op->send_message) {
1379
1418
  t->num_messages_in_next_write++;
1380
1419
  grpc_core::global_stats().IncrementHttp2SendMessageSize(
1381
1420
  op->payload->send_message.send_message->Length());
1382
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1421
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1383
1422
  s->send_message_finished = add_closure_barrier(op->on_complete);
1384
1423
  const uint32_t flags = op_payload->send_message.flags;
1385
1424
  if (s->write_closed) {
@@ -1453,7 +1492,7 @@ static void perform_stream_op_locked(void* stream_op,
1453
1492
 
1454
1493
  if (op->send_trailing_metadata) {
1455
1494
  GPR_ASSERT(s->send_trailing_metadata_finished == nullptr);
1456
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1495
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1457
1496
  s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
1458
1497
  s->send_trailing_metadata =
1459
1498
  op_payload->send_trailing_metadata.send_trailing_metadata;
@@ -1492,10 +1531,6 @@ static void perform_stream_op_locked(void* stream_op,
1492
1531
  if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
1493
1532
  *s->trailing_metadata_available = true;
1494
1533
  }
1495
- if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1496
- gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1497
- (gpr_atm)t->peer_string.c_str());
1498
- }
1499
1534
  grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
1500
1535
  }
1501
1536
 
@@ -1550,7 +1585,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1550
1585
 
1551
1586
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1552
1587
  gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
1553
- grpc_transport_stream_op_batch_string(op).c_str());
1588
+ grpc_transport_stream_op_batch_string(op, false).c_str());
1554
1589
  }
1555
1590
 
1556
1591
  GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
@@ -1644,7 +1679,7 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1644
1679
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1645
1680
  if (pq->inflight_id != id) {
1646
1681
  gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1647
- t->peer_string.c_str(), id);
1682
+ std::string(t->peer_string.as_string_view()).c_str(), id);
1648
1683
  return;
1649
1684
  }
1650
1685
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
@@ -1691,11 +1726,12 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1691
1726
  return;
1692
1727
  }
1693
1728
  if (t_->destroying || !t_->closed_with_error.ok()) {
1694
- GRPC_CHTTP2_IF_TRACING(gpr_log(
1695
- GPR_INFO,
1696
- "transport:%p %s peer:%s Transport already shutting down. "
1697
- "Graceful GOAWAY abandoned.",
1698
- t_, t_->is_client ? "CLIENT" : "SERVER", t_->peer_string.c_str()));
1729
+ GRPC_CHTTP2_IF_TRACING(
1730
+ gpr_log(GPR_INFO,
1731
+ "transport:%p %s peer:%s Transport already shutting down. "
1732
+ "Graceful GOAWAY abandoned.",
1733
+ t_, t_->is_client ? "CLIENT" : "SERVER",
1734
+ std::string(t_->peer_string.as_string_view()).c_str()));
1699
1735
  return;
1700
1736
  }
1701
1737
  // Ping completed. Send final goaway.
@@ -1704,7 +1740,8 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1704
1740
  "transport:%p %s peer:%s Graceful shutdown: Ping received. "
1705
1741
  "Sending final GOAWAY with stream_id:%d",
1706
1742
  t_, t_->is_client ? "CLIENT" : "SERVER",
1707
- t_->peer_string.c_str(), t_->last_new_stream_id));
1743
+ std::string(t_->peer_string.as_string_view()).c_str(),
1744
+ t_->last_new_stream_id));
1708
1745
  t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1709
1746
  grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
1710
1747
  &t_->qbuf);
@@ -1767,7 +1804,8 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1767
1804
  } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
1768
1805
  t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1769
1806
  // We want to log this irrespective of whether http tracing is enabled
1770
- gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1807
+ gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s",
1808
+ std::string(t->peer_string.as_string_view()).c_str(),
1771
1809
  grpc_core::StatusToString(error).c_str());
1772
1810
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1773
1811
  grpc_chttp2_goaway_append(
@@ -1876,7 +1914,8 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
1876
1914
  grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1877
1915
  }
1878
1916
  *s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
1879
- s->recv_initial_metadata->Set(grpc_core::PeerString(), t->peer_string);
1917
+ s->recv_initial_metadata->Set(grpc_core::PeerString(),
1918
+ t->peer_string.Ref());
1880
1919
  // If we didn't receive initial metadata from the wire and instead faked a
1881
1920
  // status (due to stream cancellations for example), let upper layers know
1882
1921
  // that trailing metadata is immediately available.
@@ -1991,7 +2030,6 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1991
2030
  grpc_transport_move_stats(&s->stats, s->collecting_stats);
1992
2031
  s->collecting_stats = nullptr;
1993
2032
  *s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
1994
- s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
1995
2033
  null_then_sched_closure(&s->recv_trailing_metadata_finished);
1996
2034
  }
1997
2035
  }
@@ -2577,7 +2615,8 @@ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2577
2615
  static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2578
2616
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2579
2617
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2580
- gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2618
+ gpr_log(GPR_INFO, "%s: Start BDP ping err=%s",
2619
+ std::string(t->peer_string.as_string_view()).c_str(),
2581
2620
  grpc_core::StatusToString(error).c_str());
2582
2621
  }
2583
2622
  if (!error.ok() || !t->closed_with_error.ok()) {
@@ -2601,7 +2640,8 @@ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2601
2640
  static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2602
2641
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2603
2642
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2604
- gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2643
+ gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s",
2644
+ std::string(t->peer_string.as_string_view()).c_str(),
2605
2645
  grpc_core::StatusToString(error).c_str());
2606
2646
  }
2607
2647
  if (!error.ok() || !t->closed_with_error.ok()) {
@@ -2763,7 +2803,8 @@ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2763
2803
  }
2764
2804
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2765
2805
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2766
- gpr_log(GPR_INFO, "%s: Start keepalive ping", t->peer_string.c_str());
2806
+ gpr_log(GPR_INFO, "%s: Start keepalive ping",
2807
+ std::string(t->peer_string.as_string_view()).c_str());
2767
2808
  }
2768
2809
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2769
2810
  t->keepalive_watchdog_timer_handle =
@@ -2788,7 +2829,8 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2788
2829
  if (error.ok()) {
2789
2830
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2790
2831
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2791
- gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
2832
+ gpr_log(GPR_INFO, "%s: Finish keepalive ping",
2833
+ std::string(t->peer_string.as_string_view()).c_str());
2792
2834
  }
2793
2835
  if (!t->keepalive_ping_started) {
2794
2836
  // start_keepalive_ping_locked has not run yet. Reschedule
@@ -2835,7 +2877,7 @@ static void keepalive_watchdog_fired_locked(
2835
2877
  t->keepalive_watchdog_timer_handle.reset();
2836
2878
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2837
2879
  gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2838
- t->peer_string.c_str());
2880
+ std::string(t->peer_string.as_string_view()).c_str());
2839
2881
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2840
2882
  close_transport_locked(
2841
2883
  t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
@@ -2859,7 +2901,7 @@ static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
2859
2901
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2860
2902
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2861
2903
  gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
2862
- t->peer_string.c_str());
2904
+ std::string(t->peer_string.as_string_view()).c_str());
2863
2905
  }
2864
2906
  t->keepalive_ping_timer_handle =
2865
2907
  t->event_engine->RunAfter(t->keepalive_time, [t] {
@@ -2952,7 +2994,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2952
2994
  // disconnect cleanly
2953
2995
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2954
2996
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
2955
- t->peer_string.c_str());
2997
+ std::string(t->peer_string.as_string_view()).c_str());
2956
2998
  }
2957
2999
  send_goaway(t,
2958
3000
  grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
@@ -2963,7 +3005,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2963
3005
  gpr_log(GPR_INFO,
2964
3006
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
2965
3007
  " streams",
2966
- t->peer_string.c_str(),
3008
+ std::string(t->peer_string.as_string_view()).c_str(),
2967
3009
  grpc_chttp2_stream_map_size(&t->stream_map));
2968
3010
  }
2969
3011
  t->benign_reclaimer_registered = false;
@@ -2982,7 +3024,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2982
3024
  grpc_chttp2_stream_map_rand(&t->stream_map));
2983
3025
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2984
3026
  gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
2985
- t->peer_string.c_str(), s->id);
3027
+ std::string(t->peer_string.as_string_view()).c_str(), s->id);
2986
3028
  }
2987
3029
  grpc_chttp2_cancel_stream(
2988
3030
  t, s,
@@ -3063,6 +3105,7 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
3063
3105
  }
3064
3106
 
3065
3107
  static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
3108
+ false,
3066
3109
  "chttp2",
3067
3110
  init_stream,
3068
3111
  nullptr,
@@ -3101,9 +3144,24 @@ void grpc_chttp2_transport_start_reading(
3101
3144
  grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
3102
3145
  gpr_free(read_buffer);
3103
3146
  }
3104
- t->notify_on_receive_settings = notify_on_receive_settings;
3105
- t->notify_on_close = notify_on_close;
3106
3147
  t->combiner->Run(
3107
- GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3148
+ grpc_core::NewClosure([t, notify_on_receive_settings,
3149
+ notify_on_close](grpc_error_handle) {
3150
+ if (!t->closed_with_error.ok()) {
3151
+ if (notify_on_receive_settings != nullptr) {
3152
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_receive_settings,
3153
+ t->closed_with_error);
3154
+ }
3155
+ if (notify_on_close != nullptr) {
3156
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, notify_on_close,
3157
+ t->closed_with_error);
3158
+ }
3159
+ GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
3160
+ return;
3161
+ }
3162
+ t->notify_on_receive_settings = notify_on_receive_settings;
3163
+ t->notify_on_close = notify_on_close;
3164
+ read_action_locked(t, absl::OkStatus());
3165
+ }),
3108
3166
  absl::OkStatus());
3109
3167
  }
@@ -101,7 +101,7 @@ std::ostream& operator<<(std::ostream& out, const FlowControlAction& action) {
101
101
  return out << action.DebugString();
102
102
  }
103
103
 
104
- TransportFlowControl::TransportFlowControl(const char* name,
104
+ TransportFlowControl::TransportFlowControl(absl::string_view name,
105
105
  bool enable_bdp_probe,
106
106
  MemoryOwner* memory_owner)
107
107
  : memory_owner_(memory_owner),
@@ -175,7 +175,10 @@ int64_t TransportFlowControl::target_window() const {
175
175
  }
176
176
 
177
177
  FlowControlAction TransportFlowControl::UpdateAction(FlowControlAction action) {
178
- if (announced_window_ < target_window() / 2) {
178
+ const int64_t target = target_window();
179
+ // round up so that one byte targets are sent.
180
+ const int64_t send_threshold = (target + 1) / 2;
181
+ if (announced_window_ < send_threshold) {
179
182
  action.set_send_transport_update(
180
183
  FlowControlAction::Urgency::UPDATE_IMMEDIATELY);
181
184
  }
@@ -30,6 +30,7 @@
30
30
 
31
31
  #include "absl/functional/function_ref.h"
32
32
  #include "absl/status/status.h"
33
+ #include "absl/strings/string_view.h"
33
34
  #include "absl/types/optional.h"
34
35
 
35
36
  #include <grpc/support/log.h>
@@ -168,7 +169,7 @@ std::ostream& operator<<(std::ostream& out, const FlowControlAction& action);
168
169
  // to be as performant as possible.
169
170
  class TransportFlowControl final {
170
171
  public:
171
- explicit TransportFlowControl(const char* name, bool enable_bdp_probe,
172
+ explicit TransportFlowControl(absl::string_view name, bool enable_bdp_probe,
172
173
  MemoryOwner* memory_owner);
173
174
  ~TransportFlowControl() {}
174
175
 
@@ -28,6 +28,7 @@
28
28
  #include "absl/base/attributes.h"
29
29
  #include "absl/status/status.h"
30
30
  #include "absl/strings/str_format.h"
31
+ #include "absl/strings/string_view.h"
31
32
 
32
33
  #include <grpc/slice_buffer.h>
33
34
  #include <grpc/support/log.h>
@@ -41,6 +42,7 @@
41
42
  #include "src/core/lib/gpr/useful.h"
42
43
  #include "src/core/lib/gprpp/debug_location.h"
43
44
  #include "src/core/lib/iomgr/exec_ctx.h"
45
+ #include "src/core/lib/slice/slice.h"
44
46
 
45
47
  static uint8_t* fill_header(uint8_t* out, uint32_t length, uint8_t flags) {
46
48
  *out++ = static_cast<uint8_t>(length >> 16);
@@ -229,7 +231,8 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
229
231
  parser->incoming_settings[id] = parser->value;
230
232
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
231
233
  gpr_log(GPR_INFO, "CHTTP2:%s:%s: got setting %s = %d",
232
- t->is_client ? "CLI" : "SVR", t->peer_string.c_str(),
234
+ t->is_client ? "CLI" : "SVR",
235
+ std::string(t->peer_string.as_string_view()).c_str(),
233
236
  sp->name, parser->value);
234
237
  }
235
238
  } else if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {