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
@@ -20,14 +20,9 @@
20
20
 
21
21
  #include <string.h>
22
22
 
23
- #include "absl/types/optional.h"
24
-
25
- #include <grpc/grpc.h>
26
-
27
23
  #include "src/core/ext/filters/http/client/http_client_filter.h"
28
24
  #include "src/core/ext/filters/http/message_compress/compression_filter.h"
29
25
  #include "src/core/ext/filters/http/server/http_server_filter.h"
30
- #include "src/core/lib/channel/channel_args.h"
31
26
  #include "src/core/lib/channel/channel_fwd.h"
32
27
  #include "src/core/lib/channel/channel_stack_builder.h"
33
28
  #include "src/core/lib/config/core_configuration.h"
@@ -50,13 +45,7 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
50
45
  channel_type, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
51
46
  [filter](ChannelStackBuilder* builder) {
52
47
  if (!is_building_http_like_transport(builder)) return true;
53
- auto args = builder->channel_args();
54
- const bool enable =
55
- args.GetBool(GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION)
56
- .value_or(true) ||
57
- args.GetBool(GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION)
58
- .value_or(true);
59
- if (enable) builder->PrependFilter(filter);
48
+ builder->PrependFilter(filter);
60
49
  return true;
61
50
  });
62
51
  };
@@ -36,6 +36,7 @@
36
36
  #include <grpc/support/log.h>
37
37
 
38
38
  #include "src/core/ext/filters/message_size/message_size_filter.h"
39
+ #include "src/core/lib/channel/call_tracer.h"
39
40
  #include "src/core/lib/channel/channel_args.h"
40
41
  #include "src/core/lib/channel/channel_stack.h"
41
42
  #include "src/core/lib/channel/context.h"
@@ -113,6 +114,12 @@ MessageHandle CompressionFilter::CompressMessage(
113
114
  gpr_log(GPR_ERROR, "CompressMessage: len=%" PRIdPTR " alg=%d flags=%d",
114
115
  message->payload()->Length(), algorithm, message->flags());
115
116
  }
117
+ auto* call_context = GetContext<grpc_call_context_element>();
118
+ auto* call_tracer = static_cast<CallTracerInterface*>(
119
+ call_context[GRPC_CONTEXT_CALL_TRACER].value);
120
+ if (call_tracer != nullptr) {
121
+ call_tracer->RecordSendMessage(*message->payload());
122
+ }
116
123
  // Check if we're allowed to compress this message
117
124
  // (apps might want to disable compression for certain messages to avoid
118
125
  // crime/beast like vulns).
@@ -143,6 +150,9 @@ MessageHandle CompressionFilter::CompressMessage(
143
150
  }
144
151
  tmp.Swap(payload);
145
152
  flags |= GRPC_WRITE_INTERNAL_COMPRESS;
153
+ if (call_tracer != nullptr) {
154
+ call_tracer->RecordSendCompressedMessage(*message->payload());
155
+ }
146
156
  } else {
147
157
  if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
148
158
  const char* algo_name;
@@ -163,6 +173,12 @@ absl::StatusOr<MessageHandle> CompressionFilter::DecompressMessage(
163
173
  message->payload()->Length(),
164
174
  args.max_recv_message_length.value_or(-1), args.algorithm);
165
175
  }
176
+ auto* call_context = GetContext<grpc_call_context_element>();
177
+ auto* call_tracer = static_cast<CallTracerInterface*>(
178
+ call_context[GRPC_CONTEXT_CALL_TRACER].value);
179
+ if (call_tracer != nullptr) {
180
+ call_tracer->RecordReceivedMessage(*message->payload());
181
+ }
166
182
  // Check max message length.
167
183
  if (args.max_recv_message_length.has_value() &&
168
184
  message->payload()->Length() >
@@ -189,6 +205,9 @@ absl::StatusOr<MessageHandle> CompressionFilter::DecompressMessage(
189
205
  message->payload()->Swap(&decompressed_slices);
190
206
  message->mutable_flags() &= ~GRPC_WRITE_INTERNAL_COMPRESS;
191
207
  message->mutable_flags() |= GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED;
208
+ if (call_tracer != nullptr) {
209
+ call_tracer->RecordReceivedDecompressedMessage(*message->payload());
210
+ }
192
211
  return std::move(message);
193
212
  }
194
213
 
@@ -233,7 +252,7 @@ ArenaPromise<ServerMetadataHandle> ClientCompressionFilter::MakeCallPromise(
233
252
  return CompressMessage(std::move(message), compression_algorithm);
234
253
  });
