grpc 1.53.0 → 1.54.2

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 (695) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +80 -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/impl/grpc_types.h +11 -2
  6. data/include/grpc/support/port_platform.h +4 -4
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  9. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  10. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  11. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  12. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  14. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  15. data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  18. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  19. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  28. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  29. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  30. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  31. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  32. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  33. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  34. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  35. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  36. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  37. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  38. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  39. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  40. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  41. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  42. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  43. data/src/core/ext/gcp/metadata_query.cc +137 -0
  44. data/src/core/ext/gcp/metadata_query.h +87 -0
  45. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  46. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +12 -8
  47. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +5 -1
  48. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
  49. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
  50. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
  51. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  52. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +118 -222
  53. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +295 -113
  54. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -0
  55. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +466 -273
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -3
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +14 -12
  59. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +9 -1
  60. data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
  61. data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
  62. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  63. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  64. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  65. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  68. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  69. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  70. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  71. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  72. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  73. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  74. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  75. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  76. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  77. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  78. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  79. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  80. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  81. 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
  82. 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
  83. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  84. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  85. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  86. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  87. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  88. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  89. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  94. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  96. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  97. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  99. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  100. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  101. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  102. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  103. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  104. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  105. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  106. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  107. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  108. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  109. data/src/core/ext/xds/xds_client_stats.h +24 -20
  110. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  111. data/src/core/ext/xds/xds_endpoint.h +9 -1
  112. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  113. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  114. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  115. data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
  116. data/src/core/lib/backoff/random_early_detection.h +59 -0
  117. data/src/core/lib/channel/call_finalization.h +1 -1
  118. data/src/core/lib/channel/call_tracer.cc +51 -0
  119. data/src/core/lib/channel/call_tracer.h +101 -38
  120. data/src/core/lib/channel/connected_channel.cc +483 -1050
  121. data/src/core/lib/channel/context.h +8 -1
  122. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  123. data/src/core/lib/channel/promise_based_filter.h +27 -13
  124. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  125. data/src/core/lib/config/config_vars.cc +151 -0
  126. data/src/core/lib/config/config_vars.h +127 -0
  127. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  128. data/src/core/lib/config/load_config.cc +66 -0
  129. data/src/core/lib/config/load_config.h +49 -0
  130. data/src/core/lib/debug/trace.cc +5 -6
  131. data/src/core/lib/debug/trace.h +0 -5
  132. data/src/core/lib/event_engine/event_engine.cc +37 -2
  133. data/src/core/lib/event_engine/handle_containers.h +7 -22
  134. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  135. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  136. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  137. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  138. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  139. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  140. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  141. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  142. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  143. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  144. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  145. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  146. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  147. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  148. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  149. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  150. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  151. data/src/core/lib/experiments/config.cc +3 -10
  152. data/src/core/lib/experiments/experiments.cc +7 -0
  153. data/src/core/lib/experiments/experiments.h +9 -1
  154. data/src/core/lib/gpr/log.cc +15 -28
  155. data/src/core/lib/gprpp/fork.cc +8 -14
  156. data/src/core/lib/gprpp/orphanable.h +4 -3
  157. data/src/core/lib/gprpp/per_cpu.h +9 -3
  158. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  159. data/src/core/lib/gprpp/ref_counted.h +33 -34
  160. data/src/core/lib/gprpp/thd.h +16 -0
  161. data/src/core/lib/gprpp/time.cc +1 -0
  162. data/src/core/lib/gprpp/time.h +4 -4
  163. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  164. data/src/core/lib/iomgr/call_combiner.h +2 -2
  165. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  166. data/src/core/lib/iomgr/endpoint_pair.h +2 -2
  167. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  168. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  169. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  170. data/src/core/lib/iomgr/ev_posix.h +0 -3
  171. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  172. data/src/core/lib/iomgr/iomgr.cc +4 -8
  173. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  174. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  175. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  176. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  177. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  178. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  179. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  180. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  181. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  182. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  183. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  184. data/src/core/lib/promise/activity.cc +22 -6
  185. data/src/core/lib/promise/activity.h +61 -24
  186. data/src/core/lib/promise/cancel_callback.h +77 -0
  187. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  188. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  189. data/src/core/lib/promise/for_each.h +176 -0
  190. data/src/core/lib/promise/if.h +9 -0
  191. data/src/core/lib/promise/interceptor_list.h +23 -2
  192. data/src/core/lib/promise/latch.h +89 -3
  193. data/src/core/lib/promise/loop.h +13 -9
  194. data/src/core/lib/promise/map.h +7 -0
  195. data/src/core/lib/promise/party.cc +286 -0
  196. data/src/core/lib/promise/party.h +499 -0
  197. data/src/core/lib/promise/pipe.h +197 -57
  198. data/src/core/lib/promise/poll.h +48 -0
  199. data/src/core/lib/promise/promise.h +2 -2
  200. data/src/core/lib/resource_quota/arena.cc +19 -3
  201. data/src/core/lib/resource_quota/arena.h +119 -5
  202. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  203. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  204. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  206. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  207. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  208. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  209. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  210. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  211. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  212. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  213. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  214. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  215. data/src/core/lib/slice/slice.cc +1 -1
  216. data/src/core/lib/surface/builtins.cc +2 -0
  217. data/src/core/lib/surface/call.cc +926 -1024
  218. data/src/core/lib/surface/call.h +10 -0
  219. data/src/core/lib/surface/lame_client.cc +1 -0
  220. data/src/core/lib/surface/validate_metadata.cc +43 -42
  221. data/src/core/lib/surface/validate_metadata.h +9 -0
  222. data/src/core/lib/surface/version.cc +2 -2
  223. data/src/core/lib/transport/batch_builder.cc +179 -0
  224. data/src/core/lib/transport/batch_builder.h +468 -0
  225. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  226. data/src/core/lib/transport/bdp_estimator.h +10 -6
  227. data/src/core/lib/transport/custom_metadata.h +30 -0
  228. data/src/core/lib/transport/metadata_batch.cc +9 -6
  229. data/src/core/lib/transport/metadata_batch.h +168 -18
  230. data/src/core/lib/transport/parsed_metadata.h +19 -9
  231. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  232. data/src/core/lib/transport/transport.cc +30 -2
  233. data/src/core/lib/transport/transport.h +70 -14
  234. data/src/core/lib/transport/transport_impl.h +7 -0
  235. data/src/core/lib/transport/transport_op_string.cc +52 -42
  236. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  237. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  238. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  239. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  240. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  241. data/src/core/tsi/ssl_transport_security.cc +4 -2
  242. data/src/ruby/lib/grpc/version.rb +1 -1
  243. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  244. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  245. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  246. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  247. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  248. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  249. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  250. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  251. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  252. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  253. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  254. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  255. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  256. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  257. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  258. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  259. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  260. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  261. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  262. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  263. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  264. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  265. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  266. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  267. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  268. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  269. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  288. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  289. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  290. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  291. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  292. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  293. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  294. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  295. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  296. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  297. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  298. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  299. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  300. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  301. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  302. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  303. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  304. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  305. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  306. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  307. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  308. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  309. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  310. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  311. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  312. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  313. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  314. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  315. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  316. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  317. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  318. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  319. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  320. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  321. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  322. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  324. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  325. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  326. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  327. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  328. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  329. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  330. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  331. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  332. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  333. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  334. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  335. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  336. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  337. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  338. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  339. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  340. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  341. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  342. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  343. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  344. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  345. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  346. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  347. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  348. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  349. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  350. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  351. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  352. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  353. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  354. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  355. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  363. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  364. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  365. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  366. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  367. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  368. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  369. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  370. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  371. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  372. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  373. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  403. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  405. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  410. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  449. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  450. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  451. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  452. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  454. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  455. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  456. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  457. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  458. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  459. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  460. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  461. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  462. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  463. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  464. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  465. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  466. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  467. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  468. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  469. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  470. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  471. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  472. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  473. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  474. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  475. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  476. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  477. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  478. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  479. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  480. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  481. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  482. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  483. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  484. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  485. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  486. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  487. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  488. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  489. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  490. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  491. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  532. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  533. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  534. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  535. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  536. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  537. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  538. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  539. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  540. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  541. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  557. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  558. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  559. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  560. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  561. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  562. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  563. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  564. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  565. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  566. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  567. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  568. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  569. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  570. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  571. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  572. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  573. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  574. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  575. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  576. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  577. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  578. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  579. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  580. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  581. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  582. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  583. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  584. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  585. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  586. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  587. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  588. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  589. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  591. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  592. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  593. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  594. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  595. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  596. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  597. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  598. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  599. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  600. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  601. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  602. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  603. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  604. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  605. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  606. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  607. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  608. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  609. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  610. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  611. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  612. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  613. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  614. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  615. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  616. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  617. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  618. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  619. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  620. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  621. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  622. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  623. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  624. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  625. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  630. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  631. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  632. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  633. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  634. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  635. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  636. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  637. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  638. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  639. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  640. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  641. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  642. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  643. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  644. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  645. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  646. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  647. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  648. metadata +105 -70
  649. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  650. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  651. data/src/core/lib/gprpp/global_config.h +0 -93
  652. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  653. data/src/core/lib/gprpp/global_config_env.h +0 -133
  654. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  655. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  656. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  657. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  658. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  659. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  660. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  661. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  662. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  663. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  664. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  665. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  667. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  668. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  669. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  670. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  671. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  672. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  673. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  674. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  675. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  676. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  677. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  678. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  679. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  680. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  681. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  682. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  683. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  684. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  685. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  686. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  687. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  688. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  689. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  690. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  691. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  692. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  693. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  694. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  695. /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,10 +96,15 @@
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)
99
- #define DEFAULT_MAX_HEADER_LIST_SIZE (8 * 1024)
106
+ #define DEFAULT_MAX_HEADER_LIST_SIZE (16 * 1024)
107
+ #define DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT (8 * 1024)
100
108
 
