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