grpc 1.53.0.pre2 → 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 (685) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +80 -66
  3. data/include/grpc/event_engine/event_engine.h +30 -14
  4. data/include/grpc/grpc_security.h +4 -0
  5. data/include/grpc/impl/grpc_types.h +11 -2
  6. data/include/grpc/support/port_platform.h +4 -4
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  9. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  10. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  11. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  12. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  14. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  15. data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  18. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  19. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -15
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +13 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  28. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  29. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  30. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  31. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  32. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  33. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  34. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  35. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  36. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  37. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  38. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  39. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  40. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  41. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  42. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  43. data/src/core/ext/gcp/metadata_query.cc +142 -0
  44. data/src/core/ext/gcp/metadata_query.h +82 -0
  45. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
  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_parser.cc +42 -23
  51. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +5 -3
  52. data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
  53. data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
  54. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  55. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  56. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  57. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  58. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  59. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  60. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  61. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  62. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  63. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  64. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  65. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  67. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  68. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  69. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  70. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  71. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  72. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  73. 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
  74. 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
  75. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  76. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  77. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  78. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  79. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  80. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  81. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  86. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  88. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  89. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  91. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  92. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  93. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  94. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  95. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  96. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  97. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  98. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  99. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  100. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  101. data/src/core/ext/xds/xds_client_stats.h +24 -20
  102. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  103. data/src/core/ext/xds/xds_endpoint.h +9 -1
  104. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  105. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  106. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  107. data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
  108. data/src/core/lib/backoff/random_early_detection.h +59 -0
  109. data/src/core/lib/channel/call_finalization.h +1 -1
  110. data/src/core/lib/channel/call_tracer.cc +51 -0
  111. data/src/core/lib/channel/call_tracer.h +101 -38
  112. data/src/core/lib/channel/connected_channel.cc +483 -1050
  113. data/src/core/lib/channel/context.h +8 -1
  114. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  115. data/src/core/lib/channel/promise_based_filter.h +27 -13
  116. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  117. data/src/core/lib/config/config_vars.cc +151 -0
  118. data/src/core/lib/config/config_vars.h +127 -0
  119. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  120. data/src/core/lib/config/load_config.cc +66 -0
  121. data/src/core/lib/config/load_config.h +49 -0
  122. data/src/core/lib/debug/trace.cc +5 -6
  123. data/src/core/lib/debug/trace.h +0 -5
  124. data/src/core/lib/event_engine/event_engine.cc +37 -2
  125. data/src/core/lib/event_engine/handle_containers.h +7 -22
  126. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  127. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  128. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  129. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  130. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  131. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  132. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  133. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  134. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  135. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  136. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  137. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  138. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  139. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  140. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  141. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  142. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  143. data/src/core/lib/experiments/config.cc +3 -10
  144. data/src/core/lib/experiments/experiments.cc +7 -0
  145. data/src/core/lib/experiments/experiments.h +9 -1
  146. data/src/core/lib/gpr/log.cc +15 -28
  147. data/src/core/lib/gprpp/fork.cc +8 -14
  148. data/src/core/lib/gprpp/orphanable.h +4 -3
  149. data/src/core/lib/gprpp/per_cpu.h +9 -3
  150. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  151. data/src/core/lib/gprpp/ref_counted.h +33 -34
  152. data/src/core/lib/gprpp/thd.h +16 -0
  153. data/src/core/lib/gprpp/time.cc +1 -0
  154. data/src/core/lib/gprpp/time.h +4 -4
  155. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  156. data/src/core/lib/iomgr/call_combiner.h +2 -2
  157. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  158. data/src/core/lib/iomgr/endpoint_pair.h +2 -2
  159. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  160. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  161. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  162. data/src/core/lib/iomgr/ev_posix.h +0 -3
  163. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  164. data/src/core/lib/iomgr/iomgr.cc +4 -8
  165. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  166. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  167. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  168. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  169. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  170. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  171. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  172. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  173. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  174. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  175. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  176. data/src/core/lib/promise/activity.cc +22 -6
  177. data/src/core/lib/promise/activity.h +61 -24
  178. data/src/core/lib/promise/cancel_callback.h +77 -0
  179. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  180. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  181. data/src/core/lib/promise/for_each.h +176 -0
  182. data/src/core/lib/promise/if.h +9 -0
  183. data/src/core/lib/promise/interceptor_list.h +23 -2
  184. data/src/core/lib/promise/latch.h +89 -3
  185. data/src/core/lib/promise/loop.h +13 -9
  186. data/src/core/lib/promise/map.h +7 -0
  187. data/src/core/lib/promise/party.cc +286 -0
  188. data/src/core/lib/promise/party.h +499 -0
  189. data/src/core/lib/promise/pipe.h +197 -57
  190. data/src/core/lib/promise/poll.h +48 -0
  191. data/src/core/lib/promise/promise.h +2 -2
  192. data/src/core/lib/resource_quota/arena.cc +19 -3
  193. data/src/core/lib/resource_quota/arena.h +119 -5
  194. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  195. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  196. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  197. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  198. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  199. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  200. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  202. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  203. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  204. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  205. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  206. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  207. data/src/core/lib/slice/slice.cc +1 -1
  208. data/src/core/lib/surface/builtins.cc +2 -0
  209. data/src/core/lib/surface/call.cc +926 -1024
  210. data/src/core/lib/surface/call.h +10 -0
  211. data/src/core/lib/surface/lame_client.cc +1 -0
  212. data/src/core/lib/surface/version.cc +2 -2
  213. data/src/core/lib/transport/batch_builder.cc +179 -0
  214. data/src/core/lib/transport/batch_builder.h +468 -0
  215. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  216. data/src/core/lib/transport/bdp_estimator.h +10 -6
  217. data/src/core/lib/transport/custom_metadata.h +30 -0
  218. data/src/core/lib/transport/metadata_batch.cc +9 -6
  219. data/src/core/lib/transport/metadata_batch.h +58 -16
  220. data/src/core/lib/transport/parsed_metadata.h +3 -3
  221. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  222. data/src/core/lib/transport/transport.cc +30 -2
  223. data/src/core/lib/transport/transport.h +70 -14
  224. data/src/core/lib/transport/transport_impl.h +7 -0
  225. data/src/core/lib/transport/transport_op_string.cc +52 -42
  226. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  227. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  228. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  229. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  230. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  231. data/src/core/tsi/ssl_transport_security.cc +4 -2
  232. data/src/ruby/lib/grpc/version.rb +1 -1
  233. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  234. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  235. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  236. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  237. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  238. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  239. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  240. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  241. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  242. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  243. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  244. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  245. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  246. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  247. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  248. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  252. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  253. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  254. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  255. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  256. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  257. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  258. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  259. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  260. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  261. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  262. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  288. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  289. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  290. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  291. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  292. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  293. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  294. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  295. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  298. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  299. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  300. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  301. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  302. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  303. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  304. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  305. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  306. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  307. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  308. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  309. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  310. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  311. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  312. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  313. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  314. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  317. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  318. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  319. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  320. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  321. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  322. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  323. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  324. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  325. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  326. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  327. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  328. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  329. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  330. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  331. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  332. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  333. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  334. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  335. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  336. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  337. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  338. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  339. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  340. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  341. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  342. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  343. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  344. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  345. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  346. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  347. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  348. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  349. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  350. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  351. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  352. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  363. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  364. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  365. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  366. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  393. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  395. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  403. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  446. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  447. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  448. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  449. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  450. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  451. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  452. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  453. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  454. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  455. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  456. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  457. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  458. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  459. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  460. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  461. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  463. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  464. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  465. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  466. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  467. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  468. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  469. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  470. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  472. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  473. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  474. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  475. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  476. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  477. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  478. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  479. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  480. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  481. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  482. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  483. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  484. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  532. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  533. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  534. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  557. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  558. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  559. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  560. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  561. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  562. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  563. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  564. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  565. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  566. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  567. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  568. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  569. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  570. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  571. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  572. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  573. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  574. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  575. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  577. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  578. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  579. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  580. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  581. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  582. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  583. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  584. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  585. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  586. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  588. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  589. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  591. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  592. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  593. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  594. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  595. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  596. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  597. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  598. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  599. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  600. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  601. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  602. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  603. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  604. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  605. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  606. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  607. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  608. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  609. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  610. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  611. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  612. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  613. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  614. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  615. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  616. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  617. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  618. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  627. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  628. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  629. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  630. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  631. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  632. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  633. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  634. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  635. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  636. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  637. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  638. metadata +107 -72
  639. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  640. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  641. data/src/core/lib/gprpp/global_config.h +0 -93
  642. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  643. data/src/core/lib/gprpp/global_config_env.h +0 -133
  644. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  645. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  646. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  647. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  648. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  649. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  650. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  651. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  652. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  653. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  654. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  655. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  656. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  657. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  658. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  659. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  660. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  661. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  662. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  663. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  664. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  665. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  666. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  667. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  668. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  669. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  670. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  671. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  672. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  673. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  674. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  675. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  676. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  677. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  678. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  679. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  680. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  681. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  682. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  683. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  684. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  685. /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
  }