101
109
  #define DEFAULT_CLIENT_KEEPALIVE_TIME_MS INT_MAX
102
110
  #define DEFAULT_CLIENT_KEEPALIVE_TIMEOUT_MS 20000 // 20 seconds
@@ -197,6 +205,18 @@ static void keepalive_watchdog_fired_locked(
197
205
  void* arg, GRPC_UNUSED grpc_error_handle error);
198
206
  static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t);
199
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
+
200
220
  namespace grpc_core {
201
221
 
202
222
  namespace {
@@ -342,12 +362,29 @@ static void read_channel_args(grpc_chttp2_transport* t,
342
362
  .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
343
363
  t->channelz_socket =
344
364
  grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
345
- std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
346
- 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()),
347
369
  channel_args
348
370
  .GetObjectRef<grpc_core::channelz::SocketNode::Security>());
349
371
  }
350
372
 
373
+ const int soft_limit =
374
+ channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE).value_or(-1);
375
+ if (soft_limit < 0) {
376
+ // Set soft limit to 0.8 * hard limit if this is larger than
377
+ // `DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT` and
378
+ // `GRPC_ARG_MAX_METADATA_SIZE` is not set.
379
+ t->max_header_list_size_soft_limit = std::max(
380
+ DEFAULT_MAX_HEADER_LIST_SIZE_SOFT_LIMIT,
381
+ static_cast<int>(
382
+ 0.8 * channel_args.GetInt(GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE)
383
+ .value_or(-1)));
384
+ } else {
385
+ t->max_header_list_size_soft_limit = soft_limit;
386
+ }
387
+
351
388
  static const struct {
352
389
  absl::string_view channel_arg_name;
353
390
  grpc_chttp2_setting_id setting_id;
@@ -367,7 +404,7 @@ static void read_channel_args(grpc_chttp2_transport* t,
367
404
  0,
368
405
  INT32_MAX,
369
406
  {true, true}},
370
- {GRPC_ARG_MAX_METADATA_SIZE,
407
+ {GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE,
371
408
  GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
372
409
  -1,
373
410
  0,
@@ -400,6 +437,21 @@ static void read_channel_args(grpc_chttp2_transport* t,
400
437
  if (value >= 0) {
401
438
  queue_setting_update(t, setting.setting_id,
402
439
  grpc_core::Clamp(value, setting.min, setting.max));
440
+ } else if (setting.setting_id ==
441
+ GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE) {
442
+ // Set value to 1.25 * soft limit if this is larger than
443
+ // `DEFAULT_MAX_HEADER_LIST_SIZE` and
444
+ // `GRPC_ARG_ABSOLUTE_MAX_METADATA_SIZE` is not set.
445
+ const int soft_limit = channel_args.GetInt(GRPC_ARG_MAX_METADATA_SIZE)
446
+ .value_or(setting.default_value);
447
+ const int value = (soft_limit < (INT_MAX / 1.25))
448
+ ? static_cast<int>(soft_limit * 1.25)
449
+ : soft_limit;
450
+ if (value > DEFAULT_MAX_HEADER_LIST_SIZE) {
451
+ queue_setting_update(
452
+ t, setting.setting_id,
453
+ grpc_core::Clamp(value, setting.min, setting.max));
454
+ }
403
455
  }
404
456
  } else if (channel_args.Contains(setting.channel_arg_name)) {
405
457
  gpr_log(GPR_DEBUG, "%s is not available on %s",
@@ -480,7 +532,8 @@ grpc_chttp2_transport::grpc_chttp2_transport(
480
532
  ? "chttp2_refcount"
481
533
  : nullptr),
482
534
  ep(ep),
483
- peer_string(grpc_endpoint_get_peer(ep)),
535
+ peer_string(
536
+ grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
484
537
  memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
485
538
  ->memory_quota()
486
539
  ->CreateMemoryOwner(absl::StrCat(
@@ -493,7 +546,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
493
546
  is_client(is_client),
494
547
  next_stream_id(is_client ? 1 : 2),
495
548
  flow_control(
496
- peer_string.c_str(),
549
+ peer_string.as_string_view(),
497
550
  channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
498
551
  &memory_owner),
499
552
  deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0),
@@ -566,6 +619,14 @@ grpc_chttp2_transport::grpc_chttp2_transport(
566
619
  if (grpc_core::test_only_init_callback != nullptr) {
567
620
  grpc_core::test_only_init_callback();
568
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
569
630
  }
570
631
 
571
632
  static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
@@ -813,7 +874,8 @@ static void set_write_state(grpc_chttp2_transport* t,
813
874
  grpc_chttp2_write_state st, const char* reason) {
814
875
  GRPC_CHTTP2_IF_TRACING(
815
876
  gpr_log(GPR_INFO, "W:%p %s [%s] state %s -> %s [%s]", t,
816
- 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(),
817
879
  write_state_name(t->write_state), write_state_name(st), reason));
818
880
  t->write_state = st;
819
881
  // If the state is being reset back to idle, it means a write was just
@@ -1048,8 +1110,9 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1048
1110
  // We want to log this irrespective of whether http tracing is enabled if we
1049
1111
  // received a GOAWAY with a non NO_ERROR code.
1050
1112
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1051
- gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1052
- 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());
1053
1116
  }
1054
1117
  if (t->is_client) {
1055
1118
  cancel_unstarted_streams(t, t->goaway_error);
@@ -1080,7 +1143,8 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1080
1143
  "%s: Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
1081
1144
  "data equal to \"too_many_pings\". Current keepalive time (before "
1082
1145
  "throttling): %s",
1083
- 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());
1084
1148
  constexpr int max_keepalive_time_millis =
1085
1149
  INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
1086
1150
  int64_t throttled_keepalive_time =
@@ -1150,14 +1214,6 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1150
1214
  }
1151
1215
  }
1152
1216
 
1153
- // Flag that this closure barrier may be covering a write in a pollset, and so
1154
- // we should not complete this closure until we can prove that the write got
1155
- // scheduled
1156
- #define CLOSURE_BARRIER_MAY_COVER_WRITE (1 << 0)
1157
- // First bit of the reference count, stored in the high order bits (with the low
1158
- // bits being used for flags defined above)
1159
- #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
1160
-
1161
1217
  static grpc_closure* add_closure_barrier(grpc_closure* closure) {
1162
1218
  closure->next_data.scratch += CLOSURE_BARRIER_FIRST_REF_BIT;
1163
1219
  return closure;
@@ -1176,10 +1232,11 @@ static void null_then_sched_closure(grpc_closure** closure) {
1176
1232
  }
1177
1233
 
1178
1234
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1179
- grpc_chttp2_stream* /*s*/,
1235
+ grpc_chttp2_stream* s,
1180
1236
  grpc_closure** pclosure,
1181
1237
  grpc_error_handle error,
1182
- const char* desc) {
1238
+ const char* desc,
1239
+ grpc_core::DebugLocation whence) {
1183
1240
  grpc_closure* closure = *pclosure;
1184
1241
  *pclosure = nullptr;
1185
1242
  if (closure == nullptr) {
@@ -1190,15 +1247,23 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1190
1247
  gpr_log(
1191
1248
  GPR_INFO,
1192
1249
  "complete_closure_step: t=%p %p refs=%d flags=0x%04x desc=%s err=%s "
1193
- "write_state=%s",
1250
+ "write_state=%s whence=%s:%d",
1194
1251
  t, closure,
1195
1252
  static_cast<int>(closure->next_data.scratch /
1196
1253
  CLOSURE_BARRIER_FIRST_REF_BIT),
1197
1254
  static_cast<int>(closure->next_data.scratch %
1198
1255
  CLOSURE_BARRIER_FIRST_REF_BIT),
1199
1256
  desc, grpc_core::StatusToString(error).c_str(),
1200
- 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()));
1201
1265
  }
1266
+
1202
1267
  if (!error.ok()) {
1203
1268
  grpc_error_handle cl_err =
1204
1269
  grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
@@ -1208,8 +1273,9 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1208
1273
  " write_state=", write_state_name(t->write_state), " refs=",
1209
1274
  closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT, " flags=",
1210
1275
  closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT));
1211
- cl_err = grpc_error_set_str(
1212
- 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()));
1213
1279
  }
1214
1280
  cl_err = grpc_error_add_child(cl_err, error);
1215
1281
  closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
@@ -1258,7 +1324,7 @@ static void perform_stream_op_locked(void* stream_op,
1258
1324
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1259
1325
  gpr_log(GPR_INFO,
1260
1326
  "perform_stream_op_locked[s=%p; op=%p]: %s; on_complete = %p", s,
1261
- op, grpc_transport_stream_op_batch_string(op).c_str(),
1327
+ op, grpc_transport_stream_op_batch_string(op, false).c_str(),
1262
1328
  op->on_complete);
1263
1329
  if (op->send_initial_metadata) {
1264
1330
  log_metadata(op_payload->send_initial_metadata.send_initial_metadata,
@@ -1270,6 +1336,14 @@ static void perform_stream_op_locked(void* stream_op,
1270
1336
  }
1271
1337
  }
1272
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
+
1273
1347
  grpc_closure* on_complete = op->on_complete;
1274
1348
  // on_complete will be null if and only if there are no send ops in the batch.
1275
1349
  if (on_complete != nullptr) {
@@ -1288,7 +1362,7 @@ static void perform_stream_op_locked(void* stream_op,
1288
1362
  t->channelz_socket->RecordStreamStartedFromLocal();
1289
1363
  }
1290
1364
  GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
1291
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1365
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1292
1366
 
1293
1367
  s->send_initial_metadata_finished = add_closure_barrier(on_complete);
1294
1368
  s->send_initial_metadata =
@@ -1338,17 +1412,13 @@ static void perform_stream_op_locked(void* stream_op,
1338
1412
  &s->write_closed_error, 1),
1339
1413
  "send_initial_metadata_finished");
1340
1414
  }
1341
- if (op_payload->send_initial_metadata.peer_string != nullptr) {
1342
- gpr_atm_rel_store(op_payload->send_initial_metadata.peer_string,
1343
- (gpr_atm)t->peer_string.c_str());
1344
- }
1345
1415
  }
1346
1416
 
1347
1417
  if (op->send_message) {
1348
1418
  t->num_messages_in_next_write++;
1349
1419
  grpc_core::global_stats().IncrementHttp2SendMessageSize(
1350
1420
  op->payload->send_message.send_message->Length());
1351
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1421
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1352
1422
  s->send_message_finished = add_closure_barrier(op->on_complete);
1353
1423
  const uint32_t flags = op_payload->send_message.flags;
1354
1424
  if (s->write_closed) {
@@ -1422,7 +1492,7 @@ static void perform_stream_op_locked(void* stream_op,
1422
1492
 
1423
1493
  if (op->send_trailing_metadata) {
1424
1494
  GPR_ASSERT(s->send_trailing_metadata_finished == nullptr);
1425
- on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1495
+ on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
1426
1496
  s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
1427
1497
  s->send_trailing_metadata =
1428
1498
  op_payload->send_trailing_metadata.send_trailing_metadata;
@@ -1461,10 +1531,6 @@ static void perform_stream_op_locked(void* stream_op,
1461
1531
  if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
1462
1532
  *s->trailing_metadata_available = true;
1463
1533
  }
1464
- if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1465
- gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1466
- (gpr_atm)t->peer_string.c_str());
1467
- }
1468
1534
  grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
1469
1535
  }
1470
1536
 
@@ -1519,7 +1585,7 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1519
1585
 
1520
1586
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
1521
1587
  gpr_log(GPR_INFO, "perform_stream_op[s=%p; op=%p]: %s", s, op,
1522
- grpc_transport_stream_op_batch_string(op).c_str());
1588
+ grpc_transport_stream_op_batch_string(op, false).c_str());
1523
1589
  }
1524
1590
 
1525
1591
  GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
@@ -1613,7 +1679,7 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
1613
1679
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1614
1680
  if (pq->inflight_id != id) {
1615
1681
  gpr_log(GPR_DEBUG, "Unknown ping response from %s: %" PRIx64,
1616
- t->peer_string.c_str(), id);
1682
+ std::string(t->peer_string.as_string_view()).c_str(), id);
1617
1683
  return;
1618
1684
  }