235
254
  auto* decompress_args = GetContext<Arena>()->New<DecompressArgs>(
236
- DecompressArgs{GRPC_COMPRESS_NONE, absl::nullopt});
255
+ DecompressArgs{GRPC_COMPRESS_ALGORITHMS_COUNT, absl::nullopt});
237
256
  auto* decompress_err =
238
257
  GetContext<Arena>()->New<Latch<ServerMetadataHandle>>();
239
258
  call_args.server_initial_metadata->InterceptAndMap(
@@ -254,8 +273,8 @@ ArenaPromise<ServerMetadataHandle> ClientCompressionFilter::MakeCallPromise(
254
273
  return std::move(*r);
255
274
  });
256
275
  // Run the next filter, and race it with getting an error from decompression.
257
- return Race(next_promise_factory(std::move(call_args)),
258
- decompress_err->Wait());
276
+ return Race(decompress_err->Wait(),
277
+ next_promise_factory(std::move(call_args)));
259
278
  }
260
279
 
261
280
  ArenaPromise<ServerMetadataHandle> ServerCompressionFilter::MakeCallPromise(
@@ -269,7 +288,8 @@ ArenaPromise<ServerMetadataHandle> ServerCompressionFilter::MakeCallPromise(
269
288
  this](MessageHandle message) -> absl::optional<MessageHandle> {
270
289
  auto r = DecompressMessage(std::move(message), decompress_args);
271
290
  if (grpc_call_trace.enabled()) {
272
- gpr_log(GPR_DEBUG, "DecompressMessage returned %s",
291
+ gpr_log(GPR_DEBUG, "%s[compression] DecompressMessage returned %s",
292
+ Activity::current()->DebugTag().c_str(),
273
293
  r.status().ToString().c_str());
274
294
  }
275
295
  if (!r.ok()) {
@@ -295,13 +315,9 @@ ArenaPromise<ServerMetadataHandle> ServerCompressionFilter::MakeCallPromise(
295
315
  this](MessageHandle message) -> absl::optional<MessageHandle> {
296
316
  return CompressMessage(std::move(message), *compression_algorithm);
297
317
  });
298
- // Concurrently:
299
- // - call the next filter
300
- // - decompress incoming messages
301
- // - wait for initial metadata to be sent, and then commence compression of
302
- // outgoing messages
303
- return Race(next_promise_factory(std::move(call_args)),
304
- decompress_err->Wait());
318
+ // Run the next filter, and race it with getting an error from decompression.
319
+ return Race(decompress_err->Wait(),
320
+ next_promise_factory(std::move(call_args)));
305
321
  }
306
322
 
307
323
  } // namespace grpc_core
@@ -18,10 +18,13 @@
18
18
 
19
19
  #include "src/core/ext/filters/message_size/message_size_filter.h"
20
20
 
21
+ #include <inttypes.h>
22
+
23
+ #include <functional>
21
24
  #include <initializer_list>
22
- #include <new>
25
+ #include <string>
26
+ #include <utility>
23
27
 
24
- #include "absl/status/status.h"
25
28
  #include "absl/strings/str_format.h"
26
29
 
27
30
  #include <grpc/grpc.h>
@@ -32,21 +35,22 @@
32
35
  #include "src/core/lib/channel/channel_stack.h"
33
36
  #include "src/core/lib/channel/channel_stack_builder.h"
34
37
  #include "src/core/lib/config/core_configuration.h"
35
- #include "src/core/lib/gprpp/debug_location.h"
36
- #include "src/core/lib/gprpp/status_helper.h"
37
- #include "src/core/lib/iomgr/call_combiner.h"
38
- #include "src/core/lib/iomgr/closure.h"
39
- #include "src/core/lib/iomgr/error.h"
38
+ #include "src/core/lib/debug/trace.h"
39
+ #include "src/core/lib/promise/activity.h"
40
+ #include "src/core/lib/promise/context.h"
41
+ #include "src/core/lib/promise/latch.h"
42
+ #include "src/core/lib/promise/poll.h"
43
+ #include "src/core/lib/promise/race.h"
44
+ #include "src/core/lib/resource_quota/arena.h"
40
45
  #include "src/core/lib/service_config/service_config_call_data.h"
46
+ #include "src/core/lib/slice/slice.h"
41
47
  #include "src/core/lib/slice/slice_buffer.h"
48
+ #include "src/core/lib/surface/call_trace.h"
42
49
  #include "src/core/lib/surface/channel_init.h"
43
50
  #include "src/core/lib/surface/channel_stack_type.h"
51
+ #include "src/core/lib/transport/metadata_batch.h"
44
52
  #include "src/core/lib/transport/transport.h"
45
53
 
46
- static void recv_message_ready(void* user_data, grpc_error_handle error);
47
- static void recv_trailing_metadata_ready(void* user_data,
48
- grpc_error_handle error);
49
-
50
54
  namespace grpc_core {
51
55
 
52
56
  //
@@ -124,251 +128,164 @@ size_t MessageSizeParser::ParserIndex() {
124
128
  parser_name());
125
129
  }
126
130
 
127
- } // namespace grpc_core
128
-
129
- namespace {
130
- struct channel_data {
131
- grpc_core::MessageSizeParsedConfig limits;
132
- const size_t service_config_parser_index{
133
- grpc_core::MessageSizeParser::ParserIndex()};
134
- };
131
+ //
132
+ // MessageSizeFilter
133
+ //
135
134
 
136
- struct call_data {
137
- call_data(grpc_call_element* elem, const channel_data& chand,
138
- const grpc_call_element_args& args)
139
- : call_combiner(args.call_combiner), limits(chand.limits) {
140
- GRPC_CLOSURE_INIT(&recv_message_ready, ::recv_message_ready, elem,
141
- grpc_schedule_on_exec_ctx);
142
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready,
143
- ::recv_trailing_metadata_ready, elem,
144
- grpc_schedule_on_exec_ctx);
145
- // Get max sizes from channel data, then merge in per-method config values.
146
- // Note: Per-method config is only available on the client, so we
147
- // apply the max request size to the send limit and the max response
148
- // size to the receive limit.
149
- const grpc_core::MessageSizeParsedConfig* config_from_call_context =
150
- grpc_core::MessageSizeParsedConfig::GetFromCallContext(
151
- args.context, chand.service_config_parser_index);
152
- if (config_from_call_context != nullptr) {
153
- absl::optional<uint32_t> max_send_size = limits.max_send_size();
154
- absl::optional<uint32_t> max_recv_size = limits.max_recv_size();
155
- if (config_from_call_context->max_send_size().has_value() &&
156
- (!max_send_size.has_value() ||
157
- *config_from_call_context->max_send_size() < *max_send_size)) {
158
- max_send_size = *config_from_call_context->max_send_size();
135
+ const grpc_channel_filter ClientMessageSizeFilter::kFilter =
136
+ MakePromiseBasedFilter<ClientMessageSizeFilter, FilterEndpoint::kClient,
137
+ kFilterExaminesOutboundMessages |
138
+ kFilterExaminesInboundMessages>("message_size");
139
+ const grpc_channel_filter ServerMessageSizeFilter::kFilter =
140
+ MakePromiseBasedFilter<ServerMessageSizeFilter, FilterEndpoint::kServer,
141
+ kFilterExaminesOutboundMessages |
142
+ kFilterExaminesInboundMessages>("message_size");
143
+
144
+ class MessageSizeFilter::CallBuilder {
145
+ private:
146
+ auto Interceptor(uint32_t max_length, bool is_send) {
147
+ return [max_length, is_send,
148
+ err = err_](MessageHandle msg) -> absl::optional<MessageHandle> {
149
+ if (grpc_call_trace.enabled()) {
150
+ gpr_log(GPR_INFO, "%s[message_size] %s len:%" PRIdPTR " max:%d",
151
+ Activity::current()->DebugTag().c_str(),
152
+ is_send ? "send" : "recv", msg->payload()->Length(),
153
+ max_length);
159
154
  }
160
- if (config_from_call_context->max_recv_size().has_value() &&
161
- (!max_recv_size.has_value() ||
162
- *config_from_call_context->max_recv_size() < *max_recv_size)) {
163
- max_recv_size = *config_from_call_context->max_recv_size();
155
+ if (msg->payload()->Length() > max_length) {
156
+ if (err->is_set()) return std::move(msg);
157
+ auto r = GetContext<Arena>()->MakePooled<ServerMetadata>(
158
+ GetContext<Arena>());
159
+ r->Set(GrpcStatusMetadata(), GRPC_STATUS_RESOURCE_EXHAUSTED);
160
+ r->Set(GrpcMessageMetadata(),
161
+ Slice::FromCopiedString(
162
+ absl::StrFormat("%s message larger than max (%u vs. %d)",
163
+ is_send ? "Sent" : "Received",
164
+ msg->payload()->Length(), max_length)));
165
+ err->Set(std::move(r));
166
+ return absl::nullopt;
164
167
  }
165
- limits = grpc_core::MessageSizeParsedConfig(max_send_size, max_recv_size);
166
- }
168
+ return std::move(msg);
169
+ };
167
170
  }
168
171
 
169
- ~call_data() {}
170
-
171
- grpc_core::CallCombiner* call_combiner;
172
- grpc_core::MessageSizeParsedConfig limits;
173
- // Receive closures are chained: we inject this closure as the
174
- // recv_message_ready up-call on transport_stream_op, and remember to
175
- // call our next_recv_message_ready member after handling it.
176
- grpc_closure recv_message_ready;
177
- grpc_closure recv_trailing_metadata_ready;
178
- // The error caused by a message that is too large, or absl::OkStatus()
179
- grpc_error_handle error;
180
- // Used by recv_message_ready.
181
- absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
182
- // Original recv_message_ready callback, invoked after our own.
183
- grpc_closure* next_recv_message_ready = nullptr;
184
- // Original recv_trailing_metadata callback, invoked after our own.
185
- grpc_closure* original_recv_trailing_metadata_ready;
186
- bool seen_recv_trailing_metadata = false;
187
- grpc_error_handle recv_trailing_metadata_error;
188
- };
189
-
190
- } // namespace
172
+ public:
173
+ explicit CallBuilder(const MessageSizeParsedConfig& limits)
174
+ : limits_(limits) {}
191
175
 
192
- // Callback invoked when we receive a message. Here we check the max
193
- // receive message size.
194
- static void recv_message_ready(void* user_data, grpc_error_handle error) {
195
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
196
- call_data* calld = static_cast<call_data*>(elem->call_data);
197
- if (calld->recv_message->has_value() &&
198
- calld->limits.max_recv_size().has_value() &&
199
- (*calld->recv_message)->Length() >
200
- static_cast<size_t>(*calld->limits.max_recv_size())) {
201
- grpc_error_handle new_error = grpc_error_set_int(
202
- GRPC_ERROR_CREATE(absl::StrFormat(
203
- "Received message larger than max (%u vs. %d)",
204
- (*calld->recv_message)->Length(), *calld->limits.max_recv_size())),
205
- grpc_core::StatusIntProperty::kRpcStatus,
206
- GRPC_STATUS_RESOURCE_EXHAUSTED);
207
- error = grpc_error_add_child(error, new_error);
208
- calld->error = error;
176
+ template <typename T>
177
+ void AddSend(T* pipe_end) {
178
+ if (!limits_.max_send_size().has_value()) return;
179
+ pipe_end->InterceptAndMap(Interceptor(*limits_.max_send_size(), true));
209
180
  }
210
- // Invoke the next callback.
211
- grpc_closure* closure = calld->next_recv_message_ready;
212
- calld->next_recv_message_ready = nullptr;
213
- if (calld->seen_recv_trailing_metadata) {
214
- // We might potentially see another RECV_MESSAGE op. In that case, we do not
215
- // want to run the recv_trailing_metadata_ready closure again. The newer
216
- // RECV_MESSAGE op cannot cause any errors since the transport has already
217
- // invoked the recv_trailing_metadata_ready closure and all further
218
- // RECV_MESSAGE ops will get null payloads.
219
- calld->seen_recv_trailing_metadata = false;
220
- GRPC_CALL_COMBINER_START(calld->call_combiner,
221
- &calld->recv_trailing_metadata_ready,
222
- calld->recv_trailing_metadata_error,
223
- "continue recv_trailing_metadata_ready");
181
+ template <typename T>
182
+ void AddRecv(T* pipe_end) {
183
+ if (!limits_.max_recv_size().has_value()) return;
184
+ pipe_end->InterceptAndMap(Interceptor(*limits_.max_recv_size(), false));
224
185
  }
225
- grpc_core::Closure::Run(DEBUG_LOCATION, closure, error);
226
- }
227
186
 
228
- // Callback invoked on completion of recv_trailing_metadata
229
- // Notifies the recv_trailing_metadata batch of any message size failures
230
- static void recv_trailing_metadata_ready(void* user_data,
231
- grpc_error_handle error) {
232
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
233
- call_data* calld = static_cast<call_data*>(elem->call_data);
234
- if (calld->next_recv_message_ready != nullptr) {
235
- calld->seen_recv_trailing_metadata = true;
236
- calld->recv_trailing_metadata_error = error;
237
- GRPC_CALL_COMBINER_STOP(calld->call_combiner,
238
- "deferring recv_trailing_metadata_ready until "
239
- "after recv_message_ready");
240
- return;
187
+ ArenaPromise<ServerMetadataHandle> Run(
188
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
189
+ return Race(err_->Wait(), next_promise_factory(std::move(call_args)));
241
190
  }
242
- error = grpc_error_add_child(error, calld->error);
243
- // Invoke the next callback.
244
- grpc_core::Closure::Run(DEBUG_LOCATION,
245
- calld->original_recv_trailing_metadata_ready, error);
246
- }
247
191
 
248
- // Start transport stream op.
249
- static void message_size_start_transport_stream_op_batch(
250
- grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
251
- call_data* calld = static_cast<call_data*>(elem->call_data);
252
- // Check max send message size.
253
- if (op->send_message && calld->limits.max_send_size().has_value() &&
254
- op->payload->send_message.send_message->Length() >
255
- static_cast<size_t>(*calld->limits.max_send_size())) {
256
- grpc_transport_stream_op_batch_finish_with_failure(
257
- op,
258
- grpc_error_set_int(GRPC_ERROR_CREATE(absl::StrFormat(
259
- "Sent message larger than max (%u vs. %d)",
260
- op->payload->send_message.send_message->Length(),
261
- *calld->limits.max_send_size())),
262
- grpc_core::StatusIntProperty::kRpcStatus,
263
- GRPC_STATUS_RESOURCE_EXHAUSTED),
264
- calld->call_combiner);
265
- return;
266
- }
267
- // Inject callback for receiving a message.
268
- if (op->recv_message) {
269
- calld->next_recv_message_ready =
270
- op->payload->recv_message.recv_message_ready;
271
- calld->recv_message = op->payload->recv_message.recv_message;
272
- op->payload->recv_message.recv_message_ready = &calld->recv_message_ready;
273
- }
274
- // Inject callback for receiving trailing metadata.
275
- if (op->recv_trailing_metadata) {
276
- calld->original_recv_trailing_metadata_ready =
277
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
278
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
279
- &calld->recv_trailing_metadata_ready;
280
- }
281
- // Chain to the next filter.
282
- grpc_call_next_op(elem, op);
283
- }
192
+ private:
193
+ Latch<ServerMetadataHandle>* const err_ =
194
+ GetContext<Arena>()->ManagedNew<Latch<ServerMetadataHandle>>();
195
+ MessageSizeParsedConfig limits_;
196
+ };
284
197
 
285
- // Constructor for call_data.
286
- static grpc_error_handle message_size_init_call_elem(
287
- grpc_call_element* elem, const grpc_call_element_args* args) {
288
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
289
- new (elem->call_data) call_data(elem, *chand, *args);
290
- return absl::OkStatus();
198
+ absl::StatusOr<ClientMessageSizeFilter> ClientMessageSizeFilter::Create(
199
+ const ChannelArgs& args, ChannelFilter::Args) {
200
+ return ClientMessageSizeFilter(args);
291
201
  }
292
202
 
293
- // Destructor for call_data.
294
- static void message_size_destroy_call_elem(
295
- grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
296
- grpc_closure* /*ignored*/) {
297
- call_data* calld = static_cast<call_data*>(elem->call_data);
298
- calld->~call_data();
203
+ absl::StatusOr<ServerMessageSizeFilter> ServerMessageSizeFilter::Create(
204
+ const ChannelArgs& args, ChannelFilter::Args) {
205
+ return ServerMessageSizeFilter(args);
299
206
  }
300
207
 
301
- // Constructor for channel_data.
302
- static grpc_error_handle message_size_init_channel_elem(
303
- grpc_channel_element* elem, grpc_channel_element_args* args) {
304
- GPR_ASSERT(!args->is_last);
305
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
306
- new (chand) channel_data();
307
- chand->limits = grpc_core::MessageSizeParsedConfig::GetFromChannelArgs(
308
- args->channel_args);
309
- return absl::OkStatus();
310
- }
208
+ ArenaPromise<ServerMetadataHandle> ClientMessageSizeFilter::MakeCallPromise(
209
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
210
+ // Get max sizes from channel data, then merge in per-method config values.
211
+ // Note: Per-method config is only available on the client, so we
212
+ // apply the max request size to the send limit and the max response
213
+ // size to the receive limit.
214
+ MessageSizeParsedConfig limits = this->limits();
215
+ const MessageSizeParsedConfig* config_from_call_context =
216
+ MessageSizeParsedConfig::GetFromCallContext(
217
+ GetContext<grpc_call_context_element>(),
218
+ service_config_parser_index_);
219
+ if (config_from_call_context != nullptr) {
220
+ absl::optional<uint32_t> max_send_size = limits.max_send_size();
221
+ absl::optional<uint32_t> max_recv_size = limits.max_recv_size();
222
+ if (config_from_call_context->max_send_size().has_value() &&
223
+ (!max_send_size.has_value() ||
224
+ *config_from_call_context->max_send_size() < *max_send_size)) {
225
+ max_send_size = *config_from_call_context->max_send_size();
226
+ }
227
+ if (config_from_call_context->max_recv_size().has_value() &&
228
+ (!max_recv_size.has_value() ||
229
+ *config_from_call_context->max_recv_size() < *max_recv_size)) {
230
+ max_recv_size = *config_from_call_context->max_recv_size();
231
+ }
232
+ limits = MessageSizeParsedConfig(max_send_size, max_recv_size);
233
+ }
311
234
 
312
- // Destructor for channel_data.
313
- static void message_size_destroy_channel_elem(grpc_channel_element* elem) {
314
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
315
- chand->~channel_data();
235
+ CallBuilder b(limits);
236
+ b.AddSend(call_args.client_to_server_messages);
237
+ b.AddRecv(call_args.server_to_client_messages);
238
+ return b.Run(std::move(call_args), std::move(next_promise_factory));
316
239
  }
317
240
 
318
- const grpc_channel_filter grpc_message_size_filter = {
319
- message_size_start_transport_stream_op_batch,
320
- nullptr,
321
- grpc_channel_next_op,
322
- sizeof(call_data),
323
- message_size_init_call_elem,
324
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
325
- message_size_destroy_call_elem,
326
- sizeof(channel_data),
327
- message_size_init_channel_elem,
328
- grpc_channel_stack_no_post_init,
329
- message_size_destroy_channel_elem,
330
- grpc_channel_next_get_info,
331
- "message_size"};
241
+ ArenaPromise<ServerMetadataHandle> ServerMessageSizeFilter::MakeCallPromise(
242
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
243
+ CallBuilder b(limits());
244
+ b.AddSend(call_args.server_to_client_messages);
245
+ b.AddRecv(call_args.client_to_server_messages);
246
+ return b.Run(std::move(call_args), std::move(next_promise_factory));
247
+ }
332
248
 
249
+ namespace {
333
250
  // Used for GRPC_CLIENT_SUBCHANNEL
334
- static bool maybe_add_message_size_filter_subchannel(
335
- grpc_core::ChannelStackBuilder* builder) {
251
+ bool MaybeAddMessageSizeFilterToSubchannel(ChannelStackBuilder* builder) {
336
252
  if (builder->channel_args().WantMinimalStack()) {
337
253
  return true;
338
254
  }
339
- builder->PrependFilter(&grpc_message_size_filter);
255
+ builder->PrependFilter(&ClientMessageSizeFilter::kFilter);
340
256
  return true;
341
257
  }
342
258
 
343
- // Used for GRPC_CLIENT_DIRECT_CHANNEL and GRPC_SERVER_CHANNEL. Adds the filter
344
- // only if message size limits or service config is specified.
345
- static bool maybe_add_message_size_filter(
346
- grpc_core::ChannelStackBuilder* builder) {
347
- auto channel_args = builder->channel_args();
348
- if (channel_args.WantMinimalStack()) {
259
+ // Used for GRPC_CLIENT_DIRECT_CHANNEL and GRPC_SERVER_CHANNEL. Adds the
260
+ // filter only if message size limits or service config is specified.
261
+ auto MaybeAddMessageSizeFilter(const grpc_channel_filter* filter) {
262
+ return [filter](ChannelStackBuilder* builder) {
263
+ auto channel_args = builder->channel_args();
264
+ if (channel_args.WantMinimalStack()) {
265
+ return true;
266
+ }
267
+ MessageSizeParsedConfig limits =
268
+ MessageSizeParsedConfig::GetFromChannelArgs(channel_args);
269
+ const bool enable =
270
+ limits.max_send_size().has_value() ||
271
+ limits.max_recv_size().has_value() ||
272
+ channel_args.GetString(GRPC_ARG_SERVICE_CONFIG).has_value();
273
+ if (enable) builder->PrependFilter(filter);
349
274
  return true;
350
- }
351
- grpc_core::MessageSizeParsedConfig limits =
352
- grpc_core::MessageSizeParsedConfig::GetFromChannelArgs(channel_args);
353
- const bool enable =
354
- limits.max_send_size().has_value() ||
355
- limits.max_recv_size().has_value() ||
356
- channel_args.GetString(GRPC_ARG_SERVICE_CONFIG).has_value();
357
- if (enable) builder->PrependFilter(&grpc_message_size_filter);
358
- return true;
275
+ };
359
276
  }
360
277
 
361
- namespace grpc_core {
278
+ } // namespace
362
279
  void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder) {
363
280
  MessageSizeParser::Register(builder);
364
- builder->channel_init()->RegisterStage(
365
- GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
366
- maybe_add_message_size_filter_subchannel);
367
- builder->channel_init()->RegisterStage(GRPC_CLIENT_DIRECT_CHANNEL,
368
- GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
369
- maybe_add_message_size_filter);
370
- builder->channel_init()->RegisterStage(GRPC_SERVER_CHANNEL,
281
+ builder->channel_init()->RegisterStage(GRPC_CLIENT_SUBCHANNEL,
371
282
  GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
372
- maybe_add_message_size_filter);
283
+ MaybeAddMessageSizeFilterToSubchannel);
284
+ builder->channel_init()->RegisterStage(
285
+ GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
286
+ MaybeAddMessageSizeFilter(&ClientMessageSizeFilter::kFilter));
287
+ builder->channel_init()->RegisterStage(
288
+ GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
289
+ MaybeAddMessageSizeFilter(&ServerMessageSizeFilter::kFilter));
373
290
  }
374
291
  } // namespace grpc_core
@@ -24,21 +24,22 @@
24
24
 
25
25
  #include <memory>
26
26
 
27
+ #include "absl/status/statusor.h"
27
28
  #include "absl/strings/string_view.h"
28
29
  #include "absl/types/optional.h"
29
30
 
30
31
  #include "src/core/lib/channel/channel_args.h"
31
32
  #include "src/core/lib/channel/channel_fwd.h"
32
- #include "src/core/lib/channel/channel_stack.h"
33
33
  #include "src/core/lib/channel/context.h"
34
+ #include "src/core/lib/channel/promise_based_filter.h"
34
35
  #include "src/core/lib/config/core_configuration.h"
35
36
  #include "src/core/lib/gprpp/validation_errors.h"
36
37
  #include "src/core/lib/json/json.h"
37
38
  #include "src/core/lib/json/json_args.h"
38
39
  #include "src/core/lib/json/json_object_loader.h"
40
+ #include "src/core/lib/promise/arena_promise.h"
39
41
  #include "src/core/lib/service_config/service_config_parser.h"
40
-
41
- extern const grpc_channel_filter grpc_message_size_filter;
42
+ #include "src/core/lib/transport/transport.h"
42
43
 
43
44
  namespace grpc_core {
44
45
 
@@ -85,6 +86,50 @@ class MessageSizeParser : public ServiceConfigParser::Parser {
85
86
  absl::optional<uint32_t> GetMaxRecvSizeFromChannelArgs(const ChannelArgs& args);
86
87
  absl::optional<uint32_t> GetMaxSendSizeFromChannelArgs(const ChannelArgs& args);
87
88
 
89
+ class MessageSizeFilter : public ChannelFilter {
90
+ protected:
91
+ explicit MessageSizeFilter(const ChannelArgs& args)
92
+ : limits_(MessageSizeParsedConfig::GetFromChannelArgs(args)) {}
93
+
94
+ class CallBuilder;
95
+
96
+ const MessageSizeParsedConfig& limits() const { return limits_; }
97
+
98
+ private:
99
+ MessageSizeParsedConfig limits_;
100
+ };
101
+
102
+ class ServerMessageSizeFilter final : public MessageSizeFilter {
103
+ public:
104
+ static const grpc_channel_filter kFilter;
105
+
106
+ static absl::StatusOr<ServerMessageSizeFilter> Create(
107
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
108
+
109
+ // Construct a promise for one call.
110
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
111
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
112
+
113
+ private:
114
+ using MessageSizeFilter::MessageSizeFilter;
115
+ };
116
+
117
+ class ClientMessageSizeFilter final : public MessageSizeFilter {
118
+ public:
119
+ static const grpc_channel_filter kFilter;
120
+
121
+ static absl::StatusOr<ClientMessageSizeFilter> Create(
122
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
123
+
124
+ // Construct a promise for one call.
125
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
126
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
127
+
128
+ private:
129
+ const size_t service_config_parser_index_{MessageSizeParser::ParserIndex()};
130
+ using MessageSizeFilter::MessageSizeFilter;
131
+ };
132
+
88
133
  } // namespace grpc_core
89
134
 
90
135
  #endif // GRPC_SRC_CORE_EXT_FILTERS_MESSAGE_SIZE_MESSAGE_SIZE_FILTER_H
@@ -89,13 +89,14 @@ void MaybeUpdateServerInitialMetadata(
89
89
  absl::optional<absl::string_view> cookie_value,
90
90
  ServerMetadata* server_initial_metadata) {
91
91
  // Get peer string.
92
- auto peer_string = server_initial_metadata->get(PeerString());
93
- if (!peer_string.has_value()) return; // Nothing we can do.
92
+ Slice* peer_string = server_initial_metadata->get_pointer(PeerString());
93
+ if (peer_string == nullptr) return; // Nothing we can do.
94
94
  // If there was no cookie or if the address changed, set the cookie.
95
- if (!cookie_value.has_value() || *peer_string != *cookie_value) {
96
- std::vector<std::string> parts = {
97
- absl::StrCat(*cookie_config->name, "=",
98
- absl::Base64Escape(*peer_string), "; HttpOnly")};
95
+ if (!cookie_value.has_value() ||
96
+ peer_string->as_string_view() != *cookie_value) {
97
+ std::vector<std::string> parts = {absl::StrCat(
98
+ *cookie_config->name, "=",
99
+ absl::Base64Escape(peer_string->as_string_view()), "; HttpOnly")};
99
100
  if (!cookie_config->path.empty()) {
100
101
  parts.emplace_back(absl::StrCat("Path=", cookie_config->path));
101
102
  }