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
@@ -45,54 +45,11 @@
45
45
  #include "src/core/lib/gprpp/time.h"
46
46
  #include "src/core/lib/resource_quota/arena.h"
47
47
  #include "src/core/lib/slice/slice.h"
48
+ #include "src/core/lib/transport/custom_metadata.h"
48
49
  #include "src/core/lib/transport/parsed_metadata.h"
49
50
 
50
51
  namespace grpc_core {
51
52
 
52
- ///////////////////////////////////////////////////////////////////////////////
53
- // Compression traits.
54
- //
55
- // Each metadata trait exposes exactly one compression trait.
56
- // This type directs how transports might choose to compress the metadata.
57
- // Adding a value here typically involves editing all transports to support the
58
- // trait, and so should not be done lightly.
59
-
60
- // No compression.
61
- struct NoCompressionCompressor {};
62
-
63
- // Expect a single value for this metadata key, but we don't know apriori its
64
- // value.
65
- // It's ok if it changes over time, but it should be mostly stable.
66
- // This is used for things like user-agent, which is expected to be the same
67
- // for all requests.
68
- struct StableValueCompressor {};
69
-
70
- // Expect a single value for this metadata key, and we know apriori its value.
71
- template <typename T, T value>
72
- struct KnownValueCompressor {};
73
-
74
- // Values are uncompressible, but expect the key to be in most requests and try
75
- // and compress that.
76
- struct FrequentKeyWithNoValueCompressionCompressor {};
77
-
78
- // Expect a small set of values for this metadata key.
79
- struct SmallSetOfValuesCompressor {};
80
-
81
- // Expect integral values up to N for this metadata key.
82
- template <size_t N>
83
- struct SmallIntegralValuesCompressor {};
84
-
85
- // Specialty compressor for grpc-timeout metadata.
86
- struct TimeoutCompressor {};
87
-
88
- // Specialty compressors for HTTP/2 psuedo headers.
89
- struct HttpSchemeCompressor {};
90
- struct HttpMethodCompressor {};
91
- struct HttpStatusCompressor {};
92
-
93
- ///////////////////////////////////////////////////////////////////////////////
94
- // Metadata traits
95
-
96
53
  // Given a metadata key and a value, return the encoded size.
97
54
  // Defaults to calling the key's Encode() method and then calculating the size
98
55
  // of that, but can be overridden for specific keys if there's a better way of
@@ -114,7 +71,6 @@ struct GrpcTimeoutMetadata {
114
71
  static constexpr bool kRepeatable = false;
115
72
  using ValueType = Timestamp;
116
73
  using MementoType = Duration;
117
- using CompressionTraits = TimeoutCompressor;
118
74
  static absl::string_view key() { return "grpc-timeout"; }
119
75
  static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
120
76
  static ValueType MementoToValue(MementoType timeout);
@@ -134,7 +90,6 @@ struct TeMetadata {
134
90
  kInvalid,
135
91
  };
136
92
  using MementoType = ValueType;
137
- using CompressionTraits = KnownValueCompressor<ValueType, kTrailers>;
138
93
  static absl::string_view key() { return "te"; }
139
94
  static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
140
95
  static ValueType MementoToValue(MementoType te) { return te; }
@@ -162,7 +117,6 @@ struct ContentTypeMetadata {
162
117
  kInvalid,
163
118
  };
164
119
  using MementoType = ValueType;
165
- using CompressionTraits = KnownValueCompressor<ValueType, kApplicationGrpc>;
166
120
  static absl::string_view key() { return "content-type"; }
167
121
  static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
168
122
  static ValueType MementoToValue(MementoType content_type) {
@@ -185,7 +139,6 @@ struct HttpSchemeMetadata {
185
139
  kInvalid,
186
140
  };
187
141
  using MementoType = ValueType;
188
- using CompressionTraits = HttpSchemeCompressor;
189
142
  static absl::string_view key() { return ":scheme"; }
190
143
  static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
191
144
  return Parse(value.as_string_view(), on_error);
@@ -214,7 +167,6 @@ struct HttpMethodMetadata {
214
167
  kInvalid,
215
168
  };
216
169
  using MementoType = ValueType;
217
- using CompressionTraits = HttpMethodCompressor;
218
170
  static absl::string_view key() { return ":method"; }
219
171
  static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
220
172
  static ValueType MementoToValue(MementoType content_type) {
@@ -251,15 +203,12 @@ struct CompressionAlgorithmBasedMetadata {
251
203
  // grpc-encoding metadata trait.
252
204
  struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata {
253
205
  static constexpr bool kRepeatable = false;
254
- using CompressionTraits =
255
- SmallIntegralValuesCompressor<GRPC_COMPRESS_ALGORITHMS_COUNT>;
256
206
  static absl::string_view key() { return "grpc-encoding"; }
257
207
  };
258
208
 
259
209
  // grpc-internal-encoding-request metadata trait.
260
210
  struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata {
261
211
  static constexpr bool kRepeatable = false;
262
- using CompressionTraits = NoCompressionCompressor;
263
212
  static absl::string_view key() { return "grpc-internal-encoding-request"; }
264
213
  };
265
214
 
@@ -269,7 +218,6 @@ struct GrpcAcceptEncodingMetadata {
269
218
  static absl::string_view key() { return "grpc-accept-encoding"; }
270
219
  using ValueType = CompressionAlgorithmSet;
271
220
  using MementoType = ValueType;
272
- using CompressionTraits = StableValueCompressor;
273
221
  static MementoType ParseMemento(Slice value, MetadataParseErrorFn) {
274
222
  return CompressionAlgorithmSet::FromString(value.as_string_view());
275
223
  }
@@ -300,63 +248,54 @@ struct SimpleSliceBasedMetadata {
300
248
  // user-agent metadata trait.
301
249
  struct UserAgentMetadata : public SimpleSliceBasedMetadata {
302
250
  static constexpr bool kRepeatable = false;
303
- using CompressionTraits = StableValueCompressor;
304
251
  static absl::string_view key() { return "user-agent"; }
305
252
  };
306
253
 
307
254
  // grpc-message metadata trait.
308
255
  struct GrpcMessageMetadata : public SimpleSliceBasedMetadata {
309
256
  static constexpr bool kRepeatable = false;
310
- using CompressionTraits = NoCompressionCompressor;
311
257
  static absl::string_view key() { return "grpc-message"; }
312
258
  };
313
259
 
314
260
  // host metadata trait.
315
261
  struct HostMetadata : public SimpleSliceBasedMetadata {
316
262
  static constexpr bool kRepeatable = false;
317
- using CompressionTraits = NoCompressionCompressor;
318
263
  static absl::string_view key() { return "host"; }
319
264
  };
320
265
 
321
266
  // endpoint-load-metrics-bin metadata trait.
322
267
  struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
323
268
  static constexpr bool kRepeatable = false;
324
- using CompressionTraits = NoCompressionCompressor;
325
269
  static absl::string_view key() { return "endpoint-load-metrics-bin"; }
326
270
  };
327
271
 
328
272
  // grpc-server-stats-bin metadata trait.
329
273
  struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata {
330
274
  static constexpr bool kRepeatable = false;
331
- using CompressionTraits = NoCompressionCompressor;
332
275
  static absl::string_view key() { return "grpc-server-stats-bin"; }
333
276
  };
334
277
 
335
278
  // grpc-trace-bin metadata trait.
336
279
  struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata {
337
280
  static constexpr bool kRepeatable = false;
338
- using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor;
339
281
  static absl::string_view key() { return "grpc-trace-bin"; }
340
282
  };
341
283
 
342
284
  // grpc-tags-bin metadata trait.
343
285
  struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata {
344
286
  static constexpr bool kRepeatable = false;
345
- using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor;
346
287
  static absl::string_view key() { return "grpc-tags-bin"; }
347
288
  };
348
289
 
349
290
  // :authority metadata trait.
350
291
  struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata {
351
292
  static constexpr bool kRepeatable = false;
352
- using CompressionTraits = SmallSetOfValuesCompressor;
353
293
  static absl::string_view key() { return ":authority"; }
354
294
  };
355
295
 
356
296
  // :path metadata trait.
357
297
  struct HttpPathMetadata : public SimpleSliceBasedMetadata {
358
298
  static constexpr bool kRepeatable = false;
359
- using CompressionTraits = SmallSetOfValuesCompressor;
360
299
  static absl::string_view key() { return ":path"; }
361
300
  };
362
301
 
@@ -390,7 +329,6 @@ struct SimpleIntBasedMetadata : public SimpleIntBasedMetadataBase<Int> {
390
329
  struct GrpcStatusMetadata
391
330
  : public SimpleIntBasedMetadata<grpc_status_code, GRPC_STATUS_UNKNOWN> {
392
331
  static constexpr bool kRepeatable = false;
393
- using CompressionTraits = SmallIntegralValuesCompressor<16>;
394
332
  static absl::string_view key() { return "grpc-status"; }
395
333
  };
396
334
 
@@ -398,7 +336,6 @@ struct GrpcStatusMetadata
398
336
  struct GrpcPreviousRpcAttemptsMetadata
399
337
  : public SimpleIntBasedMetadata<uint32_t, 0> {
400
338
  static constexpr bool kRepeatable = false;
401
- using CompressionTraits = NoCompressionCompressor;
402
339
  static absl::string_view key() { return "grpc-previous-rpc-attempts"; }
403
340
  };
404
341
 
@@ -408,7 +345,6 @@ struct GrpcRetryPushbackMsMetadata {
408
345
  static absl::string_view key() { return "grpc-retry-pushback-ms"; }
409
346
  using ValueType = Duration;
410
347
  using MementoType = Duration;
411
- using CompressionTraits = NoCompressionCompressor;
412
348
  static ValueType MementoToValue(MementoType x) { return x; }
413
349
  static Slice Encode(Duration x) { return Slice::FromInt64(x.millis()); }
414
350
  static int64_t DisplayValue(Duration x) { return x.millis(); }
@@ -420,7 +356,6 @@ struct GrpcRetryPushbackMsMetadata {
420
356
  // TODO(ctiller): consider moving to uint16_t
421
357
  struct HttpStatusMetadata : public SimpleIntBasedMetadata<uint32_t, 0> {
422
358
  static constexpr bool kRepeatable = false;
423
- using CompressionTraits = HttpStatusCompressor;
424
359
  static absl::string_view key() { return ":status"; }
425
360
  };
426
361
 
@@ -433,7 +368,6 @@ struct GrpcLbClientStatsMetadata {
433
368
  static absl::string_view key() { return "grpclb_client_stats"; }
434
369
  using ValueType = GrpcLbClientStats*;
435
370
  using MementoType = ValueType;
436
- using CompressionTraits = NoCompressionCompressor;
437
371
  static ValueType MementoToValue(MementoType value) { return value; }
438
372
  static Slice Encode(ValueType) { abort(); }
439
373
  static const char* DisplayValue(ValueType) { return "<internal-lb-stats>"; }
@@ -453,7 +387,6 @@ inline size_t EncodedSizeOfKey(GrpcLbClientStatsMetadata,
453
387
  // lb-token metadata
454
388
  struct LbTokenMetadata : public SimpleSliceBasedMetadata {
455
389
  static constexpr bool kRepeatable = false;
456
- using CompressionTraits = NoCompressionCompressor;
457
390
  static absl::string_view key() { return "lb-token"; }
458
391
  };
459
392
 
@@ -466,7 +399,6 @@ struct LbCostBinMetadata {
466
399
  std::string name;
467
400
  };
468
401
  using MementoType = ValueType;
469
- using CompressionTraits = NoCompressionCompressor;
470
402
  static ValueType MementoToValue(MementoType value) { return value; }
471
403
  static Slice Encode(const ValueType& x);
472
404
  static std::string DisplayValue(ValueType x);
@@ -490,8 +422,8 @@ struct GrpcStreamNetworkState {
490
422
  struct PeerString {
491
423
  static absl::string_view DebugKey() { return "PeerString"; }
492
424
  static constexpr bool kRepeatable = false;
493
- using ValueType = absl::string_view;
494
- static std::string DisplayValue(ValueType x);
425
+ using ValueType = Slice;
426
+ static std::string DisplayValue(const ValueType& x);
495
427
  };
496
428
 
497
429
  // Annotation added by various systems to describe the reason for a failure.
@@ -510,6 +442,15 @@ struct GrpcStatusFromWire {
510
442
  static absl::string_view DisplayValue(bool x) { return x ? "true" : "false"; }
511
443
  };
512
444
 
445
+ // Annotation to denote that this call qualifies for cancelled=1 for the
446
+ // RECV_CLOSE_ON_SERVER op
447
+ struct GrpcCallWasCancelled {
448
+ static absl::string_view DebugKey() { return "GrpcCallWasCancelled"; }
449
+ static constexpr bool kRepeatable = false;
450
+ using ValueType = bool;
451
+ static absl::string_view DisplayValue(bool x) { return x ? "true" : "false"; }
452
+ };
453
+
513
454
  // Annotation added by client surface code to denote wait-for-ready state
514
455
  struct WaitForReady {
515
456
  struct ValueType {
@@ -635,9 +576,8 @@ class ParseHelper {
635
576
 
636
577
  GPR_ATTRIBUTE_NOINLINE ParsedMetadata<Container> NotFound(
637
578
  absl::string_view key) {
638
- return ParsedMetadata<Container>(
639
- typename ParsedMetadata<Container>::FromSlicePair{},
640
- Slice::FromCopiedString(key), std::move(value_), transport_size_);
579
+ return ParsedMetadata<Container>(Slice::FromCopiedString(key),
580
+ std::move(value_));
641
581
  }
642
582
 
643
583
  private:
@@ -1053,35 +993,6 @@ class UnknownMap {
1053
993
  ChunkedVector<std::pair<Slice, Slice>, 10> unknown_;
1054
994
  };
1055
995
 
1056
- // Given a factory template Factory, construct a type that derives from
1057
- // Factory<MetadataTrait, MetadataTrait::CompressionTraits> for all
1058
- // MetadataTraits. Useful for transports in defining the stateful parts of their
1059
- // compression algorithm.
1060
- template <template <typename, typename> class Factory,
1061
- typename... MetadataTraits>
1062
- struct StatefulCompressor;
1063
-
1064
- template <template <typename, typename> class Factory, typename MetadataTrait,
1065
- bool kEncodable = IsEncodableTrait<MetadataTrait>::value>
1066
- struct SpecificStatefulCompressor;
1067
-
1068
- template <template <typename, typename> class Factory, typename MetadataTrait>
1069
- struct SpecificStatefulCompressor<Factory, MetadataTrait, true>
1070
- : public Factory<MetadataTrait, typename MetadataTrait::CompressionTraits> {
1071
- };
1072
-
1073
- template <template <typename, typename> class Factory, typename MetadataTrait>
1074
- struct SpecificStatefulCompressor<Factory, MetadataTrait, false> {};
1075
-
1076
- template <template <typename, typename> class Factory, typename MetadataTrait,
1077
- typename... MetadataTraits>
1078
- struct StatefulCompressor<Factory, MetadataTrait, MetadataTraits...>
1079
- : public SpecificStatefulCompressor<Factory, MetadataTrait>,
1080
- public StatefulCompressor<Factory, MetadataTraits...> {};
1081
-
1082
- template <template <typename, typename> class Factory>
1083
- struct StatefulCompressor<Factory> {};
1084
-
1085
996
  } // namespace metadata_detail
1086
997
 
1087
998
  // Helper function for encoders
@@ -1200,15 +1111,6 @@ class MetadataMap {
1200
1111
  explicit MetadataMap(Arena* arena);
1201
1112
  ~MetadataMap();
1202
1113
 
1203
- // Given a compressor factory - template taking <MetadataTrait,
1204
- // CompressionTrait>, StatefulCompressor<Factory> provides a type
1205
- // derived from all Encodable traits in this MetadataMap.
1206
- // This can be used by transports to delegate compression to the appropriate
1207
- // compression algorithm.
1208
- template <template <typename, typename> class Factory>
1209
- using StatefulCompressor =
1210
- metadata_detail::StatefulCompressor<Factory, Traits...>;
1211
-
1212
1114
  MetadataMap(const MetadataMap&) = delete;
1213
1115
  MetadataMap& operator=(const MetadataMap&) = delete;
1214
1116
  MetadataMap(MetadataMap&&) noexcept;
@@ -1486,7 +1388,9 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
1486
1388
  // Non-encodable things
1487
1389
  grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
1488
1390
  grpc_core::GrpcStatusContext, grpc_core::GrpcStatusFromWire,
1489
- grpc_core::WaitForReady, grpc_core::GrpcTrailersOnly>;
1391
+ grpc_core::GrpcCallWasCancelled, grpc_core::WaitForReady,
1392
+ grpc_core::GrpcTrailersOnly GRPC_CUSTOM_CLIENT_METADATA
1393
+ GRPC_CUSTOM_SERVER_METADATA>;
1490
1394
 
1491
1395
  struct grpc_metadata_batch : public grpc_metadata_batch_base {
1492
1396
  using grpc_metadata_batch_base::grpc_metadata_batch_base;
@@ -26,7 +26,6 @@
26
26
 
27
27
  #include "absl/functional/function_ref.h"
28
28
  #include "absl/meta/type_traits.h"
29
- #include "absl/strings/escaping.h"
30
29
  #include "absl/strings/match.h"
31
30
  #include "absl/strings/str_cat.h"
32
31
  #include "absl/strings/string_view.h"
@@ -152,14 +151,9 @@ class ParsedMetadata {
152
151
  value_.slice = value.TakeCSlice();
153
152
  }
154
153
  // Construct metadata from a string key, slice value pair.
155
- // FromSlicePair() is used to adjust the overload set so that we don't
156
- // inadvertently match against any of the previous overloads.
157
- // TODO(ctiller): re-evaluate the overload functions here so and maybe
158
- // introduce some factory functions?
159
- struct FromSlicePair {};
160
- ParsedMetadata(FromSlicePair, Slice key, Slice value, uint32_t transport_size)
154
+ ParsedMetadata(Slice key, Slice value)
161
155
  : vtable_(ParsedMetadata::KeyValueVTable(key.as_string_view())),
162
- transport_size_(transport_size) {
156
+ transport_size_(static_cast<uint32_t>(key.size() + value.size() + 32)) {
163
157
  value_.pointer =
164
158
  new std::pair<Slice, Slice>(std::move(key), std::move(value));
165
159
  }
@@ -193,13 +187,14 @@ class ParsedMetadata {
193
187
  // HTTP2 defined storage size of this metadatum.
194
188
  uint32_t transport_size() const { return transport_size_; }
195
189
  // Create a new parsed metadata with the same key but a different value.
196
- ParsedMetadata WithNewValue(Slice value, uint32_t value_wire_size,
190
+ ParsedMetadata WithNewValue(Slice value,
197
191
  MetadataParseErrorFn on_error) const {
198
192
  ParsedMetadata result;
199
193
  result.vtable_ = vtable_;
200
194
  result.value_ = value_;
201
195
  result.transport_size_ =
202
- TransportSize(static_cast<uint32_t>(key().length()), value_wire_size);
196
+ TransportSize(static_cast<uint32_t>(key().length()),
197
+ static_cast<uint32_t>(value.length()));
203
198
  vtable_->with_new_value(&value, on_error, &result);
204
199
  return result;
205
200
  }
@@ -400,17 +395,12 @@ ParsedMetadata<MetadataContainer>::KeyValueVTable(absl::string_view key) {
400
395
  return absl::StrCat(p->first.as_string_view(), ": ",
401
396
  p->second.as_string_view());
402
397
  };
403
- static const auto binary_debug_string = [](const Buffer& value) {
404
- auto* p = static_cast<KV*>(value.pointer);
405
- return absl::StrCat(p->first.as_string_view(), ": \"",
406
- absl::CEscape(p->second.as_string_view()), "\"");
407
- };
408
398
  static const auto key_fn = [](const Buffer& value) {
409
399
  return static_cast<KV*>(value.pointer)->first.as_string_view();
410
400
  };
411
401
  static const VTable vtable[2] = {
412
402
  {false, destroy, set, with_new_value, debug_string, "", key_fn},
413
- {true, destroy, set, with_new_value, binary_debug_string, "", key_fn},
403
+ {true, destroy, set, with_new_value, debug_string, "", key_fn},
414
404
  };
415
405
  return &vtable[absl::EndsWith(key, "-bin")];
416
406
  }
@@ -20,6 +20,8 @@
20
20
 
21
21
  #include "src/core/lib/transport/timeout_encoding.h"
22
22
 
23
+ #include <limits>
24
+
23
25
  #include "absl/base/attributes.h"
24
26
 
25
27
  #include <grpc/support/log.h>
@@ -30,7 +32,7 @@ namespace grpc_core {
30
32
  namespace {
31
33
 
32
34
  int64_t DivideRoundingUp(int64_t dividend, int64_t divisor) {
33
- return (dividend + divisor - 1) / divisor;
35
+ return (dividend - 1 + divisor) / divisor;
34
36
  }
35
37
 
36
38
  constexpr int64_t kSecondsPerMinute = 60;
@@ -173,6 +175,9 @@ Timeout Timeout::FromMillis(int64_t millis) {
173
175
  } else if (millis < 100000) {
174
176
  int64_t value = DivideRoundingUp(millis, 100);
175
177
  if (value % 10 != 0) return Timeout(value, Unit::kHundredMilliseconds);
178
+ } else if (millis > std::numeric_limits<int64_t>::max() - 999) {
179
+ // prevent signed integer overflow.
180
+ return Timeout(kMaxHours, Unit::kHours);
176
181
  }
177
182
  return Timeout::FromSeconds(DivideRoundingUp(millis, 1000));
178
183
  }
@@ -26,13 +26,17 @@
26
26
  #include <new>
27
27
 
28
28
  #include "absl/status/status.h"
29
+ #include "absl/strings/str_cat.h"
29
30
 
30
31
  #include <grpc/event_engine/event_engine.h>
32
+ #include <grpc/grpc.h>
31
33
 
32
34
  #include "src/core/lib/event_engine/default_event_engine.h"
33
35
  #include "src/core/lib/gpr/alloc.h"
36
+ #include "src/core/lib/gprpp/time.h"
34
37
  #include "src/core/lib/iomgr/exec_ctx.h"
35
38
  #include "src/core/lib/slice/slice.h"
39
+ #include "src/core/lib/transport/error_utils.h"
36
40
  #include "src/core/lib/transport/transport_impl.h"
37
41
 
38
42
  grpc_core::DebugOnlyTraceFlag grpc_trace_stream_refcount(false,
@@ -271,11 +275,35 @@ namespace grpc_core {
271
275
  ServerMetadataHandle ServerMetadataFromStatus(const absl::Status& status,
272
276
  Arena* arena) {
273
277
  auto hdl = arena->MakePooled<ServerMetadata>(arena);
274
- hdl->Set(GrpcStatusMetadata(), static_cast<grpc_status_code>(status.code()));
278
+ grpc_status_code code;
279
+ std::string message;
280
+ grpc_error_get_status(status, Timestamp::InfFuture(), &code, &message,
281
+ nullptr, nullptr);
282
+ hdl->Set(GrpcStatusMetadata(), code);
275
283
  if (!status.ok()) {
276
- hdl->Set(GrpcMessageMetadata(), Slice::FromCopiedString(status.message()));
284
+ hdl->Set(GrpcMessageMetadata(), Slice::FromCopiedString(message));
277
285
  }
278
286
  return hdl;
279
287
  }
280
288
 
289
+ std::string Message::DebugString() const {
290
+ std::string out = absl::StrCat(payload_.Length(), "b");
291
+ auto flags = flags_;
292
+ auto explain = [&flags, &out](uint32_t flag, absl::string_view name) {
293
+ if (flags & flag) {
294
+ flags &= ~flag;
295
+ absl::StrAppend(&out, ":", name);
296
+ }
297
+ };
298
+ explain(GRPC_WRITE_BUFFER_HINT, "write_buffer");
299
+ explain(GRPC_WRITE_NO_COMPRESS, "no_compress");
300
+ explain(GRPC_WRITE_THROUGH, "write_through");
301
+ explain(GRPC_WRITE_INTERNAL_COMPRESS, "compress");
302
+ explain(GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED, "was_compressed");
303
+ if (flags != 0) {
304
+ absl::StrAppend(&out, ":huh=0x", absl::Hex(flags));
305
+ }
306
+ return out;
307
+ }
308
+
281
309
  } // namespace grpc_core
@@ -27,6 +27,7 @@
27
27
 
28
28
  #include <functional>
29
29
  #include <string>
30
+ #include <type_traits>
30
31
  #include <utility>
31
32
 
32
33
  #include "absl/status/status.h"
@@ -36,7 +37,6 @@
36
37
  #include <grpc/impl/connectivity_state.h>
37
38
  #include <grpc/slice.h>
38
39
  #include <grpc/status.h>
39
- #include <grpc/support/atm.h>
40
40
  #include <grpc/support/log.h>
41
41
  #include <grpc/support/time.h>
42
42
 
@@ -54,6 +54,7 @@
54
54
  #include "src/core/lib/promise/arena_promise.h"
55
55
  #include "src/core/lib/promise/context.h"
56
56
  #include "src/core/lib/promise/detail/status.h"
57
+ #include "src/core/lib/promise/latch.h"
57
58
  #include "src/core/lib/promise/pipe.h"
58
59
  #include "src/core/lib/resource_quota/arena.h"
59
60
  #include "src/core/lib/slice/slice_buffer.h"
@@ -106,6 +107,8 @@ class Message {
106
107
  SliceBuffer* payload() { return &payload_; }
107
108
  const SliceBuffer* payload() const { return &payload_; }
108
109
 
110
+ std::string DebugString() const;
111
+
109
112
  private:
110
113
  SliceBuffer payload_;
111
114
  uint32_t flags_ = 0;
@@ -144,11 +147,70 @@ struct StatusCastImpl<ServerMetadataHandle, absl::Status&> {
144
147
  }
145
148
  };
146
149
 
150
+ // Move only type that tracks call startup.
151
+ // Allows observation of when client_initial_metadata has been processed by the
152
+ // end of the local call stack.
153
+ // Interested observers can call Wait() to obtain a promise that will resolve
154
+ // when all local client_initial_metadata processing has completed.
155
+ // The result of this token is either true on successful completion, or false
156
+ // if the metadata was not sent.
157
+ // To set a successful completion, call Complete(true). For failure, call
158
+ // Complete(false).
159
+ // If Complete is not called, the destructor of a still held token will complete
160
+ // with failure.
161
+ // Transports should hold this token until client_initial_metadata has passed
162
+ // any flow control (eg MAX_CONCURRENT_STREAMS for http2).
163
+ class ClientInitialMetadataOutstandingToken {
164
+ public:
165
+ static ClientInitialMetadataOutstandingToken Empty() {
166
+ return ClientInitialMetadataOutstandingToken();
167
+ }
168
+ static ClientInitialMetadataOutstandingToken New(
169
+ Arena* arena = GetContext<Arena>()) {
170
+ ClientInitialMetadataOutstandingToken token;
171
+ token.latch_ = arena->New<Latch<bool>>();
172
+ return token;
173
+ }
174
+
175
+ ClientInitialMetadataOutstandingToken(
176
+ const ClientInitialMetadataOutstandingToken&) = delete;
177
+ ClientInitialMetadataOutstandingToken& operator=(
178
+ const ClientInitialMetadataOutstandingToken&) = delete;
179
+ ClientInitialMetadataOutstandingToken(
180
+ ClientInitialMetadataOutstandingToken&& other) noexcept
181
+ : latch_(std::exchange(other.latch_, nullptr)) {}
182
+ ClientInitialMetadataOutstandingToken& operator=(
183
+ ClientInitialMetadataOutstandingToken&& other) noexcept {
184
+ latch_ = std::exchange(other.latch_, nullptr);
185
+ return *this;
186
+ }
187
+ ~ClientInitialMetadataOutstandingToken() {
188
+ if (latch_ != nullptr) latch_->Set(false);
189
+ }
190
+ void Complete(bool success) { std::exchange(latch_, nullptr)->Set(success); }
191
+
192
+ // Returns a promise that will resolve when this object (or its moved-from
193
+ // ancestor) is dropped.
194
+ auto Wait() { return latch_->Wait(); }
195
+
196
+ private:
197
+ ClientInitialMetadataOutstandingToken() = default;
198
+
199
+ Latch<bool>* latch_ = nullptr;
200
+ };
201
+
202
+ using ClientInitialMetadataOutstandingTokenWaitType =
203
+ decltype(std::declval<ClientInitialMetadataOutstandingToken>().Wait());
204
+
147
205
  struct CallArgs {
148
206
  // Initial metadata from the client to the server.
149
207
  // During promise setup this can be manipulated by filters (and then
150
208
  // passed on to the next filter).
151
209
  ClientMetadataHandle client_initial_metadata;
210
+ // Token indicating that client_initial_metadata is still being processed.
211
+ // This should be moved around and only destroyed when the transport is
212
+ // satisfied that the metadata has passed any flow control measures it has.
213
+ ClientInitialMetadataOutstandingToken client_initial_metadata_outstanding;
152
214
  // Initial metadata from the server to the client.
153
215
  // Set once when it's available.
154
216
  // During promise setup filters can substitute their own latch for this
@@ -331,6 +393,12 @@ struct grpc_transport_stream_op_batch {
331
393
  /// Is this stream traced
332
394
  bool is_traced : 1;
333
395
 
396
+ bool HasOp() const {
397
+ return send_initial_metadata || send_trailing_metadata || send_message ||
398
+ recv_initial_metadata || recv_message || recv_trailing_metadata ||
399
+ cancel_stream;
400
+ }
401
+
334
402
  //**************************************************************************
335
403
  // remaining fields are initialized and used at the discretion of the
336
404
  // current handler of the op
@@ -344,12 +412,6 @@ struct grpc_transport_stream_op_batch_payload {
344
412
  : context(context) {}
345
413
  struct {
346
414
  grpc_metadata_batch* send_initial_metadata = nullptr;
347
- // If non-NULL, will be set by the transport to the peer string (a char*).
348
- // The transport retains ownership of the string.
349
- // Note: This pointer may be used by the transport after the
350
- // send_initial_metadata op is completed. It must remain valid
351
- // until the call is destroyed.
352
- gpr_atm* peer_string = nullptr;
353
415
  } send_initial_metadata;
354
416
 
355
417
  struct {
@@ -394,12 +456,6 @@ struct grpc_transport_stream_op_batch_payload {
394
456
  // uses this to set the success flag of OnReadInitialMetadataDone()
395
457
  // callback.
396
458
  bool* trailing_metadata_available = nullptr;
397
- // If non-NULL, will be set by the transport to the peer string (a char*).
398
- // The transport retains ownership of the string.
399
- // Note: This pointer may be used by the transport after the
400
- // recv_initial_metadata op is completed. It must remain valid
401
- // until the call is destroyed.
402
- gpr_atm* peer_string = nullptr;
403
459
  } recv_initial_metadata;
404
460
 
405
461
  struct {
@@ -546,7 +602,7 @@ void grpc_transport_stream_op_batch_finish_with_failure_from_transport(
546
602
  grpc_transport_stream_op_batch* batch, grpc_error_handle error);
547
603
 
548
604
  std::string grpc_transport_stream_op_batch_string(
549
- grpc_transport_stream_op_batch* op);
605
+ grpc_transport_stream_op_batch* op, bool truncate);
550
606
  std::string grpc_transport_op_string(grpc_transport_op* op);
551
607
 
552
608
  // Send a batch of operations on a transport
@@ -38,6 +38,13 @@ typedef struct grpc_transport_vtable {
38
38
  // layers and initialized by the transport
39
39
  size_t sizeof_stream; // = sizeof(transport stream)
40
40
 
41
+ // HACK: inproc does not handle stream op batch callbacks correctly (receive
42
+ // ops are required to complete prior to on_complete triggering).
43
+ // This flag is used to disable coalescing of batches in connected_channel for
44
+ // that specific transport.
45
+ // TODO(ctiller): This ought not be necessary once we have promises complete.
46
+ bool hacky_disable_stream_op_batch_coalescing_in_connected_channel;
47
+
41
48
  // name of this transport implementation
42
49
  const char* name;
43
50