1619
1685
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION,
@@ -1660,11 +1726,12 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1660
1726
  return;
1661
1727
  }
1662
1728
  if (t_->destroying || !t_->closed_with_error.ok()) {
1663
- GRPC_CHTTP2_IF_TRACING(gpr_log(
1664
- GPR_INFO,
1665
- "transport:%p %s peer:%s Transport already shutting down. "
1666
- "Graceful GOAWAY abandoned.",
1667
- 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()));
1668
1735
  return;
1669
1736
  }
1670
1737
  // Ping completed. Send final goaway.
@@ -1673,7 +1740,8 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1673
1740
  "transport:%p %s peer:%s Graceful shutdown: Ping received. "
1674
1741
  "Sending final GOAWAY with stream_id:%d",
1675
1742
  t_, t_->is_client ? "CLIENT" : "SERVER",
1676
- 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));
1677
1745
  t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1678
1746
  grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
1679
1747
  &t_->qbuf);
@@ -1736,7 +1804,8 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1736
1804
  } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
1737
1805
  t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1738
1806
  // We want to log this irrespective of whether http tracing is enabled
1739
- 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(),
1740
1809
  grpc_core::StatusToString(error).c_str());
1741
1810
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1742
1811
  grpc_chttp2_goaway_append(
@@ -1845,7 +1914,8 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
1845
1914
  grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1846
1915
  }
1847
1916
  *s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
1848
- 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());
1849
1919
  // If we didn't receive initial metadata from the wire and instead faked a
1850
1920
  // status (due to stream cancellations for example), let upper layers know
1851
1921
  // that trailing metadata is immediately available.
@@ -1960,7 +2030,6 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1960
2030
  grpc_transport_move_stats(&s->stats, s->collecting_stats);
1961
2031
  s->collecting_stats = nullptr;
1962
2032
  *s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
1963
- s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
1964
2033
  null_then_sched_closure(&s->recv_trailing_metadata_finished);
1965
2034
  }
1966
2035
  }
@@ -2546,7 +2615,8 @@ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2546
2615
  static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2547
2616
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2548
2617
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2549
- 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(),
2550
2620
  grpc_core::StatusToString(error).c_str());
2551
2621
  }
2552
2622
  if (!error.ok() || !t->closed_with_error.ok()) {
@@ -2570,7 +2640,8 @@ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2570
2640
  static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2571
2641
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2572
2642
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2573
- 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(),
2574
2645
  grpc_core::StatusToString(error).c_str());
2575
2646
  }
2576
2647
  if (!error.ok() || !t->closed_with_error.ok()) {
@@ -2732,7 +2803,8 @@ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2732
2803
  }
2733
2804
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2734
2805
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2735
- 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());
2736
2808
  }
2737
2809
  GRPC_CHTTP2_REF_TRANSPORT(t, "keepalive watchdog");
2738
2810
  t->keepalive_watchdog_timer_handle =
@@ -2757,7 +2829,8 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2757
2829
  if (error.ok()) {
2758
2830
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2759
2831
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2760
- 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());
2761
2834
  }
2762
2835
  if (!t->keepalive_ping_started) {
2763
2836
  // start_keepalive_ping_locked has not run yet. Reschedule
@@ -2804,7 +2877,7 @@ static void keepalive_watchdog_fired_locked(
2804
2877
  t->keepalive_watchdog_timer_handle.reset();
2805
2878
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2806
2879
  gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2807
- t->peer_string.c_str());
2880
+ std::string(t->peer_string.as_string_view()).c_str());
2808
2881
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2809
2882
  close_transport_locked(
2810
2883
  t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
@@ -2828,7 +2901,7 @@ static void maybe_reset_keepalive_ping_timer_locked(grpc_chttp2_transport* t) {
2828
2901
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2829
2902
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2830
2903
  gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
2831
- t->peer_string.c_str());
2904
+ std::string(t->peer_string.as_string_view()).c_str());
2832
2905
  }
2833
2906
  t->keepalive_ping_timer_handle =
2834
2907
  t->event_engine->RunAfter(t->keepalive_time, [t] {
@@ -2921,7 +2994,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2921
2994
  // disconnect cleanly
2922
2995
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2923
2996
  gpr_log(GPR_INFO, "HTTP2: %s - send goaway to free memory",
2924
- t->peer_string.c_str());
2997
+ std::string(t->peer_string.as_string_view()).c_str());
2925
2998
  }
2926
2999
  send_goaway(t,
2927
3000
  grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
@@ -2932,7 +3005,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2932
3005
  gpr_log(GPR_INFO,
2933
3006
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
2934
3007
  " streams",
2935
- t->peer_string.c_str(),
3008
+ std::string(t->peer_string.as_string_view()).c_str(),
2936
3009
  grpc_chttp2_stream_map_size(&t->stream_map));
2937
3010
  }
2938
3011
  t->benign_reclaimer_registered = false;
@@ -2951,7 +3024,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2951
3024
  grpc_chttp2_stream_map_rand(&t->stream_map));
2952
3025
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2953
3026
  gpr_log(GPR_INFO, "HTTP2: %s - abandon stream id %d",
2954
- t->peer_string.c_str(), s->id);
3027
+ std::string(t->peer_string.as_string_view()).c_str(), s->id);
2955
3028
  }
2956
3029
  grpc_chttp2_cancel_stream(
2957
3030
  t, s,
@@ -3032,6 +3105,7 @@ static grpc_endpoint* chttp2_get_endpoint(grpc_transport* t) {
3032
3105
  }
3033
3106
 
3034
3107
  static const grpc_transport_vtable vtable = {sizeof(grpc_chttp2_stream),
3108
+ false,
3035
3109
  "chttp2",
3036
3110
  init_stream,
3037
3111
  nullptr,
@@ -3070,9 +3144,24 @@ void grpc_chttp2_transport_start_reading(
3070
3144
  grpc_slice_buffer_move_into(read_buffer, &t->read_buffer);
3071
3145
  gpr_free(read_buffer);
3072
3146
  }
3073
- t->notify_on_receive_settings = notify_on_receive_settings;
3074
- t->notify_on_close = notify_on_close;
3075
3147
  t->combiner->Run(
3076
- 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
+ }),
3077
3166
  absl::OkStatus());
3078
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)) {