Merge remote-tracking branch 'upstream/master' into reorg_server

pull/36475/head
Mark D. Roth 7 months ago
commit 30edc04c0f
  1. 13
      BUILD
  2. 5
      BoringSSL-Package.swift
  3. 21
      CMakeLists.txt
  4. 6
      Makefile
  5. 2
      Package.swift
  6. 18
      bazel/experiments.bzl
  7. 8
      bazel/grpc_deps.bzl
  8. 21
      build_autogenerated.yaml
  9. 9
      config.m4
  10. 9
      config.w32
  11. 2
      gRPC-C++.podspec
  12. 5
      gRPC-Core.podspec
  13. 13
      grpc.gemspec
  14. 3
      include/grpc/impl/channel_arg_names.h
  15. 13
      package.xml
  16. 101
      src/boringssl/boringssl_prefix_symbols.h
  17. 71
      src/core/BUILD
  18. 56
      src/core/client_channel/client_channel_filter.cc
  19. 2
      src/core/client_channel/client_channel_filter.h
  20. 408
      src/core/ext/filters/deadline/deadline_filter.cc
  21. 85
      src/core/ext/filters/deadline/deadline_filter.h
  22. 13
      src/core/ext/filters/message_size/message_size_filter.cc
  23. 2
      src/core/ext/transport/chaotic_good/client_transport.h
  24. 2
      src/core/ext/transport/chaotic_good/server_transport.h
  25. 9
      src/core/ext/transport/chttp2/transport/chttp2_transport.cc
  26. 12
      src/core/ext/transport/chttp2/transport/internal.h
  27. 28
      src/core/ext/transport/inproc/inproc_transport.cc
  28. 4
      src/core/lib/address_utils/parse_address.cc
  29. 20
      src/core/lib/address_utils/sockaddr_utils.cc
  30. 11
      src/core/lib/channel/call_tracer.cc
  31. 5
      src/core/lib/channel/channel_args.cc
  32. 12
      src/core/lib/channel/channel_stack.cc
  33. 3
      src/core/lib/channel/connected_channel.cc
  34. 30
      src/core/lib/channel/context.h
  35. 14
      src/core/lib/channel/metrics.cc
  36. 132
      src/core/lib/channel/promise_based_filter.cc
  37. 92
      src/core/lib/channel/promise_based_filter.h
  38. 3
      src/core/lib/compression/compression_internal.cc
  39. 14
      src/core/lib/compression/message_compress.cc
  40. 14
      src/core/lib/config/core_configuration.cc
  41. 9
      src/core/lib/config/core_configuration.h
  42. 3
      src/core/lib/config/load_config.cc
  43. 3
      src/core/lib/debug/event_log.cc
  44. 7
      src/core/lib/experiments/config.cc
  45. 2
      src/core/lib/experiments/experiments.yaml
  46. 5
      src/core/lib/http/httpcli.cc
  47. 7
      src/core/lib/http/parser.cc
  48. 5
      src/core/lib/json/json_reader.cc
  49. 14
      src/core/lib/resource_quota/connection_quota.cc
  50. 19
      src/core/lib/resource_quota/memory_quota.cc
  51. 5
      src/core/lib/resource_quota/memory_quota.h
  52. 4
      src/core/lib/resource_quota/thread_quota.cc
  53. 297
      src/core/lib/surface/call.cc
  54. 177
      src/core/lib/surface/call.h
  55. 2
      src/core/lib/transport/call_filters.h
  56. 2
      src/core/lib/transport/transport.h
  57. 2
      src/core/plugin_registry/grpc_plugin_registry.cc
  58. 7
      src/core/server/server.cc
  59. 1040
      src/objective-c/BoringSSL-GRPC.podspec
  60. 310
      src/python/grpcio/grpc_core_dependencies.py
  61. 1
      src/python/grpcio_observability/observability_lib_deps.py
  62. 2
      templates/gRPC-Core.podspec.template
  63. 7
      templates/src/objective-c/BoringSSL-GRPC.podspec.template
  64. 20
      test/core/channel/minimal_stack_is_minimal_test.cc
  65. 39
      test/core/end2end/end2end_tests.h
  66. 8
      test/core/end2end/tests/http2_stats.cc
  67. 15
      test/core/xds/xds_client_test.cc
  68. 2
      third_party/boringssl-with-bazel
  69. 2
      tools/doxygen/Doxyfile.c++.internal
  70. 2
      tools/doxygen/Doxyfile.core.internal
  71. 2
      tools/run_tests/sanity/check_submodules.sh

13
BUILD

@ -851,7 +851,6 @@ grpc_cc_library(
# standard plugins
"census",
"//src/core:grpc_backend_metric_filter",
"//src/core:grpc_deadline_filter",
"//src/core:grpc_client_authority_filter",
"//src/core:grpc_lb_policy_grpclb",
"//src/core:grpc_lb_policy_outlier_detection",
@ -1713,6 +1712,7 @@ grpc_cc_library(
"//src/core:lib/channel/call_tracer.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/strings",
"absl/types:optional",
@ -1990,6 +1990,7 @@ grpc_cc_library(
"absl/container:inlined_vector",
"absl/functional:any_invocable",
"absl/functional:function_ref",
"absl/log:check",
"absl/meta:type_traits",
"absl/status",
"absl/status:statusor",
@ -2974,6 +2975,7 @@ grpc_cc_library(
external_deps = [
"absl/flags:flag",
"absl/flags:marshalling",
"absl/log:check",
"absl/strings",
"absl/types:optional",
],
@ -3009,7 +3011,10 @@ grpc_cc_library(
srcs = [
"//src/core:lib/config/core_configuration.cc",
],
external_deps = ["absl/functional:any_invocable"],
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
],
language = "c++",
public_hdrs = [
"//src/core:lib/config/core_configuration.h",
@ -3206,6 +3211,7 @@ grpc_cc_library(
"//src/core:lib/address_utils/sockaddr_utils.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
@ -3331,6 +3337,7 @@ grpc_cc_library(
"//src/core:lib/iomgr/grpc_if_nametoindex.h",
],
external_deps = [
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
@ -3697,7 +3704,6 @@ grpc_cc_library(
"//src/core:gpr_atm",
"//src/core:gpr_manual_constructor",
"//src/core:grpc_backend_metric_data",
"//src/core:grpc_deadline_filter",
"//src/core:grpc_message_size_filter",
"//src/core:grpc_service_config",
"//src/core:init_internally",
@ -3821,6 +3827,7 @@ grpc_cc_library(
external_deps = [
"absl/base:core_headers",
"absl/functional:bind_front",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",

@ -26,7 +26,6 @@ let package = Package(
],
sources: [
"err_data.c",
"src/crypto/asn1/a_bitstr.c",
"src/crypto/asn1/a_bool.c",
"src/crypto/asn1/a_d2i_fp.c",
@ -117,6 +116,8 @@ let package = Package(
"src/crypto/evp/evp.c",
"src/crypto/evp/evp_asn1.c",
"src/crypto/evp/evp_ctx.c",
"src/crypto/evp/p_dh.c",
"src/crypto/evp/p_dh_asn1.c",
"src/crypto/evp/p_dsa_asn1.c",
"src/crypto/evp/p_ec.c",
"src/crypto/evp/p_ec_asn1.c",
@ -258,6 +259,7 @@ let package = Package(
"src/crypto/x509/x_val.c",
"src/crypto/x509/x_x509.c",
"src/crypto/x509/x_x509a.c",
"src/gen/crypto/err_data.c",
"src/ssl/bio_ssl.cc",
"src/ssl/d1_both.cc",
"src/ssl/d1_lib.cc",
@ -279,6 +281,7 @@ let package = Package(
"src/ssl/ssl_buffer.cc",
"src/ssl/ssl_cert.cc",
"src/ssl/ssl_cipher.cc",
"src/ssl/ssl_credential.cc",
"src/ssl/ssl_file.cc",
"src/ssl/ssl_key_share.cc",
"src/ssl/ssl_lib.cc",

21
CMakeLists.txt generated

@ -1749,6 +1749,7 @@ target_link_libraries(gpr
absl::flags
absl::flags_marshalling
absl::any_invocable
absl::check
absl::log
absl::memory
absl::random_random
@ -1847,7 +1848,6 @@ add_library(grpc
src/core/ext/filters/census/grpc_context.cc
src/core/ext/filters/channel_idle/idle_filter_state.cc
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
src/core/ext/filters/deadline/deadline_filter.cc
src/core/ext/filters/fault_injection/fault_injection_filter.cc
src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc
src/core/ext/filters/http/client/http_client_filter.cc
@ -2678,7 +2678,6 @@ target_link_libraries(grpc
absl::bind_front
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::random_bit_gen_ref
absl::random_distributions
@ -2944,7 +2943,6 @@ add_library(grpc_unsecure
src/core/ext/filters/census/grpc_context.cc
src/core/ext/filters/channel_idle/idle_filter_state.cc
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
src/core/ext/filters/deadline/deadline_filter.cc
src/core/ext/filters/fault_injection/fault_injection_filter.cc
src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc
src/core/ext/filters/http/client/http_client_filter.cc
@ -3381,7 +3379,6 @@ target_link_libraries(grpc_unsecure
absl::bind_front
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::random_bit_gen_ref
absl::random_distributions
@ -5446,7 +5443,6 @@ target_link_libraries(grpc_authorization_provider
absl::inlined_vector
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
absl::span
@ -5933,7 +5929,6 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
target_link_libraries(static_stride_scheduler_benchmark
${_gRPC_ALLTARGETS_LIBRARIES}
absl::algorithm_container
absl::check
absl::span
${_gRPC_BENCHMARK_LIBRARIES}
gpr
@ -8583,7 +8578,6 @@ target_link_libraries(call_filters_test
absl::inlined_vector
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
absl::utility
@ -10244,7 +10238,6 @@ target_link_libraries(chunked_vector_test
absl::config
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
gpr
@ -13388,7 +13381,6 @@ target_link_libraries(exec_ctx_wakeup_scheduler_test
upb_message_lib
absl::config
absl::hash
absl::check
absl::type_traits
absl::statusor
gpr
@ -14258,7 +14250,6 @@ target_link_libraries(flow_control_test
absl::config
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
absl::span
@ -14344,7 +14335,6 @@ target_link_libraries(for_each_test
absl::config
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
gpr
@ -14434,7 +14424,6 @@ target_include_directories(forkable_test
target_link_libraries(forkable_test
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
absl::check
absl::statusor
gpr
)
@ -18009,7 +17998,6 @@ target_link_libraries(interception_chain_test
absl::inlined_vector
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
absl::span
@ -18098,7 +18086,6 @@ target_link_libraries(interceptor_list_test
absl::config
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
gpr
@ -19292,7 +19279,6 @@ target_link_libraries(map_pipe_test
absl::config
absl::function_ref
absl::hash
absl::check
absl::type_traits
absl::statusor
gpr
@ -21556,7 +21542,6 @@ target_link_libraries(periodic_update_test
upb_message_lib
absl::function_ref
absl::hash
absl::check
absl::statusor
gpr
)
@ -29863,7 +29848,6 @@ target_include_directories(test_core_event_engine_posix_timer_heap_test
target_link_libraries(test_core_event_engine_posix_timer_heap_test
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
absl::check
absl::statusor
gpr
)
@ -29962,7 +29946,6 @@ target_link_libraries(test_core_event_engine_slice_buffer_test
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
absl::hash
absl::check
absl::statusor
absl::utility
gpr
@ -37036,7 +37019,7 @@ generate_pkgconfig(
"gpr"
"gRPC platform support library"
"${gRPC_CORE_VERSION}"
"absl_any_invocable absl_base absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_log absl_log_severity absl_memory absl_optional absl_random_random absl_status absl_str_format absl_strings absl_synchronization absl_time absl_variant"
"absl_any_invocable absl_base absl_check absl_cord absl_core_headers absl_flags absl_flags_marshalling absl_log absl_log_severity absl_memory absl_optional absl_random_random absl_status absl_str_format absl_strings absl_synchronization absl_time absl_variant"
""
"-lgpr"
""

6
Makefile generated

@ -689,7 +689,6 @@ LIBGRPC_SRC = \
src/core/ext/filters/census/grpc_context.cc \
src/core/ext/filters/channel_idle/idle_filter_state.cc \
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc \
src/core/ext/filters/deadline/deadline_filter.cc \
src/core/ext/filters/fault_injection/fault_injection_filter.cc \
src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc \
src/core/ext/filters/http/client/http_client_filter.cc \
@ -1856,7 +1855,6 @@ endif
# deps: []
# transitive_deps: []
LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/err_data.c \
third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c \
third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c \
third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c \
@ -1947,6 +1945,8 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/evp/evp.c \
third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c \
third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c \
@ -2088,6 +2088,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \
third_party/boringssl-with-bazel/src/gen/crypto/err_data.c \
third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \
third_party/boringssl-with-bazel/src/ssl/d1_both.cc \
third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \
@ -2109,6 +2110,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_file.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc \

2
Package.swift generated

@ -165,8 +165,6 @@ let package = Package(
"src/core/ext/filters/channel_idle/idle_filter_state.h",
"src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc",
"src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h",
"src/core/ext/filters/deadline/deadline_filter.cc",
"src/core/ext/filters/deadline/deadline_filter.h",
"src/core/ext/filters/fault_injection/fault_injection_filter.cc",
"src/core/ext/filters/fault_injection/fault_injection_filter.h",
"src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc",

@ -62,9 +62,6 @@ EXPERIMENTS = {
"core_end2end_test": [
"promise_based_server_call",
],
"cpp_end2end_test": [
"promise_based_server_call",
],
"endpoint_test": [
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
@ -83,9 +80,6 @@ EXPERIMENTS = {
"free_large_allocator",
"unconstrained_max_quota_buffer_size",
],
"xds_end2end_test": [
"promise_based_server_call",
],
},
"on": {
"core_end2end_test": [
@ -112,9 +106,6 @@ EXPERIMENTS = {
"core_end2end_test": [
"promise_based_server_call",
],
"cpp_end2end_test": [
"promise_based_server_call",
],
"endpoint_test": [
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
@ -133,9 +124,6 @@ EXPERIMENTS = {
"free_large_allocator",
"unconstrained_max_quota_buffer_size",
],
"xds_end2end_test": [
"promise_based_server_call",
],
},
"on": {
"cpp_lb_end2end_test": [
@ -159,9 +147,6 @@ EXPERIMENTS = {
"promise_based_client_call",
"promise_based_server_call",
],
"cpp_end2end_test": [
"promise_based_server_call",
],
"endpoint_test": [
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
@ -186,9 +171,6 @@ EXPERIMENTS = {
"free_large_allocator",
"unconstrained_max_quota_buffer_size",
],
"xds_end2end_test": [
"promise_based_server_call",
],
},
"on": {
"cancel_ares_query_test": [

@ -190,11 +190,11 @@ def grpc_deps():
name = "boringssl",
# Use github mirror instead of https://boringssl.googlesource.com/boringssl
# to obtain a boringssl archive with consistent sha256
sha256 = "06ba43ff1825c8a9a45dae7f85e532153a531707f6a3e56be1e892fd2d3b75f6",
strip_prefix = "boringssl-e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df",
sha256 = "c4cccc0ea8b149d2853da77254655c0d5a5739dd4bbdff9a5b586c06a627de6c",
strip_prefix = "boringssl-5a2bca2124800f2861263959b72bc35cdf18949b",
urls = [
"https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df.tar.gz",
"https://github.com/google/boringssl/archive/e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df.tar.gz",
"https://storage.googleapis.com/grpc-bazel-mirror/github.com/google/boringssl/archive/5a2bca2124800f2861263959b72bc35cdf18949b.tar.gz",
"https://github.com/google/boringssl/archive/5a2bca2124800f2861263959b72bc35cdf18949b.tar.gz",
],
)

@ -130,6 +130,7 @@ libs:
- absl/flags:flag
- absl/flags:marshalling
- absl/functional:any_invocable
- absl/log:check
- absl/log:log
- absl/memory:memory
- absl/random:random
@ -246,7 +247,6 @@ libs:
- src/core/ext/filters/backend_metrics/backend_metric_provider.h
- src/core/ext/filters/channel_idle/idle_filter_state.h
- src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h
- src/core/ext/filters/deadline/deadline_filter.h
- src/core/ext/filters/fault_injection/fault_injection_filter.h
- src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h
- src/core/ext/filters/http/client/http_client_filter.h
@ -1267,7 +1267,6 @@ libs:
- src/core/ext/filters/census/grpc_context.cc
- src/core/ext/filters/channel_idle/idle_filter_state.cc
- src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
- src/core/ext/filters/deadline/deadline_filter.cc
- src/core/ext/filters/fault_injection/fault_injection_filter.cc
- src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc
- src/core/ext/filters/http/client/http_client_filter.cc
@ -2057,7 +2056,6 @@ libs:
- absl/functional:bind_front
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/random:bit_gen_ref
- absl/random:distributions
@ -2233,7 +2231,6 @@ libs:
- src/core/ext/filters/backend_metrics/backend_metric_provider.h
- src/core/ext/filters/channel_idle/idle_filter_state.h
- src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h
- src/core/ext/filters/deadline/deadline_filter.h
- src/core/ext/filters/fault_injection/fault_injection_filter.h
- src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h
- src/core/ext/filters/http/client/http_client_filter.h
@ -2723,7 +2720,6 @@ libs:
- src/core/ext/filters/census/grpc_context.cc
- src/core/ext/filters/channel_idle/idle_filter_state.cc
- src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
- src/core/ext/filters/deadline/deadline_filter.cc
- src/core/ext/filters/fault_injection/fault_injection_filter.cc
- src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc
- src/core/ext/filters/http/client/http_client_filter.cc
@ -3118,7 +3114,6 @@ libs:
- absl/functional:bind_front
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/random:bit_gen_ref
- absl/random:distributions
@ -5032,7 +5027,6 @@ libs:
- absl/container:inlined_vector
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- absl/types:span
@ -5176,7 +5170,6 @@ targets:
- test/core/load_balancing/static_stride_scheduler_benchmark.cc
deps:
- absl/algorithm:container
- absl/log:check
- absl/types:span
- benchmark
- gpr
@ -6524,7 +6517,6 @@ targets:
- absl/container:inlined_vector
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- absl/utility:utility
@ -7779,7 +7771,6 @@ targets:
- absl/base:config
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- gpr
@ -9261,7 +9252,6 @@ targets:
- upb_message_lib
- absl/base:config
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- gpr
@ -9904,7 +9894,6 @@ targets:
- absl/base:config
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- absl/types:span
@ -10040,7 +10029,6 @@ targets:
- absl/base:config
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- gpr
@ -10073,7 +10061,6 @@ targets:
- test/core/event_engine/forkable_test.cc
deps:
- gtest
- absl/log:check
- absl/status:statusor
- gpr
- name: format_request_test
@ -12164,7 +12151,6 @@ targets:
- absl/container:inlined_vector
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- absl/types:span
@ -12295,7 +12281,6 @@ targets:
- absl/base:config
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- gpr
@ -12979,7 +12964,6 @@ targets:
- absl/base:config
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/meta:type_traits
- absl/status:statusor
- gpr
@ -14180,7 +14164,6 @@ targets:
- upb_message_lib
- absl/functional:function_ref
- absl/hash:hash
- absl/log:check
- absl/status:statusor
- gpr
uses_polling: false
@ -19339,7 +19322,6 @@ targets:
- test/core/event_engine/posix/timer_heap_test.cc
deps:
- gtest
- absl/log:check
- absl/status:statusor
- gpr
uses_polling: false
@ -19393,7 +19375,6 @@ targets:
deps:
- gtest
- absl/hash:hash
- absl/log:check
- absl/status:statusor
- absl/utility:utility
- gpr

9
config.m4 generated

@ -64,7 +64,6 @@ if test "$PHP_GRPC" != "no"; then
src/core/ext/filters/census/grpc_context.cc \
src/core/ext/filters/channel_idle/idle_filter_state.cc \
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc \
src/core/ext/filters/deadline/deadline_filter.cc \
src/core/ext/filters/fault_injection/fault_injection_filter.cc \
src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc \
src/core/ext/filters/http/client/http_client_filter.cc \
@ -1034,7 +1033,6 @@ if test "$PHP_GRPC" != "no"; then
third_party/address_sorting/address_sorting.c \
third_party/address_sorting/address_sorting_posix.c \
third_party/address_sorting/address_sorting_windows.c \
third_party/boringssl-with-bazel/err_data.c \
third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c \
third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c \
third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c \
@ -1125,6 +1123,8 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/evp/evp.c \
third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c \
third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c \
third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c \
@ -1266,6 +1266,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/crypto/x509/x_val.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c \
third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c \
third_party/boringssl-with-bazel/src/gen/crypto/err_data.c \
third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc \
third_party/boringssl-with-bazel/src/ssl/d1_both.cc \
third_party/boringssl-with-bazel/src/ssl/d1_lib.cc \
@ -1287,6 +1288,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_file.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc \
third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc \
@ -1388,7 +1390,6 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/backend_metrics)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/census)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/channel_idle)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/deadline)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/fault_injection)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/filters/http/client)
@ -1633,7 +1634,6 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/time/internal/cctz/src)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/types)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/address_sorting)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/asn1)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/base64)
@ -1676,6 +1676,7 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/stack)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/trust_token)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/x509)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/gen/crypto)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/ssl)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/re2)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/re2/util)

9
config.w32 generated

@ -29,7 +29,6 @@ if (PHP_GRPC != "no") {
"src\\core\\ext\\filters\\census\\grpc_context.cc " +
"src\\core\\ext\\filters\\channel_idle\\idle_filter_state.cc " +
"src\\core\\ext\\filters\\channel_idle\\legacy_channel_idle_filter.cc " +
"src\\core\\ext\\filters\\deadline\\deadline_filter.cc " +
"src\\core\\ext\\filters\\fault_injection\\fault_injection_filter.cc " +
"src\\core\\ext\\filters\\fault_injection\\fault_injection_service_config_parser.cc " +
"src\\core\\ext\\filters\\http\\client\\http_client_filter.cc " +
@ -999,7 +998,6 @@ if (PHP_GRPC != "no") {
"third_party\\address_sorting\\address_sorting.c " +
"third_party\\address_sorting\\address_sorting_posix.c " +
"third_party\\address_sorting\\address_sorting_windows.c " +
"third_party\\boringssl-with-bazel\\err_data.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_bitstr.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_bool.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\asn1\\a_d2i_fp.c " +
@ -1090,6 +1088,8 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\evp.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\evp_asn1.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\evp_ctx.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_dh.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_dh_asn1.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_dsa_asn1.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_ec.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\evp\\p_ec_asn1.c " +
@ -1231,6 +1231,7 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_val.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509.c " +
"third_party\\boringssl-with-bazel\\src\\crypto\\x509\\x_x509a.c " +
"third_party\\boringssl-with-bazel\\src\\gen\\crypto\\err_data.c " +
"third_party\\boringssl-with-bazel\\src\\ssl\\bio_ssl.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\d1_both.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\d1_lib.cc " +
@ -1252,6 +1253,7 @@ if (PHP_GRPC != "no") {
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_buffer.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_cert.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_cipher.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_credential.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_file.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_key_share.cc " +
"third_party\\boringssl-with-bazel\\src\\ssl\\ssl_lib.cc " +
@ -1382,7 +1384,6 @@ if (PHP_GRPC != "no") {
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\backend_metrics");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\census");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\channel_idle");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\deadline");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\fault_injection");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\http");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\src\\core\\ext\\filters\\http\\client");
@ -1827,6 +1828,8 @@ if (PHP_GRPC != "no") {
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\stack");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\trust_token");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\crypto\\x509");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\gen");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\gen\\crypto");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\boringssl-with-bazel\\src\\ssl");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2");
FSO.CreateFolder(base_dir+"\\ext\\grpc\\third_party\\re2\\re2");

2
gRPC-C++.podspec generated

@ -286,7 +286,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/backend_metrics/backend_metric_provider.h',
'src/core/ext/filters/channel_idle/idle_filter_state.h',
'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h',
'src/core/ext/filters/deadline/deadline_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h',
'src/core/ext/filters/http/client/http_client_filter.h',
@ -1575,7 +1574,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/backend_metrics/backend_metric_provider.h',
'src/core/ext/filters/channel_idle/idle_filter_state.h',
'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h',
'src/core/ext/filters/deadline/deadline_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h',
'src/core/ext/filters/http/client/http_client_filter.h',

5
gRPC-Core.podspec generated

@ -197,7 +197,7 @@ Pod::Spec.new do |s|
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
ss.dependency "#{s.name}/Privacy", version
ss.dependency 'BoringSSL-GRPC', '0.0.33'
ss.dependency 'BoringSSL-GRPC', '0.0.34'
ss.dependency 'abseil/algorithm/container', abseil_version
ss.dependency 'abseil/base/base', abseil_version
ss.dependency 'abseil/base/config', abseil_version
@ -282,8 +282,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/channel_idle/idle_filter_state.h',
'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc',
'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h',
'src/core/ext/filters/deadline/deadline_filter.cc',
'src/core/ext/filters/deadline/deadline_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_filter.cc',
'src/core/ext/filters/fault_injection/fault_injection_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc',
@ -2375,7 +2373,6 @@ Pod::Spec.new do |s|
'src/core/ext/filters/backend_metrics/backend_metric_provider.h',
'src/core/ext/filters/channel_idle/idle_filter_state.h',
'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h',
'src/core/ext/filters/deadline/deadline_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_filter.h',
'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h',
'src/core/ext/filters/http/client/http_client_filter.h',

13
grpc.gemspec generated

@ -171,8 +171,6 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/filters/channel_idle/idle_filter_state.h )
s.files += %w( src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc )
s.files += %w( src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h )
s.files += %w( src/core/ext/filters/deadline/deadline_filter.cc )
s.files += %w( src/core/ext/filters/deadline/deadline_filter.h )
s.files += %w( src/core/ext/filters/fault_injection/fault_injection_filter.cc )
s.files += %w( src/core/ext/filters/fault_injection/fault_injection_filter.h )
s.files += %w( src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc )
@ -2450,7 +2448,6 @@ Gem::Specification.new do |s|
s.files += %w( third_party/address_sorting/address_sorting_posix.c )
s.files += %w( third_party/address_sorting/address_sorting_windows.c )
s.files += %w( third_party/address_sorting/include/address_sorting/address_sorting.h )
s.files += %w( third_party/boringssl-with-bazel/err_data.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c )
@ -2556,6 +2553,8 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c )
@ -2726,7 +2725,6 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/address.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/fors.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/internal.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/merkle.h )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/spx/params.h )
@ -2818,6 +2816,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_val.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c )
s.files += %w( third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c )
s.files += %w( third_party/boringssl-with-bazel/src/gen/crypto/err_data.c )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aead.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/aes.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h )
@ -2858,13 +2857,14 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/evp.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/ex_data.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hkdf.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hmac.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hpke.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/hrss.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/kdf.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/kyber.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/lhash.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/md4.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/md5.h )
@ -2880,8 +2880,6 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/poly1305.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/pool.h )
s.files += %w( third_party/boringssl-with-bazel/src/include/openssl/posix_time.h )
@ -2930,6 +2928,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_file.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc )
s.files += %w( third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc )

@ -67,9 +67,6 @@
application will see the compressed message in the byte buffer. */
#define GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION \
"grpc.per_message_decompression"
/** Enable/disable support for deadline checking. Defaults to 1, unless
GRPC_ARG_MINIMAL_STACK is enabled, in which case it defaults to 0 */
#define GRPC_ARG_ENABLE_DEADLINE_CHECKS "grpc.enable_deadline_checking"
/** Initial stream ID for http2 transports. Int valued. */
#define GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER \
"grpc.http2.initial_sequence_number"

13
package.xml generated

@ -153,8 +153,6 @@
<file baseinstalldir="/" name="src/core/ext/filters/channel_idle/idle_filter_state.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/deadline/deadline_filter.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/deadline/deadline_filter.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/fault_injection/fault_injection_filter.cc" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/fault_injection/fault_injection_filter.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc" role="src" />
@ -2454,7 +2452,6 @@
<file baseinstalldir="/" name="third_party/address_sorting/address_sorting_posix.c" role="src" />
<file baseinstalldir="/" name="third_party/address_sorting/address_sorting_windows.c" role="src" />
<file baseinstalldir="/" name="third_party/address_sorting/include/address_sorting/address_sorting.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/err_data.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c" role="src" />
@ -2560,6 +2557,8 @@
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/internal.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c" role="src" />
@ -2730,7 +2729,6 @@
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/address.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/fors.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/fors.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/internal.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/merkle.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/merkle.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/spx/params.h" role="src" />
@ -2822,6 +2820,7 @@
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/x_val.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/gen/crypto/err_data.c" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/aead.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/aes.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h" role="src" />
@ -2862,13 +2861,14 @@
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/evp.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/ex_data.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/hkdf.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/hmac.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/hpke.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/hrss.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/kdf.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/kyber.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/lhash.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/md4.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/md5.h" role="src" />
@ -2884,8 +2884,6 @@
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/poly1305.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/pool.h" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/include/openssl/posix_time.h" role="src" />
@ -2934,6 +2932,7 @@
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_file.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc" role="src" />
<file baseinstalldir="/" name="third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc" role="src" />

@ -1,4 +1,4 @@
// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df
// generated by generate_boringssl_prefix_header.sh on BoringSSL commit: 5a2bca2124800f2861263959b72bc35cdf18949b
// Copyright (c) 2018, Google Inc.
//
@ -21,6 +21,9 @@
#define BIO_f_ssl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_f_ssl)
#define BIO_set_ssl BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, BIO_set_ssl)
#define CBS_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_data)
#define CBS_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_init)
#define CBS_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_len)
#define DTLS_client_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DTLS_client_method)
#define DTLS_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DTLS_method)
#define DTLS_server_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, DTLS_server_method)
@ -66,8 +69,23 @@
#define SSL_COMP_get_compression_methods BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_COMP_get_compression_methods)
#define SSL_COMP_get_id BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_COMP_get_id)
#define SSL_COMP_get_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_COMP_get_name)
#define SSL_CREDENTIAL_free BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_free)
#define SSL_CREDENTIAL_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_get_ex_data)
#define SSL_CREDENTIAL_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_get_ex_new_index)
#define SSL_CREDENTIAL_new_delegated BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_new_delegated)
#define SSL_CREDENTIAL_new_x509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_new_x509)
#define SSL_CREDENTIAL_set1_cert_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_cert_chain)
#define SSL_CREDENTIAL_set1_delegated_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_delegated_credential)
#define SSL_CREDENTIAL_set1_ocsp_response BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_ocsp_response)
#define SSL_CREDENTIAL_set1_private_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_private_key)
#define SSL_CREDENTIAL_set1_signed_cert_timestamp_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_signed_cert_timestamp_list)
#define SSL_CREDENTIAL_set1_signing_algorithm_prefs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set1_signing_algorithm_prefs)
#define SSL_CREDENTIAL_set_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set_ex_data)
#define SSL_CREDENTIAL_set_private_key_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_set_private_key_method)
#define SSL_CREDENTIAL_up_ref BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CREDENTIAL_up_ref)
#define SSL_CTX_add0_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add0_chain_cert)
#define SSL_CTX_add1_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add1_chain_cert)
#define SSL_CTX_add1_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add1_credential)
#define SSL_CTX_add_cert_compression_alg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add_cert_compression_alg)
#define SSL_CTX_add_client_CA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add_client_CA)
#define SSL_CTX_add_extra_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_CTX_add_extra_chain_cert)
@ -282,6 +300,7 @@
#define SSL_accept BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_accept)
#define SSL_add0_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add0_chain_cert)
#define SSL_add1_chain_cert BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add1_chain_cert)
#define SSL_add1_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add1_credential)
#define SSL_add_application_settings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_application_settings)
#define SSL_add_bio_cert_subjects_to_stack BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_bio_cert_subjects_to_stack)
#define SSL_add_client_CA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_add_client_CA)
@ -301,7 +320,6 @@
#define SSL_clear_options BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_clear_options)
#define SSL_connect BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_connect)
#define SSL_cutthrough_complete BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_cutthrough_complete)
#define SSL_delegated_credential_used BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_delegated_credential_used)
#define SSL_do_handshake BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_do_handshake)
#define SSL_dup_CA_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_dup_CA_list)
#define SSL_early_callback_ctx_extension_get BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_early_callback_ctx_extension_get)
@ -328,6 +346,7 @@
#define SSL_get0_peer_certificates BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_certificates)
#define SSL_get0_peer_delegation_algorithms BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_delegation_algorithms)
#define SSL_get0_peer_verify_algorithms BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_peer_verify_algorithms)
#define SSL_get0_selected_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_selected_credential)
#define SSL_get0_server_requested_CAs BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_server_requested_CAs)
#define SSL_get0_session_id_context BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_session_id_context)
#define SSL_get0_signed_cert_timestamp_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_get0_signed_cert_timestamp_list)
@ -457,7 +476,6 @@
#define SSL_set1_chain BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_chain)
#define SSL_set1_curves BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_curves)
#define SSL_set1_curves_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_curves_list)
#define SSL_set1_delegated_credential BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_delegated_credential)
#define SSL_set1_ech_config_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_ech_config_list)
#define SSL_set1_group_ids BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_group_ids)
#define SSL_set1_groups BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set1_groups)
@ -475,6 +493,8 @@
#define SSL_set_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_bio)
#define SSL_set_cert_cb BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_cert_cb)
#define SSL_set_chain_and_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_chain_and_key)
#define SSL_set_check_client_certificate_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_check_client_certificate_type)
#define SSL_set_check_ecdsa_curve BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_check_ecdsa_curve)
#define SSL_set_cipher_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_cipher_list)
#define SSL_set_client_CA_list BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_client_CA_list)
#define SSL_set_compliance_policy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSL_set_compliance_policy)
@ -582,6 +602,7 @@
#define sk_CRYPTO_BUFFER_deep_copy BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_deep_copy)
#define sk_CRYPTO_BUFFER_new_null BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_new_null)
#define sk_CRYPTO_BUFFER_num BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_num)
#define sk_CRYPTO_BUFFER_pop BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_pop)
#define sk_CRYPTO_BUFFER_push BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_push)
#define sk_CRYPTO_BUFFER_set BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_set)
#define sk_CRYPTO_BUFFER_value BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, sk_CRYPTO_BUFFER_value)
@ -1118,7 +1139,6 @@
#define CBS_asn1_oid_to_text BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_asn1_oid_to_text)
#define CBS_contains_zero_byte BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_contains_zero_byte)
#define CBS_copy_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_copy_bytes)
#define CBS_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_data)
#define CBS_get_any_asn1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_any_asn1)
#define CBS_get_any_asn1_element BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_any_asn1_element)
#define CBS_get_any_ber_asn1_element BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_any_ber_asn1_element)
@ -1151,12 +1171,10 @@
#define CBS_get_until_first BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_until_first)
#define CBS_get_utf32_be BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf32_be)
#define CBS_get_utf8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_get_utf8)
#define CBS_init BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_init)
#define CBS_is_unsigned_asn1_integer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_unsigned_asn1_integer)
#define CBS_is_valid_asn1_bitstring BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_bitstring)
#define CBS_is_valid_asn1_integer BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_integer)
#define CBS_is_valid_asn1_oid BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_is_valid_asn1_oid)
#define CBS_len BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_len)
#define CBS_mem_equal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_mem_equal)
#define CBS_parse_generalized_time BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_parse_generalized_time)
#define CBS_parse_utc_time BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CBS_parse_utc_time)
@ -1231,7 +1249,7 @@
#define CRYPTO_get_dynlock_destroy_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_dynlock_destroy_callback)
#define CRYPTO_get_dynlock_lock_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_dynlock_lock_callback)
#define CRYPTO_get_ex_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_data)
#define CRYPTO_get_ex_new_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_new_index)
#define CRYPTO_get_ex_new_index_ex BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_ex_new_index_ex)
#define CRYPTO_get_fork_generation BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_fork_generation)
#define CRYPTO_get_lock_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_lock_name)
#define CRYPTO_get_locking_callback BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, CRYPTO_get_locking_callback)
@ -1517,6 +1535,7 @@
#define ERR_get_error_line_data BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_get_error_line_data)
#define ERR_get_next_error_library BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_get_next_error_library)
#define ERR_lib_error_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_lib_error_string)
#define ERR_lib_symbol_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_lib_symbol_name)
#define ERR_load_BIO_strings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_load_BIO_strings)
#define ERR_load_ERR_strings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_load_ERR_strings)
#define ERR_load_RAND_strings BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_load_RAND_strings)
@ -1533,6 +1552,7 @@
#define ERR_print_errors_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_print_errors_fp)
#define ERR_put_error BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_put_error)
#define ERR_reason_error_string BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_reason_error_string)
#define ERR_reason_symbol_name BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_reason_symbol_name)
#define ERR_remove_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_remove_state)
#define ERR_remove_thread_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_remove_thread_state)
#define ERR_restore_state BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ERR_restore_state)
@ -1705,6 +1725,7 @@
#define EVP_PKEY_CTX_set0_rsa_oaep_label BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set0_rsa_oaep_label)
#define EVP_PKEY_CTX_set1_hkdf_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set1_hkdf_key)
#define EVP_PKEY_CTX_set1_hkdf_salt BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set1_hkdf_salt)
#define EVP_PKEY_CTX_set_dh_pad BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_dh_pad)
#define EVP_PKEY_CTX_set_dsa_paramgen_bits BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_dsa_paramgen_bits)
#define EVP_PKEY_CTX_set_dsa_paramgen_q_bits BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_dsa_paramgen_q_bits)
#define EVP_PKEY_CTX_set_ec_param_enc BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_ec_param_enc)
@ -1721,6 +1742,7 @@
#define EVP_PKEY_CTX_set_rsa_pss_saltlen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_rsa_pss_saltlen)
#define EVP_PKEY_CTX_set_signature_md BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_CTX_set_signature_md)
#define EVP_PKEY_assign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign)
#define EVP_PKEY_assign_DH BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_DH)
#define EVP_PKEY_assign_DSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_DSA)
#define EVP_PKEY_assign_EC_KEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_EC_KEY)
#define EVP_PKEY_assign_RSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_assign_RSA)
@ -1762,6 +1784,7 @@
#define EVP_PKEY_print_params BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_print_params)
#define EVP_PKEY_print_private BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_print_private)
#define EVP_PKEY_print_public BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_print_public)
#define EVP_PKEY_set1_DH BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_DH)
#define EVP_PKEY_set1_DSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_DSA)
#define EVP_PKEY_set1_EC_KEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_EC_KEY)
#define EVP_PKEY_set1_RSA BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, EVP_PKEY_set1_RSA)
@ -2342,6 +2365,10 @@
#define SPAKE2_CTX_new BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPAKE2_CTX_new)
#define SPAKE2_generate_msg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPAKE2_generate_msg)
#define SPAKE2_process_msg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPAKE2_process_msg)
#define SPX_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_generate_key)
#define SPX_generate_key_from_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_generate_key_from_seed)
#define SPX_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_sign)
#define SPX_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SPX_verify)
#define SSLeay BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSLeay)
#define SSLeay_version BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, SSLeay_version)
#define TRUST_TOKEN_CLIENT_add_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, TRUST_TOKEN_CLIENT_add_key)
@ -2832,45 +2859,6 @@
#define X509v3_get_ext_count BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, X509v3_get_ext_count)
#define a2i_IPADDRESS BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS)
#define a2i_IPADDRESS_NC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, a2i_IPADDRESS_NC)
#define abi_test_bad_unwind_temporary BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_bad_unwind_temporary)
#define abi_test_bad_unwind_wrong_register BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_bad_unwind_wrong_register)
#define abi_test_clobber_r10 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r10)
#define abi_test_clobber_r11 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r11)
#define abi_test_clobber_r12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r12)
#define abi_test_clobber_r13 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r13)
#define abi_test_clobber_r14 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r14)
#define abi_test_clobber_r15 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r15)
#define abi_test_clobber_r8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r8)
#define abi_test_clobber_r9 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_r9)
#define abi_test_clobber_rax BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rax)
#define abi_test_clobber_rbp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rbp)
#define abi_test_clobber_rbx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rbx)
#define abi_test_clobber_rcx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rcx)
#define abi_test_clobber_rdi BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rdi)
#define abi_test_clobber_rdx BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rdx)
#define abi_test_clobber_rsi BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_rsi)
#define abi_test_clobber_xmm0 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm0)
#define abi_test_clobber_xmm1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm1)
#define abi_test_clobber_xmm10 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm10)
#define abi_test_clobber_xmm11 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm11)
#define abi_test_clobber_xmm12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm12)
#define abi_test_clobber_xmm13 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm13)
#define abi_test_clobber_xmm14 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm14)
#define abi_test_clobber_xmm15 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm15)
#define abi_test_clobber_xmm2 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm2)
#define abi_test_clobber_xmm3 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm3)
#define abi_test_clobber_xmm4 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm4)
#define abi_test_clobber_xmm5 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm5)
#define abi_test_clobber_xmm6 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm6)
#define abi_test_clobber_xmm7 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm7)
#define abi_test_clobber_xmm8 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm8)
#define abi_test_clobber_xmm9 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_clobber_xmm9)
#define abi_test_get_and_clear_direction_flag BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_get_and_clear_direction_flag)
#define abi_test_set_direction_flag BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_set_direction_flag)
#define abi_test_trampoline BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_trampoline)
#define abi_test_unwind_return BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_unwind_return)
#define abi_test_unwind_start BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_unwind_start)
#define abi_test_unwind_stop BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, abi_test_unwind_stop)
#define aes128gcmsiv_aes_ks BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, aes128gcmsiv_aes_ks)
#define aes128gcmsiv_aes_ks_enc_x1 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, aes128gcmsiv_aes_ks_enc_x1)
#define aes128gcmsiv_dec BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, aes128gcmsiv_dec)
@ -3018,7 +3006,6 @@
#define chacha20_poly1305_open BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_open)
#define chacha20_poly1305_seal BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, chacha20_poly1305_seal)
#define crypto_gcm_clmul_enabled BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, crypto_gcm_clmul_enabled)
#define d2i_ACCESS_DESCRIPTION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ACCESS_DESCRIPTION)
#define d2i_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ASN1_BIT_STRING)
#define d2i_ASN1_BMPSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ASN1_BMPSTRING)
#define d2i_ASN1_BOOLEAN BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ASN1_BOOLEAN)
@ -3051,8 +3038,6 @@
#define d2i_DHparams_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DHparams_bio)
#define d2i_DIRECTORYSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DIRECTORYSTRING)
#define d2i_DISPLAYTEXT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DISPLAYTEXT)
#define d2i_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DIST_POINT)
#define d2i_DIST_POINT_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DIST_POINT_NAME)
#define d2i_DSAPrivateKey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DSAPrivateKey)
#define d2i_DSAPrivateKey_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DSAPrivateKey_bio)
#define d2i_DSAPrivateKey_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_DSAPrivateKey_fp)
@ -3076,7 +3061,6 @@
#define d2i_ISSUING_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_ISSUING_DIST_POINT)
#define d2i_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKAC)
#define d2i_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NETSCAPE_SPKI)
#define d2i_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_NOTICEREF)
#define d2i_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12)
#define d2i_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_bio)
#define d2i_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS12_fp)
@ -3089,8 +3073,6 @@
#define d2i_PKCS8_PRIV_KEY_INFO_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS8_PRIV_KEY_INFO_fp)
#define d2i_PKCS8_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS8_bio)
#define d2i_PKCS8_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PKCS8_fp)
#define d2i_POLICYINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_POLICYINFO)
#define d2i_POLICYQUALINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_POLICYQUALINFO)
#define d2i_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PUBKEY)
#define d2i_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PUBKEY_bio)
#define d2i_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_PUBKEY_fp)
@ -3108,7 +3090,6 @@
#define d2i_RSA_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_RSA_PUBKEY)
#define d2i_RSA_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_RSA_PUBKEY_bio)
#define d2i_RSA_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_RSA_PUBKEY_fp)
#define d2i_USERNOTICE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_USERNOTICE)
#define d2i_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509)
#define d2i_X509_ALGOR BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_ALGOR)
#define d2i_X509_ATTRIBUTE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_ATTRIBUTE)
@ -3132,8 +3113,10 @@
#define d2i_X509_VAL BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_VAL)
#define d2i_X509_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_bio)
#define d2i_X509_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, d2i_X509_fp)
#define dh_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_asn1_meth)
#define dh_check_params_fast BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_check_params_fast)
#define dh_compute_key_padded_no_self_test BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_compute_key_padded_no_self_test)
#define dh_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dh_pkey_meth)
#define dsa_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dsa_asn1_meth)
#define dsa_check_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, dsa_check_key)
#define ec_GFp_mont_add BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ec_GFp_mont_add)
@ -3238,6 +3221,7 @@
#define ecp_nistz256_sqr_mont BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ecp_nistz256_sqr_mont)
#define ed25519_asn1_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_asn1_meth)
#define ed25519_pkey_meth BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, ed25519_pkey_meth)
#define evp_pkey_set_method BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, evp_pkey_set_method)
#define fiat_curve25519_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_mul)
#define fiat_curve25519_adx_square BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_curve25519_adx_square)
#define fiat_p256_adx_mul BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, fiat_p256_adx_mul)
@ -3261,7 +3245,6 @@
#define i2a_ASN1_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2a_ASN1_STRING)
#define i2c_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2c_ASN1_BIT_STRING)
#define i2c_ASN1_INTEGER BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2c_ASN1_INTEGER)
#define i2d_ACCESS_DESCRIPTION BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ACCESS_DESCRIPTION)
#define i2d_ASN1_BIT_STRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ASN1_BIT_STRING)
#define i2d_ASN1_BMPSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ASN1_BMPSTRING)
#define i2d_ASN1_BOOLEAN BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ASN1_BOOLEAN)
@ -3293,8 +3276,6 @@
#define i2d_DHparams_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DHparams_bio)
#define i2d_DIRECTORYSTRING BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DIRECTORYSTRING)
#define i2d_DISPLAYTEXT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DISPLAYTEXT)
#define i2d_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DIST_POINT)
#define i2d_DIST_POINT_NAME BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DIST_POINT_NAME)
#define i2d_DSAPrivateKey BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DSAPrivateKey)
#define i2d_DSAPrivateKey_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DSAPrivateKey_bio)
#define i2d_DSAPrivateKey_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_DSAPrivateKey_fp)
@ -3318,7 +3299,6 @@
#define i2d_ISSUING_DIST_POINT BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_ISSUING_DIST_POINT)
#define i2d_NETSCAPE_SPKAC BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKAC)
#define i2d_NETSCAPE_SPKI BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NETSCAPE_SPKI)
#define i2d_NOTICEREF BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_NOTICEREF)
#define i2d_PKCS12 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12)
#define i2d_PKCS12_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_bio)
#define i2d_PKCS12_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS12_fp)
@ -3335,8 +3315,6 @@
#define i2d_PKCS8_PRIV_KEY_INFO_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS8_PRIV_KEY_INFO_fp)
#define i2d_PKCS8_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS8_bio)
#define i2d_PKCS8_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PKCS8_fp)
#define i2d_POLICYINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_POLICYINFO)
#define i2d_POLICYQUALINFO BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_POLICYQUALINFO)
#define i2d_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PUBKEY)
#define i2d_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PUBKEY_bio)
#define i2d_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_PUBKEY_fp)
@ -3354,7 +3332,6 @@
#define i2d_RSA_PUBKEY BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_RSA_PUBKEY)
#define i2d_RSA_PUBKEY_bio BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_RSA_PUBKEY_bio)
#define i2d_RSA_PUBKEY_fp BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_RSA_PUBKEY_fp)
#define i2d_USERNOTICE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_USERNOTICE)
#define i2d_X509 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509)
#define i2d_X509_ALGOR BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_ALGOR)
#define i2d_X509_ATTRIBUTE BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, i2d_X509_ATTRIBUTE)
@ -3479,8 +3456,6 @@
#define spx_fors_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sign)
#define spx_fors_sk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_sk_gen)
#define spx_fors_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_fors_treehash)
#define spx_generate_key BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key)
#define spx_generate_key_from_seed BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_generate_key_from_seed)
#define spx_get_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_get_tree_index)
#define spx_ht_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_sign)
#define spx_ht_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_ht_verify)
@ -3492,7 +3467,6 @@
#define spx_set_tree_height BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_height)
#define spx_set_tree_index BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_tree_index)
#define spx_set_type BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_set_type)
#define spx_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_sign)
#define spx_thash_f BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_f)
#define spx_thash_h BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_h)
#define spx_thash_hmsg BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_thash_hmsg)
@ -3503,7 +3477,6 @@
#define spx_to_uint64 BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_to_uint64)
#define spx_treehash BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_treehash)
#define spx_uint64_to_len_bytes BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_uint64_to_len_bytes)
#define spx_verify BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_verify)
#define spx_wots_pk_from_sig BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_from_sig)
#define spx_wots_pk_gen BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_pk_gen)
#define spx_wots_sign BORINGSSL_ADD_PREFIX(BORINGSSL_PREFIX, spx_wots_sign)

@ -196,6 +196,7 @@ grpc_cc_library(
),
external_deps = [
"absl/functional:any_invocable",
"absl/log:check",
"absl/strings",
],
language = "c++",
@ -1154,6 +1155,9 @@ grpc_cc_library(
grpc_cc_library(
name = "ref_counted",
external_deps = [
"absl/log:check",
],
language = "c++",
public_hdrs = ["lib/gprpp/ref_counted.h"],
deps = [
@ -1167,6 +1171,9 @@ grpc_cc_library(
grpc_cc_library(
name = "dual_ref_counted",
external_deps = [
"absl/log:check",
],
language = "c++",
public_hdrs = ["lib/gprpp/dual_ref_counted.h"],
deps = [
@ -1359,6 +1366,7 @@ grpc_cc_library(
external_deps = [
"absl/base:core_headers",
"absl/container:flat_hash_set",
"absl/log:check",
"absl/status",
"absl/strings",
"absl/types:optional",
@ -1429,7 +1437,10 @@ grpc_cc_library(
hdrs = [
"lib/resource_quota/thread_quota.h",
],
external_deps = ["absl/base:core_headers"],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
],
deps = [
"ref_counted",
"//:gpr",
@ -1445,7 +1456,10 @@ grpc_cc_library(
hdrs = [
"lib/resource_quota/connection_quota.h",
],
external_deps = ["absl/base:core_headers"],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
],
deps = [
"memory_quota",
"ref_counted",
@ -2930,6 +2944,7 @@ grpc_cc_library(
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/strings",
"absl/types:span",
],
@ -3050,7 +3065,10 @@ grpc_cc_library(
"service_config/service_config.h",
"service_config/service_config_call_data.h",
],
external_deps = ["absl/strings"],
external_deps = [
"absl/log:check",
"absl/strings",
],
language = "c++",
deps = [
"arena",
@ -3102,6 +3120,7 @@ grpc_cc_library(
"lib/channel/channel_args.h",
],
external_deps = [
"absl/log:check",
"absl/meta:type_traits",
"absl/strings",
"absl/strings:str_format",
@ -4371,6 +4390,7 @@ grpc_cc_library(
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/status",
"absl/status:statusor",
"absl/strings",
@ -4482,6 +4502,7 @@ grpc_cc_library(
],
external_deps = [
"absl/base:core_headers",
"absl/log:check",
"absl/meta:type_traits",
"absl/random",
"absl/status",
@ -4524,42 +4545,6 @@ grpc_cc_library(
],
)
grpc_cc_library(
name = "grpc_deadline_filter",
srcs = [
"ext/filters/deadline/deadline_filter.cc",
],
hdrs = [
"ext/filters/deadline/deadline_filter.h",
],
external_deps = [
"absl/status",
"absl/types:optional",
],
language = "c++",
deps = [
"arena",
"arena_promise",
"channel_fwd",
"channel_stack_type",
"closure",
"context",
"error",
"metadata_batch",
"status_helper",
"time",
"//:call_combiner",
"//:channel_arg_names",
"//:config",
"//:debug_location",
"//:exec_ctx",
"//:gpr",
"//:grpc_base",
"//:grpc_public_hdrs",
"//:iomgr_timer",
],
)
grpc_cc_library(
name = "grpc_client_authority_filter",
srcs = [
@ -4613,7 +4598,6 @@ grpc_cc_library(
"channel_fwd",
"channel_stack_type",
"context",
"grpc_deadline_filter",
"grpc_service_config",
"json",
"json_args",
@ -5639,7 +5623,10 @@ grpc_cc_library(
grpc_cc_library(
name = "down_cast",
hdrs = ["lib/gprpp/down_cast.h"],
external_deps = ["absl/base:config"],
external_deps = [
"absl/base:config",
"absl/log:check",
],
deps = ["//:gpr"],
)
@ -7490,6 +7477,7 @@ grpc_cc_library(
],
external_deps = [
"absl/container:inlined_vector",
"absl/log:check",
"absl/strings",
"absl/strings:str_format",
"absl/types:optional",
@ -7651,6 +7639,7 @@ grpc_cc_library(
"absl/container:flat_hash_map",
"absl/functional:any_invocable",
"absl/functional:function_ref",
"absl/log:check",
"absl/strings",
"absl/types:span",
],

@ -61,7 +61,6 @@
#include "src/core/client_channel/retry_filter.h"
#include "src/core/client_channel/subchannel.h"
#include "src/core/client_channel/subchannel_interface_internal.h"
#include "src/core/ext/filters/deadline/deadline_filter.h"
#include "src/core/handshaker/proxy_mapper_registry.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
@ -210,14 +209,14 @@ class ClientChannelFilter::FilterBasedCallData final
const grpc_call_element_args& args);
~FilterBasedCallData() override;
grpc_call_element* elem() const { return deadline_state_.elem; }
grpc_call_stack* owning_call() const { return deadline_state_.call_stack; }
CallCombiner* call_combiner() const { return deadline_state_.call_combiner; }
grpc_call_element* elem() const { return elem_; }
grpc_call_stack* owning_call() const { return owning_call_; }
CallCombiner* call_combiner() const { return call_combiner_; }
ClientChannelFilter* chand() const override {
return static_cast<ClientChannelFilter*>(elem()->channel_data);
}
Arena* arena() const override { return deadline_state_.arena; }
Arena* arena() const override { return arena_; }
grpc_polling_entity* pollent() override { return pollent_; }
grpc_metadata_batch* send_initial_metadata() override {
return pending_batches_[0]
@ -270,10 +269,8 @@ class ClientChannelFilter::FilterBasedCallData final
void ResetDeadline(Duration timeout) override {
const Timestamp per_method_deadline =
Timestamp::FromCycleCounterRoundUp(call_start_time_) + timeout;
if (per_method_deadline < deadline_) {
deadline_ = per_method_deadline;
grpc_deadline_state_reset(&deadline_state_, deadline_);
}
static_cast<Call*>(call_context_[GRPC_CONTEXT_CALL].value)
->UpdateDeadline(per_method_deadline);
}
void CreateDynamicCall();
@ -286,8 +283,10 @@ class ClientChannelFilter::FilterBasedCallData final
gpr_cycle_counter call_start_time_;
Timestamp deadline_;
// State for handling deadlines.
grpc_deadline_state deadline_state_;
Arena* const arena_;
grpc_call_element* const elem_;
grpc_call_stack* const owning_call_;
CallCombiner* const call_combiner_;
grpc_polling_entity* pollent_ = nullptr;
@ -387,11 +386,12 @@ class ClientChannelFilter::PromiseBasedCallData final
}
void ResetDeadline(Duration timeout) override {
Call* call = GetContext<Call>();
CallContext* call_context = GetContext<CallContext>();
const Timestamp per_method_deadline =
Timestamp::FromCycleCounterRoundUp(call_context->call_start_time()) +
timeout;
call_context->UpdateDeadline(per_method_deadline);
call->UpdateDeadline(per_method_deadline);
}
ClientChannelFilter* chand_;
@ -1230,9 +1230,6 @@ RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args,
grpc_error_handle* error)
: channel_args_(args->channel_args),
deadline_checking_enabled_(
channel_args_.GetBool(GRPC_ARG_ENABLE_DEADLINE_CHECKS)
.value_or(!channel_args_.WantMinimalStack())),
owning_stack_(args->channel_stack),
client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
@ -2112,8 +2109,7 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
if (method_params != nullptr) {
// If the deadline from the service config is shorter than the one
// from the client API, reset the deadline timer.
if (chand()->deadline_checking_enabled_ &&
method_params->timeout() != Duration::Zero()) {
if (method_params->timeout() != Duration::Zero()) {
ResetDeadline(method_params->timeout());
}
// If the service config set wait_for_ready and the application
@ -2213,12 +2209,10 @@ ClientChannelFilter::FilterBasedCallData::FilterBasedCallData(
call_context_(args.context),
call_start_time_(args.start_time),
deadline_(args.deadline),
deadline_state_(
elem, args,
GPR_LIKELY(static_cast<ClientChannelFilter*>(elem->channel_data)
->deadline_checking_enabled_)
? args.deadline
: Timestamp::InfFuture()) {
arena_(args.arena),
elem_(elem),
owning_call_(args.call_stack),
call_combiner_(args.call_combiner) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p: created call", chand(), this);
}
@ -2262,10 +2256,6 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
calld, grpc_transport_stream_op_batch_string(batch, false).c_str());
}
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
grpc_deadline_state_client_start_transport_stream_op_batch(
&calld->deadline_state_, batch);
}
// Intercept recv_trailing_metadata to commit the call, in case we wind up
// failing the call before we get down to the retry or LB call layer.
if (batch->recv_trailing_metadata) {
@ -3056,7 +3046,6 @@ ClientChannelFilter::FilterBasedLoadBalancedCall::FilterBasedLoadBalancedCall(
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
: LoadBalancedCall(chand, args.context, std::move(on_commit),
is_transparent_retry),
deadline_(args.deadline),
arena_(args.arena),
owning_call_(args.call_stack),
call_combiner_(args.call_combiner),
@ -3356,8 +3345,12 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
// Get status from error.
grpc_status_code code;
std::string message;
grpc_error_get_status(error, self->deadline_, &code, &message,
/*http_error=*/nullptr, /*error_string=*/nullptr);
grpc_error_get_status(
error,
static_cast<Call*>(self->call_context()[GRPC_CONTEXT_CALL].value)
->deadline(),
&code, &message,
/*http_error=*/nullptr, /*error_string=*/nullptr);
status = absl::Status(static_cast<absl::StatusCode>(code), message);
} else {
// Get status from headers.
@ -3495,7 +3488,8 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
CHECK_NE(path, nullptr);
SubchannelCall::Args call_args = {
connected_subchannel()->Ref(), pollent_, path->Ref(), /*start_time=*/0,
deadline_, arena_,
static_cast<Call*>(call_context()[GRPC_CONTEXT_CALL].value)->deadline(),
arena_,
// TODO(roth): When we implement hedging support, we will probably
// need to use a separate call context for each subchannel call.
call_context(), call_combiner_};

@ -287,7 +287,6 @@ class ClientChannelFilter final {
// Fields set at construction and never modified.
//
ChannelArgs channel_args_;
const bool deadline_checking_enabled_;
grpc_channel_stack* owning_stack_;
ClientChannelFactory* client_channel_factory_;
RefCountedPtr<ServiceConfig> default_service_config_;
@ -558,7 +557,6 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall final
// TODO(roth): Instead of duplicating these fields in every filter
// that uses any one of them, we should store them in the call
// context. This will save per-call memory overhead.
Timestamp deadline_;
Arena* arena_;
grpc_call_stack* owning_call_;
CallCombiner* call_combiner_;

@ -1,408 +0,0 @@
//
// Copyright 2016 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#include <grpc/support/port_platform.h>
#include "src/core/ext/filters/deadline/deadline_filter.h"
#include <functional>
#include <memory>
#include <new>
#include <utility>
#include "absl/status/status.h"
#include "absl/types/optional.h"
#include <grpc/impl/channel_arg_names.h>
#include <grpc/status.h>
#include <grpc/support/log.h>
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/context.h"
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
// A fire-and-forget class representing a pending deadline timer.
// Allocated on the call arena.
class TimerState {
public:
TimerState(grpc_deadline_state* deadline_state, Timestamp deadline)
: deadline_state_(deadline_state) {
GRPC_CALL_STACK_REF(deadline_state->call_stack, "DeadlineTimerState");
GRPC_CLOSURE_INIT(&closure_, TimerCallback, this, nullptr);
grpc_timer_init(&timer_, deadline, &closure_);
}
void Cancel() { grpc_timer_cancel(&timer_); }
private:
// The on_complete callback used when sending a cancel_error batch down the
// filter stack. Yields the call combiner when the batch returns.
static void YieldCallCombiner(void* arg, grpc_error_handle /*ignored*/) {
TimerState* self = static_cast<TimerState*>(arg);
GRPC_CALL_COMBINER_STOP(self->deadline_state_->call_combiner,
"got on_complete from cancel_stream batch");
GRPC_CALL_STACK_UNREF(self->deadline_state_->call_stack,
"DeadlineTimerState");
}
// This is called via the call combiner, so access to deadline_state is
// synchronized.
static void SendCancelOpInCallCombiner(void* arg, grpc_error_handle error) {
TimerState* self = static_cast<TimerState*>(arg);
grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op(
GRPC_CLOSURE_INIT(&self->closure_, YieldCallCombiner, self, nullptr));
batch->cancel_stream = true;
batch->payload->cancel_stream.cancel_error = error;
grpc_call_element* elem = self->deadline_state_->elem;
elem->filter->start_transport_stream_op_batch(elem, batch);
}
// Timer callback.
static void TimerCallback(void* arg, grpc_error_handle error) {
TimerState* self = static_cast<TimerState*>(arg);
if (error != absl::CancelledError()) {
error = grpc_error_set_int(GRPC_ERROR_CREATE("Deadline Exceeded"),
StatusIntProperty::kRpcStatus,
GRPC_STATUS_DEADLINE_EXCEEDED);
self->deadline_state_->call_combiner->Cancel(error);
GRPC_CLOSURE_INIT(&self->closure_, SendCancelOpInCallCombiner, self,
nullptr);
GRPC_CALL_COMBINER_START(self->deadline_state_->call_combiner,
&self->closure_, error,
"deadline exceeded -- sending cancel_stream op");
} else {
GRPC_CALL_STACK_UNREF(self->deadline_state_->call_stack,
"DeadlineTimerState");
}
}
// NOTE: This object's dtor is never called, so do not add any data
// members that require destruction!
// TODO(roth): We should ideally call this object's dtor somewhere,
// but that would require adding more synchronization, because we'd
// need to call the dtor only after both (a) the timer callback
// finishes and (b) the filter sees the call completion and attempts
// to cancel the timer.
grpc_deadline_state* deadline_state_;
grpc_timer timer_;
grpc_closure closure_;
};
} // namespace grpc_core
//
// grpc_deadline_state
//
// Starts the deadline timer.
// This is called via the call combiner, so access to deadline_state is
// synchronized.
static void start_timer_if_needed(grpc_deadline_state* deadline_state,
grpc_core::Timestamp deadline) {
if (deadline == grpc_core::Timestamp::InfFuture()) return;
GPR_ASSERT(deadline_state->timer_state == nullptr);
deadline_state->timer_state =
deadline_state->arena->New<grpc_core::TimerState>(deadline_state,
deadline);
}
// Cancels the deadline timer.
// This is called via the call combiner, so access to deadline_state is
// synchronized.
static void cancel_timer_if_needed(grpc_deadline_state* deadline_state) {
if (deadline_state->timer_state != nullptr) {
deadline_state->timer_state->Cancel();
deadline_state->timer_state = nullptr;
}
}
// Callback run when we receive trailing metadata.
static void recv_trailing_metadata_ready(void* arg, grpc_error_handle error) {
grpc_deadline_state* deadline_state = static_cast<grpc_deadline_state*>(arg);
cancel_timer_if_needed(deadline_state);
// Invoke the original callback.
grpc_core::Closure::Run(DEBUG_LOCATION,
deadline_state->original_recv_trailing_metadata_ready,
error);
}
// Inject our own recv_trailing_metadata_ready callback into op.
static void inject_recv_trailing_metadata_ready(
grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op) {
deadline_state->original_recv_trailing_metadata_ready =
op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
GRPC_CLOSURE_INIT(&deadline_state->recv_trailing_metadata_ready,
recv_trailing_metadata_ready, deadline_state,
grpc_schedule_on_exec_ctx);
op->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
&deadline_state->recv_trailing_metadata_ready;
}
// Callback and associated state for starting the timer after call stack
// initialization has been completed.
struct start_timer_after_init_state {
start_timer_after_init_state(grpc_deadline_state* deadline_state,
grpc_core::Timestamp deadline)
: deadline_state(deadline_state), deadline(deadline) {}
~start_timer_after_init_state() {
start_timer_if_needed(deadline_state, deadline);
}
bool in_call_combiner = false;
grpc_deadline_state* deadline_state;
grpc_core::Timestamp deadline;
grpc_closure closure;
};
static void start_timer_after_init(void* arg, grpc_error_handle error) {
struct start_timer_after_init_state* state =
static_cast<struct start_timer_after_init_state*>(arg);
grpc_deadline_state* deadline_state = state->deadline_state;
if (!state->in_call_combiner) {
// We are initially called without holding the call combiner, so we
// need to bounce ourselves into it.
state->in_call_combiner = true;
GRPC_CALL_COMBINER_START(deadline_state->call_combiner, &state->closure,
error, "scheduling deadline timer");
return;
}
delete state;
GRPC_CALL_COMBINER_STOP(deadline_state->call_combiner,
"done scheduling deadline timer");
}
grpc_deadline_state::grpc_deadline_state(grpc_call_element* elem,
const grpc_call_element_args& args,
grpc_core::Timestamp deadline)
: elem(elem),
call_stack(args.call_stack),
call_combiner(args.call_combiner),
arena(args.arena) {
// Deadline will always be infinite on servers, so the timer will only be
// set on clients with a finite deadline.
if (deadline != grpc_core::Timestamp::InfFuture()) {
// When the deadline passes, we indicate the failure by sending down
// an op with cancel_error set. However, we can't send down any ops
// until after the call stack is fully initialized. If we start the
// timer here, we have no guarantee that the timer won't pop before
// call stack initialization is finished. To avoid that problem, we
// create a closure to start the timer, and we schedule that closure
// to be run after call stack initialization is done.
struct start_timer_after_init_state* state =
new start_timer_after_init_state(this, deadline);
GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state,
grpc_schedule_on_exec_ctx);
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &state->closure, absl::OkStatus());
}
}
grpc_deadline_state::~grpc_deadline_state() { cancel_timer_if_needed(this); }
void grpc_deadline_state_reset(grpc_deadline_state* deadline_state,
grpc_core::Timestamp new_deadline) {
cancel_timer_if_needed(deadline_state);
start_timer_if_needed(deadline_state, new_deadline);
}
void grpc_deadline_state_client_start_transport_stream_op_batch(
grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op) {
if (op->cancel_stream) {
cancel_timer_if_needed(deadline_state);
} else {
// Make sure we know when the call is complete, so that we can cancel
// the timer.
if (op->recv_trailing_metadata) {
inject_recv_trailing_metadata_ready(deadline_state, op);
}
}
}
//
// filter code
//
// Constructor for channel_data. Used for both client and server filters.
static grpc_error_handle deadline_init_channel_elem(
grpc_channel_element* /*elem*/, grpc_channel_element_args* args) {
GPR_ASSERT(!args->is_last);
return absl::OkStatus();
}
// Destructor for channel_data. Used for both client and server filters.
static void deadline_destroy_channel_elem(grpc_channel_element* /*elem*/) {}
// Additional call data used only for the server filter.
struct server_call_data {
grpc_deadline_state deadline_state; // Must be first.
// The closure for receiving initial metadata.
grpc_closure recv_initial_metadata_ready;
// Received initial metadata batch.
grpc_metadata_batch* recv_initial_metadata;
// The original recv_initial_metadata_ready closure, which we chain to
// after our own closure is invoked.
grpc_closure* next_recv_initial_metadata_ready;
};
// Constructor for call_data. Used for both client and server filters.
static grpc_error_handle deadline_init_call_elem(
grpc_call_element* elem, const grpc_call_element_args* args) {
new (elem->call_data) grpc_deadline_state(elem, *args, args->deadline);
return absl::OkStatus();
}
// Destructor for call_data. Used for both client and server filters.
static void deadline_destroy_call_elem(
grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
grpc_closure* /*ignored*/) {
grpc_deadline_state* deadline_state =
static_cast<grpc_deadline_state*>(elem->call_data);
deadline_state->~grpc_deadline_state();
}
// Method for starting a call op for client filter.
static void deadline_client_start_transport_stream_op_batch(
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
grpc_deadline_state_client_start_transport_stream_op_batch(
static_cast<grpc_deadline_state*>(elem->call_data), op);
// Chain to next filter.
grpc_call_next_op(elem, op);
}
// Callback for receiving initial metadata on the server.
static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
server_call_data* calld = static_cast<server_call_data*>(elem->call_data);
start_timer_if_needed(
&calld->deadline_state,
calld->recv_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
.value_or(grpc_core::Timestamp::InfFuture()));
// Invoke the next callback.
grpc_core::Closure::Run(DEBUG_LOCATION,
calld->next_recv_initial_metadata_ready, error);
}
// Method for starting a call op for server filter.
static void deadline_server_start_transport_stream_op_batch(
grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
server_call_data* calld = static_cast<server_call_data*>(elem->call_data);
if (op->cancel_stream) {
cancel_timer_if_needed(&calld->deadline_state);
} else {
// If we're receiving initial metadata, we need to get the deadline
// from the recv_initial_metadata_ready callback. So we inject our
// own callback into that hook.
if (op->recv_initial_metadata) {
calld->next_recv_initial_metadata_ready =
op->payload->recv_initial_metadata.recv_initial_metadata_ready;
calld->recv_initial_metadata =
op->payload->recv_initial_metadata.recv_initial_metadata;
GRPC_CLOSURE_INIT(&calld->recv_initial_metadata_ready,
recv_initial_metadata_ready, elem,
grpc_schedule_on_exec_ctx);
op->payload->recv_initial_metadata.recv_initial_metadata_ready =
&calld->recv_initial_metadata_ready;
}
// Make sure we know when the call is complete, so that we can cancel
// the timer.
// Note that we trigger this on recv_trailing_metadata, even though
// the client never sends trailing metadata, because this is the
// hook that tells us when the call is complete on the server side.
if (op->recv_trailing_metadata) {
inject_recv_trailing_metadata_ready(&calld->deadline_state, op);
}
}
// Chain to next filter.
grpc_call_next_op(elem, op);
}
const grpc_channel_filter grpc_client_deadline_filter = {
deadline_client_start_transport_stream_op_batch,
[](grpc_channel_element*, grpc_core::CallArgs call_args,
grpc_core::NextPromiseFactory next_promise_factory) {
return next_promise_factory(std::move(call_args));
},
/* init_call: */ nullptr,
grpc_channel_next_op,
sizeof(grpc_deadline_state),
deadline_init_call_elem,
grpc_call_stack_ignore_set_pollset_or_pollset_set,
deadline_destroy_call_elem,
0, // sizeof(channel_data)
deadline_init_channel_elem,
grpc_channel_stack_no_post_init,
deadline_destroy_channel_elem,
grpc_channel_next_get_info,
"deadline",
};
const grpc_channel_filter grpc_server_deadline_filter = {
deadline_server_start_transport_stream_op_batch,
[](grpc_channel_element*, grpc_core::CallArgs call_args,
grpc_core::NextPromiseFactory next_promise_factory) {
auto deadline = call_args.client_initial_metadata->get(
grpc_core::GrpcTimeoutMetadata());
if (deadline.has_value()) {
grpc_core::GetContext<grpc_core::CallContext>()->UpdateDeadline(
*deadline);
}
return next_promise_factory(std::move(call_args));
},
[](grpc_channel_element*, grpc_core::CallSpineInterface* spine) {
grpc_core::DownCast<grpc_core::PipeBasedCallSpine*>(spine)
->client_initial_metadata()
.receiver.InterceptAndMap([](grpc_core::ClientMetadataHandle md) {
auto deadline = md->get(grpc_core::GrpcTimeoutMetadata());
if (deadline.has_value()) {
grpc_core::GetContext<grpc_core::CallContext>()->UpdateDeadline(
*deadline);
}
return md;
});
},
grpc_channel_next_op,
sizeof(server_call_data),
deadline_init_call_elem,
grpc_call_stack_ignore_set_pollset_or_pollset_set,
deadline_destroy_call_elem,
0, // sizeof(channel_data)
deadline_init_channel_elem,
grpc_channel_stack_no_post_init,
deadline_destroy_channel_elem,
grpc_channel_next_get_info,
"deadline",
};
namespace grpc_core {
void RegisterDeadlineFilter(CoreConfiguration::Builder* builder) {
builder->channel_init()
->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL, &grpc_client_deadline_filter)
.ExcludeFromMinimalStack()
.IfChannelArg(GRPC_ARG_ENABLE_DEADLINE_CHECKS, true);
builder->channel_init()
->RegisterFilter(GRPC_SERVER_CHANNEL, &grpc_server_deadline_filter)
.ExcludeFromMinimalStack()
.IfChannelArg(GRPC_ARG_ENABLE_DEADLINE_CHECKS, true);
}
} // namespace grpc_core

@ -1,85 +0,0 @@
//
// Copyright 2016 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
#define GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H
#include <grpc/support/port_platform.h>
#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/call_combiner.h"
#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/transport/transport.h"
namespace grpc_core {
class TimerState;
} // namespace grpc_core
// State used for filters that enforce call deadlines.
// Must be the first field in the filter's call_data.
struct grpc_deadline_state {
grpc_deadline_state(grpc_call_element* elem,
const grpc_call_element_args& args,
grpc_core::Timestamp deadline);
~grpc_deadline_state();
// We take a reference to the call stack for the timer callback.
grpc_call_element* elem;
grpc_call_stack* call_stack;
grpc_core::CallCombiner* call_combiner;
grpc_core::Arena* arena;
grpc_core::TimerState* timer_state = nullptr;
// Closure to invoke when we receive trailing metadata.
// We use this to cancel the timer.
grpc_closure recv_trailing_metadata_ready;
// The original recv_trailing_metadata_ready closure, which we chain to
// after our own closure is invoked.
grpc_closure* original_recv_trailing_metadata_ready;
};
// Cancels the existing timer and starts a new one with new_deadline.
//
// Note: It is generally safe to call this with an earlier deadline
// value than the current one, but not the reverse. No checks are done
// to ensure that the timer callback is not invoked while it is in the
// process of being reset, which means that attempting to increase the
// deadline may result in the timer being called twice.
//
// Note: Must be called while holding the call combiner.
void grpc_deadline_state_reset(grpc_deadline_state* deadline_state,
grpc_core::Timestamp new_deadline);
// To be called from the client-side filter's start_transport_stream_op_batch()
// method. Ensures that the deadline timer is cancelled when the call
// is completed.
//
// Note: It is the caller's responsibility to chain to the next filter if
// necessary after this function returns.
//
// Note: Must be called while holding the call combiner.
void grpc_deadline_state_client_start_transport_stream_op_batch(
grpc_deadline_state* deadline_state, grpc_transport_stream_op_batch* op);
// Deadline filters for direct client channels and server channels.
// Note: Deadlines for non-direct client channels are handled by the
// client_channel filter.
extern const grpc_channel_filter grpc_client_deadline_filter;
extern const grpc_channel_filter grpc_server_deadline_filter;
#endif // GRPC_SRC_CORE_EXT_FILTERS_DEADLINE_DEADLINE_FILTER_H

@ -29,7 +29,6 @@
#include <grpc/status.h>
#include <grpc/support/log.h>
#include "src/core/ext/filters/deadline/deadline_filter.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/config/core_configuration.h"
@ -250,18 +249,10 @@ void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder) {
builder->channel_init()
->RegisterFilter<ClientMessageSizeFilter>(GRPC_CLIENT_DIRECT_CHANNEL)
.ExcludeFromMinimalStack()
.If(HasMessageSizeLimits)
// TODO(ctiller): ordering constraint is here to match the ordering that
// existed prior to ordering constraints did. Re-examine the ordering of
// filters from first principles.
.Before({&grpc_client_deadline_filter});
.If(HasMessageSizeLimits);
builder->channel_init()
->RegisterFilter<ServerMessageSizeFilter>(GRPC_SERVER_CHANNEL)
.ExcludeFromMinimalStack()
.If(HasMessageSizeLimits)
// TODO(ctiller): ordering constraint is here to match the ordering that
// existed prior to ordering constraints did. Re-examine the ordering of
// filters from first principles.
.Before({&grpc_server_deadline_filter});
.If(HasMessageSizeLimits);
}
} // namespace grpc_core

@ -85,7 +85,7 @@ class ChaoticGoodClientTransport final : public ClientTransport {
grpc_endpoint* GetEndpoint() override { return nullptr; }
void Orphan() override {
AbortWithError();
delete this;
Unref();
}
void StartCall(CallHandler call_handler) override;

@ -96,7 +96,7 @@ class ChaoticGoodServerTransport final : public ServerTransport {
void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {}
void PerformOp(grpc_transport_op*) override;
grpc_endpoint* GetEndpoint() override { return nullptr; }
void Orphan() override { delete this; }
void Orphan() override { Unref(); }
void SetAcceptor(Acceptor* acceptor) override;
void AbortWithError();

@ -142,8 +142,6 @@ static bool g_default_server_keepalive_permit_without_calls = false;
#define MAX_CLIENT_STREAM_ID 0x7fffffffu
grpc_core::TraceFlag grpc_keepalive_trace(false, "http_keepalive");
grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_refcount(false,
"chttp2_refcount");
// forward declarations of various callbacks that we'll build closures around
static void write_action_begin_locked(
@ -594,12 +592,7 @@ static void init_keepalive_pings_if_enabled_locked(
grpc_chttp2_transport::grpc_chttp2_transport(
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
bool is_client)
: grpc_core::RefCounted<grpc_chttp2_transport,
grpc_core::NonPolymorphicRefCount>(
GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
? "chttp2_refcount"
: nullptr),
ep(ep),
: ep(ep),
peer_string(
grpc_core::Slice::FromCopiedString(grpc_endpoint_get_peer(ep))),
memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()

@ -223,17 +223,19 @@ typedef enum {
GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED,
} grpc_chttp2_keepalive_state;
struct grpc_chttp2_transport final
: public grpc_core::FilterStackTransport,
public grpc_core::RefCounted<grpc_chttp2_transport,
grpc_core::NonPolymorphicRefCount>,
public grpc_core::KeepsGrpcInitialized {
struct grpc_chttp2_transport final : public grpc_core::FilterStackTransport,
public grpc_core::KeepsGrpcInitialized {
grpc_chttp2_transport(const grpc_core::ChannelArgs& channel_args,
grpc_endpoint* ep, bool is_client);
~grpc_chttp2_transport() override;
void Orphan() override;
grpc_core::RefCountedPtr<grpc_chttp2_transport> Ref() {
return grpc_core::FilterStackTransport::RefAsSubclass<
grpc_chttp2_transport>();
}
size_t SizeOfStream() const override;
bool HackyDisableStreamOpBatchCoalescingInConnectedChannel() const override;
void PerformStreamOp(grpc_stream* gs,

@ -33,8 +33,9 @@
namespace grpc_core {
namespace {
class InprocServerTransport final : public RefCounted<InprocServerTransport>,
public ServerTransport {
class InprocClientTransport;
class InprocServerTransport final : public ServerTransport {
public:
void SetAcceptor(Acceptor* acceptor) override {
acceptor_ = acceptor;
@ -95,6 +96,8 @@ class InprocServerTransport final : public RefCounted<InprocServerTransport>,
return acceptor_->CreateCall(std::move(md), acceptor_->CreateArena());
}
OrphanablePtr<InprocClientTransport> MakeClientTransport();
private:
enum class ConnectionState : uint8_t { kInitial, kReady, kDisconnected };
@ -109,6 +112,10 @@ class InprocServerTransport final : public RefCounted<InprocServerTransport>,
class InprocClientTransport final : public ClientTransport {
public:
explicit InprocClientTransport(
RefCountedPtr<InprocServerTransport> server_transport)
: server_transport_(std::move(server_transport)) {}
void StartCall(CallHandler call_handler) override {
call_handler.SpawnGuarded(
"pull_initial_metadata",
@ -125,10 +132,6 @@ class InprocClientTransport final : public ClientTransport {
void Orphan() override { delete this; }
OrphanablePtr<Transport> GetServerTransport() {
return OrphanablePtr<Transport>(server_transport_->Ref().release());
}
FilterStackTransport* filter_stack_transport() override { return nullptr; }
ClientTransport* client_transport() override { return this; }
ServerTransport* server_transport() override { return nullptr; }
@ -144,8 +147,7 @@ class InprocClientTransport final : public ClientTransport {
absl::UnavailableError("Client transport closed"));
}
RefCountedPtr<InprocServerTransport> server_transport_ =
MakeRefCounted<InprocServerTransport>();
const RefCountedPtr<InprocServerTransport> server_transport_;
};
bool UsePromiseBasedTransport() {
@ -155,6 +157,12 @@ bool UsePromiseBasedTransport() {
return true;
}
OrphanablePtr<InprocClientTransport>
InprocServerTransport::MakeClientTransport() {
return MakeOrphanable<InprocClientTransport>(
RefAsSubclass<InprocServerTransport>());
}
OrphanablePtr<Channel> MakeLameChannel(absl::string_view why,
absl::Status error) {
gpr_log(GPR_ERROR, "%s: %s", std::string(why).c_str(),
@ -196,8 +204,8 @@ OrphanablePtr<Channel> MakeInprocChannel(Server* server,
std::pair<OrphanablePtr<Transport>, OrphanablePtr<Transport>>
MakeInProcessTransportPair() {
auto client_transport = MakeOrphanable<InprocClientTransport>();
auto server_transport = client_transport->GetServerTransport();
auto server_transport = MakeOrphanable<InprocServerTransport>();
auto client_transport = server_transport->MakeClientTransport();
return std::make_pair(std::move(client_transport),
std::move(server_transport));
}

@ -18,6 +18,8 @@
#include "src/core/lib/address_utils/parse_address.h"
#include "absl/log/check.h"
#include <grpc/support/port_platform.h>
#include "src/core/lib/iomgr/port.h" // IWYU pragma: keep
@ -284,7 +286,7 @@ bool grpc_parse_ipv6_hostport(absl::string_view hostport,
char* host_end =
static_cast<char*>(gpr_memrchr(host.c_str(), '%', host.size()));
if (host_end != nullptr) {
GPR_ASSERT(host_end >= host.c_str());
CHECK(host_end >= host.c_str());
char host_without_scope[GRPC_INET6_ADDRSTRLEN + 1];
size_t host_without_scope_len =
static_cast<size_t>(host_end - host.c_str());

@ -21,6 +21,8 @@
#include <errno.h>
#include <inttypes.h>
#include "absl/log/check.h"
#include <grpc/support/port_platform.h>
#ifdef GRPC_HAVE_VSOCK
#include <linux/vm_sockets.h>
@ -110,7 +112,7 @@ static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
int grpc_sockaddr_is_v4mapped(const grpc_resolved_address* resolved_addr,
grpc_resolved_address* resolved_addr4_out) {
GPR_ASSERT(resolved_addr != resolved_addr4_out);
CHECK(resolved_addr != resolved_addr4_out);
const grpc_sockaddr* addr =
reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
grpc_sockaddr_in* addr4_out =
@ -140,7 +142,7 @@ int grpc_sockaddr_is_v4mapped(const grpc_resolved_address* resolved_addr,
int grpc_sockaddr_to_v4mapped(const grpc_resolved_address* resolved_addr,
grpc_resolved_address* resolved_addr6_out) {
GPR_ASSERT(resolved_addr != resolved_addr6_out);
CHECK(resolved_addr != resolved_addr6_out);
const grpc_sockaddr* addr =
reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
grpc_sockaddr_in6* addr6_out =
@ -203,7 +205,8 @@ void grpc_sockaddr_make_wildcard4(int port,
grpc_resolved_address* resolved_wild_out) {
grpc_sockaddr_in* wild_out =
reinterpret_cast<grpc_sockaddr_in*>(resolved_wild_out->addr);
GPR_ASSERT(port >= 0 && port < 65536);
CHECK(port >= 0);
CHECK(port < 65536);
memset(resolved_wild_out, 0, sizeof(*resolved_wild_out));
wild_out->sin_family = GRPC_AF_INET;
wild_out->sin_port = grpc_htons(static_cast<uint16_t>(port));
@ -214,7 +217,8 @@ void grpc_sockaddr_make_wildcard6(int port,
grpc_resolved_address* resolved_wild_out) {
grpc_sockaddr_in6* wild_out =
reinterpret_cast<grpc_sockaddr_in6*>(resolved_wild_out->addr);
GPR_ASSERT(port >= 0 && port < 65536);
CHECK(port >= 0);
CHECK(port < 65536);
memset(resolved_wild_out, 0, sizeof(*resolved_wild_out));
wild_out->sin6_family = GRPC_AF_INET6;
wild_out->sin6_port = grpc_htons(static_cast<uint16_t>(port));
@ -378,12 +382,14 @@ int grpc_sockaddr_set_port(grpc_resolved_address* resolved_addr, int port) {
grpc_sockaddr* addr = reinterpret_cast<grpc_sockaddr*>(resolved_addr->addr);
switch (addr->sa_family) {
case GRPC_AF_INET:
GPR_ASSERT(port >= 0 && port < 65536);
CHECK(port >= 0);
CHECK(port < 65536);
(reinterpret_cast<grpc_sockaddr_in*>(addr))->sin_port =
grpc_htons(static_cast<uint16_t>(port));
return 1;
case GRPC_AF_INET6:
GPR_ASSERT(port >= 0 && port < 65536);
CHECK(port >= 0);
CHECK(port < 65536);
(reinterpret_cast<grpc_sockaddr_in6*>(addr))->sin6_port =
grpc_htons(static_cast<uint16_t>(port));
return 1;
@ -437,7 +443,7 @@ void grpc_sockaddr_mask_bits(grpc_resolved_address* address,
// We cannot use s6_addr32 since it is not defined on all platforms that we
// need it on.
uint32_t address_parts[4];
GPR_ASSERT(sizeof(addr6->sin6_addr) == sizeof(address_parts));
CHECK(sizeof(addr6->sin6_addr) == sizeof(address_parts));
memcpy(address_parts, &addr6->sin6_addr, sizeof(grpc_in6_addr));
if (mask_bits <= 32) {
uint32_t mask_ip_addr = (~(uint32_t{0})) << (32 - mask_bits);

@ -22,6 +22,8 @@
#include <utility>
#include <vector>
#include "absl/log/check.h"
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
@ -76,7 +78,7 @@ class DelegatingClientCallTracer : public ClientCallTracer {
explicit DelegatingClientCallAttemptTracer(
std::vector<CallAttemptTracer*> tracers)
: tracers_(std::move(tracers)) {
GPR_DEBUG_ASSERT(!tracers_.empty());
DCHECK(!tracers_.empty());
}
~DelegatingClientCallAttemptTracer() override {}
void RecordSendInitialMetadata(
@ -176,7 +178,7 @@ class DelegatingClientCallTracer : public ClientCallTracer {
attempt_tracers.reserve(tracers_.size());
for (auto* tracer : tracers_) {
auto* attempt_tracer = tracer->StartNewAttempt(is_transparent_retry);
GPR_DEBUG_ASSERT(attempt_tracer != nullptr);
DCHECK_NE(attempt_tracer, nullptr);
attempt_tracers.push_back(attempt_tracer);
}
return GetContext<Arena>()->ManagedNew<DelegatingClientCallAttemptTracer>(
@ -328,9 +330,8 @@ void AddClientCallTracerToContext(grpc_call_context_element* call_context,
void AddServerCallTracerToContext(grpc_call_context_element* call_context,
ServerCallTracer* tracer) {
GPR_DEBUG_ASSERT(
call_context[GRPC_CONTEXT_CALL_TRACER].value ==
call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
DCHECK(call_context[GRPC_CONTEXT_CALL_TRACER].value ==
call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
if (call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value ==
nullptr) {
// This is the first call tracer. Set it directly.

@ -28,6 +28,7 @@
#include <string>
#include <vector>
#include "absl/log/check.h"
#include "absl/strings/match.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
@ -427,7 +428,7 @@ grpc_channel_args* grpc_channel_args_copy_and_add_and_remove(
for (size_t i = 0; i < num_to_add; ++i) {
dst->args[dst_idx++] = copy_arg(&to_add[i]);
}
GPR_ASSERT(dst_idx == dst->num_args);
CHECK(dst_idx == dst->num_args);
return dst;
}
@ -699,7 +700,7 @@ grpc_channel_args_client_channel_creation_mutator g_mutator = nullptr;
void grpc_channel_args_set_client_channel_creation_mutator(
grpc_channel_args_client_channel_creation_mutator cb) {
GPR_DEBUG_ASSERT(g_mutator == nullptr);
DCHECK_EQ(g_mutator, nullptr);
g_mutator = cb;
}
grpc_channel_args_client_channel_creation_mutator

@ -23,6 +23,8 @@
#include <memory>
#include <utility>
#include "absl/log/check.h"
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
@ -67,8 +69,8 @@ size_t grpc_channel_stack_size(const grpc_channel_filter** filters,
sizeof(grpc_channel_element));
size_t i;
GPR_ASSERT((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0 &&
"GPR_MAX_ALIGNMENT must be a power of two");
CHECK((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0)
<< "GPR_MAX_ALIGNMENT must be a power of two";
// add the size for each filter
for (i = 0; i < filter_count; i++) {
@ -167,9 +169,9 @@ grpc_error_handle grpc_channel_stack_init(
call_size += GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_call_data);
}
GPR_ASSERT(user_data > (char*)stack);
GPR_ASSERT((uintptr_t)(user_data - (char*)stack) ==
grpc_channel_stack_size(filters, filter_count));
CHECK(user_data > (char*)stack);
CHECK((uintptr_t)(user_data - (char*)stack) ==
grpc_channel_stack_size(filters, filter_count));
stack->call_stack_size = call_size;
return first_error;

@ -26,6 +26,7 @@
#include <type_traits>
#include <utility>
#include "absl/log/check.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/types/optional.h"
@ -224,7 +225,7 @@ static void connected_channel_destroy_call_elem(
static grpc_error_handle connected_channel_init_channel_elem(
grpc_channel_element* elem, grpc_channel_element_args* args) {
channel_data* cd = static_cast<channel_data*>(elem->channel_data);
GPR_ASSERT(args->is_last);
CHECK(args->is_last);
cd->transport = args->channel_args.GetObject<grpc_core::Transport>();
return absl::OkStatus();
}

@ -29,9 +29,12 @@
/// This enum represents the indexes into the array, where each index
/// contains a different type of value.
typedef enum {
/// grpc_call* associated with this context.
GRPC_CONTEXT_CALL = 0,
/// Value is either a \a grpc_client_security_context or a
/// \a grpc_server_security_context.
GRPC_CONTEXT_SECURITY = 0,
GRPC_CONTEXT_SECURITY,
/// Value is a \a census_context.
GRPC_CONTEXT_TRACING,
@ -68,10 +71,35 @@ struct grpc_call_context_element {
};
namespace grpc_core {
class Call;
// Bind the legacy context array into the new style structure
// TODO(ctiller): remove as we migrate these contexts to the new system.
template <>
struct ContextType<grpc_call_context_element> {};
// Also as a transition step allow exposing a GetContext<T> that can peek into
// the legacy context array.
namespace promise_detail {
template <typename T>
struct OldStyleContext;
template <>
struct OldStyleContext<Call> {
static constexpr grpc_context_index kIndex = GRPC_CONTEXT_CALL;
};
template <typename T>
class Context<T, absl::void_t<decltype(OldStyleContext<T>::kIndex)>> {
public:
static T* get() {
return static_cast<T*>(
GetContext<grpc_call_context_element>()[OldStyleContext<T>::kIndex]
.value);
}
};
} // namespace promise_detail
} // namespace grpc_core
#endif // GRPC_SRC_CORE_LIB_CHANNEL_CONTEXT_H

@ -16,6 +16,8 @@
#include <memory>
#include "absl/log/check.h"
#include <grpc/support/port_platform.h>
#include "src/core/lib/gprpp/crash.h"
@ -46,7 +48,7 @@ GlobalInstrumentsRegistry::RegisterUInt64Counter(
}
}
uint32_t index = instruments.size();
GPR_ASSERT(index < std::numeric_limits<uint32_t>::max());
CHECK_LT(index, std::numeric_limits<uint32_t>::max());
GlobalInstrumentDescriptor descriptor;
descriptor.value_type = ValueType::kUInt64;
descriptor.instrument_type = InstrumentType::kCounter;
@ -78,7 +80,7 @@ GlobalInstrumentsRegistry::RegisterDoubleCounter(
}
}
uint32_t index = instruments.size();
GPR_ASSERT(index < std::numeric_limits<uint32_t>::max());
CHECK_LT(index, std::numeric_limits<uint32_t>::max());
GlobalInstrumentDescriptor descriptor;
descriptor.value_type = ValueType::kDouble;
descriptor.instrument_type = InstrumentType::kCounter;
@ -110,7 +112,7 @@ GlobalInstrumentsRegistry::RegisterUInt64Histogram(
}
}
uint32_t index = instruments.size();
GPR_ASSERT(index < std::numeric_limits<uint32_t>::max());
CHECK_LT(index, std::numeric_limits<uint32_t>::max());
GlobalInstrumentDescriptor descriptor;
descriptor.value_type = ValueType::kUInt64;
descriptor.instrument_type = InstrumentType::kHistogram;
@ -142,7 +144,7 @@ GlobalInstrumentsRegistry::RegisterDoubleHistogram(
}
}
uint32_t index = instruments.size();
GPR_ASSERT(index < std::numeric_limits<uint32_t>::max());
CHECK_LT(index, std::numeric_limits<uint32_t>::max());
GlobalInstrumentDescriptor descriptor;
descriptor.value_type = ValueType::kDouble;
descriptor.instrument_type = InstrumentType::kHistogram;
@ -174,7 +176,7 @@ GlobalInstrumentsRegistry::RegisterCallbackInt64Gauge(
}
}
uint32_t index = instruments.size();
GPR_ASSERT(index < std::numeric_limits<uint32_t>::max());
CHECK_LT(index, std::numeric_limits<uint32_t>::max());
GlobalInstrumentDescriptor descriptor;
descriptor.value_type = ValueType::kInt64;
descriptor.instrument_type = InstrumentType::kCallbackGauge;
@ -206,7 +208,7 @@ GlobalInstrumentsRegistry::RegisterCallbackDoubleGauge(
}
}
uint32_t index = instruments.size();
GPR_ASSERT(index < std::numeric_limits<uint32_t>::max());
CHECK_LT(index, std::numeric_limits<uint32_t>::max());
GlobalInstrumentDescriptor descriptor;
descriptor.value_type = ValueType::kDouble;
descriptor.instrument_type = InstrumentType::kCallbackGauge;

@ -22,6 +22,7 @@
#include "absl/base/attributes.h"
#include "absl/functional/function_ref.h"
#include "absl/log/check.h"
#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
@ -180,7 +181,7 @@ BaseCallData::CapturedBatch::~CapturedBatch() {
uintptr_t& refcnt = *RefCountField(batch_);
if (refcnt == 0) return; // refcnt==0 ==> cancelled
--refcnt;
GPR_ASSERT(refcnt != 0);
CHECK_NE(refcnt, 0u);
}
BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs)
@ -211,7 +212,7 @@ BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
auto* batch = std::exchange(batch_, nullptr);
GPR_ASSERT(batch != nullptr);
CHECK_NE(batch, nullptr);
uintptr_t& refcnt = *RefCountField(batch);
if (refcnt == 0) {
// refcnt==0 ==> cancelled
@ -228,7 +229,7 @@ void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
auto* batch = std::exchange(batch_, nullptr);
GPR_ASSERT(batch != nullptr);
CHECK_NE(batch, nullptr);
uintptr_t& refcnt = *RefCountField(batch);
if (refcnt == 0) return; // refcnt==0 ==> cancelled
if (--refcnt == 0) {
@ -239,7 +240,7 @@ void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
Flusher* releaser) {
auto* batch = std::exchange(batch_, nullptr);
GPR_ASSERT(batch != nullptr);
CHECK_NE(batch, nullptr);
uintptr_t& refcnt = *RefCountField(batch);
if (refcnt == 0) {
// refcnt==0 ==> cancelled
@ -369,7 +370,7 @@ void BaseCallData::SendMessage::GotPipe(T* pipe_end) {
gpr_log(GPR_INFO, "%s SendMessage.GotPipe st=%s", base_->LogTag().c_str(),
StateString(state_));
}
GPR_ASSERT(pipe_end != nullptr);
CHECK_NE(pipe_end, nullptr);
switch (state_) {
case State::kInitial:
state_ = State::kIdle;
@ -518,7 +519,7 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
}
ABSL_FALLTHROUGH_INTENDED;
case State::kPushedToPipe: {
GPR_ASSERT(push_.has_value());
CHECK(push_.has_value());
auto r_push = (*push_)();
if (auto* p = r_push.value_if_ready()) {
if (grpc_trace_channel.enabled()) {
@ -527,12 +528,12 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
base_->LogTag().c_str(), *p ? "true" : "false");
}
// We haven't pulled through yet, so this certainly shouldn't succeed.
GPR_ASSERT(!*p);
CHECK(!*p);
state_ = State::kCancelled;
batch_.CancelWith(absl::CancelledError(), flusher);
break;
}
GPR_ASSERT(next_.has_value());
CHECK(next_.has_value());
auto r_next = (*next_)();
if (auto* p = r_next.value_if_ready()) {
if (grpc_trace_channel.enabled()) {
@ -851,12 +852,12 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
completed_status_, "recv_message");
break;
}
GPR_ASSERT(state_ == State::kPushedToPipe ||
state_ == State::kCompletedWhilePushedToPipe);
CHECK(state_ == State::kPushedToPipe ||
state_ == State::kCompletedWhilePushedToPipe);
ABSL_FALLTHROUGH_INTENDED;
case State::kCompletedWhilePushedToPipe:
case State::kPushedToPipe: {
GPR_ASSERT(push_.has_value());
CHECK(push_.has_value());
auto r_push = (*push_)();
if (auto* p = r_push.value_if_ready()) {
if (grpc_trace_channel.enabled()) {
@ -865,11 +866,11 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
base_->LogTag().c_str(), *p ? "true" : "false");
}
// We haven't pulled through yet, so this certainly shouldn't succeed.
GPR_ASSERT(!*p);
CHECK(!*p);
state_ = State::kCancelled;
break;
}
GPR_ASSERT(next_.has_value());
CHECK(next_.has_value());
auto r_next = (*next_)();
if (auto* p = r_next.value_if_ready()) {
next_.reset();
@ -907,7 +908,7 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
ABSL_FALLTHROUGH_INTENDED;
case State::kCompletedWhilePulledFromPipe:
case State::kPulledFromPipe: {
GPR_ASSERT(push_.has_value());
CHECK(push_.has_value());
if ((*push_)().ready()) {
if (grpc_trace_channel.enabled()) {
gpr_log(GPR_INFO,
@ -1013,7 +1014,7 @@ class ClientCallData::PollContext {
public:
explicit PollContext(ClientCallData* self, Flusher* flusher)
: self_(self), flusher_(flusher) {
GPR_ASSERT(self_->poll_ctx_ == nullptr);
CHECK_EQ(self_->poll_ctx_, nullptr);
self_->poll_ctx_ = this;
scoped_activity_.Init(self_);
@ -1024,12 +1025,12 @@ class ClientCallData::PollContext {
PollContext& operator=(const PollContext&) = delete;
void Run() {
GPR_DEBUG_ASSERT(HasContext<Arena>());
DCHECK(HasContext<Arena>());
if (grpc_trace_channel.enabled()) {
gpr_log(GPR_INFO, "%s ClientCallData.PollContext.Run %s",
self_->LogTag().c_str(), self_->DebugString().c_str());
}
GPR_ASSERT(have_scoped_activity_);
CHECK(have_scoped_activity_);
repoll_ = false;
if (self_->send_message() != nullptr) {
self_->send_message()->WakeInsideCombiner(flusher_, true);
@ -1064,10 +1065,8 @@ class ClientCallData::PollContext {
case RecvInitialMetadata::kCompleteAndGotPipe:
self_->recv_initial_metadata_->state =
RecvInitialMetadata::kCompleteAndPushedToPipe;
GPR_ASSERT(
!self_->recv_initial_metadata_->metadata_push_.has_value());
GPR_ASSERT(
!self_->recv_initial_metadata_->metadata_next_.has_value());
CHECK(!self_->recv_initial_metadata_->metadata_push_.has_value());
CHECK(!self_->recv_initial_metadata_->metadata_next_.has_value());
self_->recv_initial_metadata_->metadata_push_.emplace(
self_->recv_initial_metadata_->server_initial_metadata_publisher
->Push(ServerMetadataHandle(
@ -1078,7 +1077,7 @@ class ClientCallData::PollContext {
self_->server_initial_metadata_pipe()->receiver.Next());
ABSL_FALLTHROUGH_INTENDED;
case RecvInitialMetadata::kCompleteAndPushedToPipe: {
GPR_ASSERT(self_->recv_initial_metadata_->metadata_next_.has_value());
CHECK(self_->recv_initial_metadata_->metadata_next_.has_value());
Poll<NextResult<ServerMetadataHandle>> p =
(*self_->recv_initial_metadata_->metadata_next_)();
if (NextResult<ServerMetadataHandle>* nr = p.value_if_ready()) {
@ -1172,7 +1171,7 @@ class ClientCallData::PollContext {
}
} else {
self_->cancelled_error_ = StatusFromMetadata(*md);
GPR_ASSERT(!self_->cancelled_error_.ok());
CHECK(!self_->cancelled_error_.ok());
if (self_->recv_initial_metadata_ != nullptr) {
switch (self_->recv_initial_metadata_->state) {
case RecvInitialMetadata::kInitial:
@ -1210,7 +1209,7 @@ class ClientCallData::PollContext {
self_->send_initial_metadata_batch_.CancelWith(
self_->cancelled_error_, flusher_);
} else {
GPR_ASSERT(
CHECK(
self_->recv_trailing_state_ == RecvTrailingState::kInitial ||
self_->recv_trailing_state_ == RecvTrailingState::kForwarded);
self_->call_combiner()->Cancel(self_->cancelled_error_);
@ -1314,7 +1313,7 @@ ClientCallData::ClientCallData(grpc_call_element* elem,
ClientCallData::~ClientCallData() {
ScopedActivity scoped_activity(this);
GPR_ASSERT(poll_ctx_ == nullptr);
CHECK_EQ(poll_ctx_, nullptr);
if (recv_initial_metadata_ != nullptr) {
recv_initial_metadata_->~RecvInitialMetadata();
}
@ -1328,7 +1327,7 @@ std::string ClientCallData::DebugTag() const {
// Activity implementation.
void ClientCallData::ForceImmediateRepoll(WakeupMask) {
GPR_ASSERT(poll_ctx_ != nullptr);
CHECK_NE(poll_ctx_, nullptr);
poll_ctx_->Repoll();
}
@ -1399,10 +1398,9 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
// If this is a cancel stream, cancel anything we have pending and propagate
// the cancellation.
if (batch->cancel_stream) {
GPR_ASSERT(!batch->send_initial_metadata &&
!batch->send_trailing_metadata && !batch->send_message &&
!batch->recv_initial_metadata && !batch->recv_message &&
!batch->recv_trailing_metadata);
CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
!batch->send_message && !batch->recv_initial_metadata &&
!batch->recv_message && !batch->recv_trailing_metadata);
PollContext poll_ctx(this, &flusher);
Cancel(batch->payload->cancel_stream.cancel_error, &flusher);
poll_ctx.Run();
@ -1473,12 +1471,12 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
batch.CancelWith(cancelled_error_, &flusher);
} else {
// Otherwise, we should not have seen a send_initial_metadata op yet.
GPR_ASSERT(send_initial_state_ == SendInitialState::kInitial);
CHECK(send_initial_state_ == SendInitialState::kInitial);
// Mark ourselves as queued.
send_initial_state_ = SendInitialState::kQueued;
if (batch->recv_trailing_metadata) {
// If there's a recv_trailing_metadata op, we queue that too.
GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial);
CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
recv_trailing_state_ = RecvTrailingState::kQueued;
}
// This is the queuing!
@ -1493,7 +1491,7 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
batch.CancelWith(cancelled_error_, &flusher);
} else {
GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial);
CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
recv_trailing_state_ = RecvTrailingState::kForwarded;
HookRecvTrailingMetadata(batch);
}
@ -1571,7 +1569,7 @@ void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) {
// Begin running the promise - which will ultimately take some initial
// metadata and return some trailing metadata.
void ClientCallData::StartPromise(Flusher* flusher) {
GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued);
CHECK(send_initial_state_ == SendInitialState::kQueued);
ChannelFilter* filter = promise_filter_detail::ChannelFilterFromElem(elem());
// Construct the promise.
@ -1684,8 +1682,8 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
gpr_log(GPR_INFO, "%s ClientCallData.MakeNextPromise %s", LogTag().c_str(),
DebugString().c_str());
}
GPR_ASSERT(poll_ctx_ != nullptr);
GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued);
CHECK_NE(poll_ctx_, nullptr);
CHECK(send_initial_state_ == SendInitialState::kQueued);
send_initial_metadata_batch_->payload->send_initial_metadata
.send_initial_metadata = call_args.client_initial_metadata.get();
if (recv_initial_metadata_ != nullptr) {
@ -1693,7 +1691,7 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
// It might be the one we passed in - in which case we know this filter
// only wants to examine the metadata, or it might be a new instance, in
// which case we know the filter wants to mutate.
GPR_ASSERT(call_args.server_initial_metadata != nullptr);
CHECK_NE(call_args.server_initial_metadata, nullptr);
recv_initial_metadata_->server_initial_metadata_publisher =
call_args.server_initial_metadata;
switch (recv_initial_metadata_->state) {
@ -1722,17 +1720,17 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
recv_initial_metadata_->state))); // unreachable
}
} else {
GPR_ASSERT(call_args.server_initial_metadata == nullptr);
CHECK_EQ(call_args.server_initial_metadata, nullptr);
}
if (send_message() != nullptr) {
send_message()->GotPipe(call_args.client_to_server_messages);
} else {
GPR_ASSERT(call_args.client_to_server_messages == nullptr);
CHECK_EQ(call_args.client_to_server_messages, nullptr);
}
if (receive_message() != nullptr) {
receive_message()->GotPipe(call_args.server_to_client_messages);
} else {
GPR_ASSERT(call_args.server_to_client_messages == nullptr);
CHECK_EQ(call_args.server_to_client_messages, nullptr);
}
return ArenaPromise<ServerMetadataHandle>(
[this]() { return PollTrailingMetadata(); });
@ -1747,10 +1745,10 @@ Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() {
gpr_log(GPR_INFO, "%s ClientCallData.PollTrailingMetadata %s",
LogTag().c_str(), DebugString().c_str());
}
GPR_ASSERT(poll_ctx_ != nullptr);
CHECK_NE(poll_ctx_, nullptr);
if (send_initial_state_ == SendInitialState::kQueued) {
// First poll: pass the send_initial_metadata op down the stack.
GPR_ASSERT(send_initial_metadata_batch_.is_captured());
CHECK(send_initial_metadata_batch_.is_captured());
send_initial_state_ = SendInitialState::kForwarded;
if (recv_trailing_state_ == RecvTrailingState::kQueued) {
// (and the recv_trailing_metadata op if it's part of the queuing)
@ -1820,7 +1818,7 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
SetStatusFromError(recv_trailing_metadata_, error);
}
// Record that we've got the callback.
GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kForwarded);
CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
recv_trailing_state_ = RecvTrailingState::kComplete;
if (receive_message() != nullptr) {
receive_message()->Done(*recv_trailing_metadata_, &flusher);
@ -1908,7 +1906,7 @@ class ServerCallData::PollContext {
created_.line(), "; Old: ", self_->poll_ctx_->created_.file(), ":",
self_->poll_ctx_->created_.line()));
}
GPR_ASSERT(self_->poll_ctx_ == nullptr);
CHECK_EQ(self_->poll_ctx_, nullptr);
self_->poll_ctx_ = this;
scoped_activity_.Init(self_);
have_scoped_activity_ = true;
@ -2016,7 +2014,7 @@ ServerCallData::~ServerCallData() {
if (send_initial_metadata_ != nullptr) {
send_initial_metadata_->~SendInitialMetadata();
}
GPR_ASSERT(poll_ctx_ == nullptr);
CHECK_EQ(poll_ctx_, nullptr);
}
std::string ServerCallData::DebugTag() const {
@ -2025,7 +2023,7 @@ std::string ServerCallData::DebugTag() const {
// Activity implementation.
void ServerCallData::ForceImmediateRepoll(WakeupMask) {
GPR_ASSERT(poll_ctx_ != nullptr);
CHECK_NE(poll_ctx_, nullptr);
poll_ctx_->Repoll();
}
@ -2045,10 +2043,9 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
// If this is a cancel stream, cancel anything we have pending and
// propagate the cancellation.
if (batch->cancel_stream) {
GPR_ASSERT(!batch->send_initial_metadata &&
!batch->send_trailing_metadata && !batch->send_message &&
!batch->recv_initial_metadata && !batch->recv_message &&
!batch->recv_trailing_metadata);
CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
!batch->send_message && !batch->recv_initial_metadata &&
!batch->recv_message && !batch->recv_trailing_metadata);
PollContext poll_ctx(this, &flusher);
Completed(batch->payload->cancel_stream.cancel_error,
batch->payload->cancel_stream.tarpit, &flusher);
@ -2063,11 +2060,11 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
// recv_initial_metadata: we hook the response of this so we can start the
// promise at an appropriate time.
if (batch->recv_initial_metadata) {
GPR_ASSERT(!batch->send_initial_metadata &&
!batch->send_trailing_metadata && !batch->send_message &&
!batch->recv_message && !batch->recv_trailing_metadata);
CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
!batch->send_message && !batch->recv_message &&
!batch->recv_trailing_metadata);
// Otherwise, we should not have seen a send_initial_metadata op yet.
GPR_ASSERT(recv_initial_state_ == RecvInitialState::kInitial);
CHECK(recv_initial_state_ == RecvInitialState::kInitial);
// Hook the callback so we know when to start the promise.
recv_initial_metadata_ =
batch->payload->recv_initial_metadata.recv_initial_metadata;
@ -2249,14 +2246,13 @@ void ServerCallData::Completed(grpc_error_handle error,
// - return a wrapper around PollTrailingMetadata as the promise.
ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
CallArgs call_args) {
GPR_ASSERT(recv_initial_state_ == RecvInitialState::kComplete);
GPR_ASSERT(std::move(call_args.client_initial_metadata).get() ==
recv_initial_metadata_);
CHECK(recv_initial_state_ == RecvInitialState::kComplete);
CHECK(std::move(call_args.client_initial_metadata).get() ==
recv_initial_metadata_);
forward_recv_initial_metadata_callback_ = true;
if (send_initial_metadata_ != nullptr) {
GPR_ASSERT(send_initial_metadata_->server_initial_metadata_publisher ==
nullptr);
GPR_ASSERT(call_args.server_initial_metadata != nullptr);
CHECK(send_initial_metadata_->server_initial_metadata_publisher == nullptr);
CHECK_NE(call_args.server_initial_metadata, nullptr);
send_initial_metadata_->server_initial_metadata_publisher =
call_args.server_initial_metadata;
switch (send_initial_metadata_->state) {
@ -2279,17 +2275,17 @@ ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
break;
}
} else {
GPR_ASSERT(call_args.server_initial_metadata == nullptr);
CHECK_EQ(call_args.server_initial_metadata, nullptr);
}
if (send_message() != nullptr) {
send_message()->GotPipe(call_args.server_to_client_messages);
} else {
GPR_ASSERT(call_args.server_to_client_messages == nullptr);
CHECK_EQ(call_args.server_to_client_messages, nullptr);
}
if (receive_message() != nullptr) {
receive_message()->GotPipe(call_args.client_to_server_messages);
} else {
GPR_ASSERT(call_args.client_to_server_messages == nullptr);
CHECK_EQ(call_args.client_to_server_messages, nullptr);
}
return ArenaPromise<ServerMetadataHandle>(
[this]() { return PollTrailingMetadata(); });
@ -2354,7 +2350,7 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
gpr_log(GPR_INFO, "%s: RecvInitialMetadataReady %s", LogTag().c_str(),
error.ToString().c_str());
}
GPR_ASSERT(recv_initial_state_ == RecvInitialState::kForwarded);
CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
// If there was an error we just propagate that through
if (!error.ok()) {
recv_initial_state_ = RecvInitialState::kResponded;
@ -2425,8 +2421,8 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
SendInitialMetadata::kQueuedAndGotPipe) {
send_initial_metadata_->state =
SendInitialMetadata::kQueuedAndPushedToPipe;
GPR_ASSERT(!send_initial_metadata_->metadata_push_.has_value());
GPR_ASSERT(!send_initial_metadata_->metadata_next_.has_value());
CHECK(!send_initial_metadata_->metadata_push_.has_value());
CHECK(!send_initial_metadata_->metadata_next_.has_value());
send_initial_metadata_->metadata_push_.emplace(
send_initial_metadata_->server_initial_metadata_publisher->Push(
ServerMetadataHandle(
@ -2508,7 +2504,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
if (send_initial_metadata_ != nullptr &&
send_initial_metadata_->state ==
SendInitialMetadata::kQueuedAndPushedToPipe) {
GPR_ASSERT(send_initial_metadata_->metadata_next_.has_value());
CHECK(send_initial_metadata_->metadata_next_.has_value());
auto p = (*send_initial_metadata_->metadata_next_)();
if (grpc_trace_channel.enabled()) {
gpr_log(GPR_INFO,
@ -2557,7 +2553,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
StateString(send_trailing_state_))); // unreachable
break;
case SendTrailingState::kInitial: {
GPR_ASSERT(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
Completed(StatusFromMetadata(*md), md->get(GrpcTarPit()).has_value(),
flusher);
} break;

@ -31,6 +31,7 @@
#include "absl/container/inlined_vector.h"
#include "absl/functional/function_ref.h"
#include "absl/log/check.h"
#include "absl/meta/type_traits.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
@ -352,7 +353,7 @@ auto MapResult(const NoInterceptor*, Promise x, void*) {
template <typename Promise, typename Derived>
auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
FilterCallData<Derived>* call_data) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
return Map(std::move(x), [call_data](ServerMetadataHandle md) {
auto status = call_data->call.OnServerTrailingMetadata(*md);
if (!status.ok()) return ServerMetadataFromStatus(status);
@ -363,7 +364,7 @@ auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
template <typename Promise, typename Derived>
auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
FilterCallData<Derived>* call_data) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
return Map(std::move(x), [call_data](ServerMetadataHandle md) {
call_data->call.OnServerTrailingMetadata(*md);
return md;
@ -373,7 +374,7 @@ auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
template <typename Promise, typename Derived>
auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x,
FilterCallData<Derived>* call_data) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerTrailingMetadata);
DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
return Map(std::move(x), [call_data](ServerMetadataHandle md) {
call_data->call.OnServerTrailingMetadata(*md, call_data->channel);
return md;
@ -486,7 +487,7 @@ template <typename Interceptor, typename Derived>
auto RunCall(Interceptor interceptor, CallArgs call_args,
NextPromiseFactory next_promise_factory,
FilterCallData<Derived>* call_data) {
GPR_DEBUG_ASSERT(interceptor == &Derived::Call::OnClientInitialMetadata);
DCHECK(interceptor == &Derived::Call::OnClientInitialMetadata);
return RunCallImpl<Interceptor, Derived>::Run(
std::move(call_args), std::move(next_promise_factory), call_data);
}
@ -498,7 +499,7 @@ template <typename Derived>
inline void InterceptClientToServerMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_args.client_to_server_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
auto return_md = call_data->call.OnClientToServerMessage(*msg);
@ -513,7 +514,7 @@ template <typename Derived>
inline void InterceptClientToServerMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_args.client_to_server_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
auto return_md =
@ -529,7 +530,7 @@ template <typename Derived>
inline void InterceptClientToServerMessage(
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_args.client_to_server_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
return call_data->call.OnClientToServerMessage(std::move(msg),
@ -541,7 +542,7 @@ template <typename Derived>
inline void InterceptClientToServerMessage(
absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_args.client_to_server_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
auto r = call_data->call.OnClientToServerMessage(std::move(msg),
@ -560,7 +561,7 @@ template <typename Derived>
inline void InterceptClientToServerMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_spine->client_to_server_messages().receiver.InterceptAndMap(
[call, call_spine](MessageHandle msg) -> absl::optional<MessageHandle> {
auto return_md = call->OnClientToServerMessage(*msg);
@ -575,7 +576,7 @@ inline void InterceptClientToServerMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_spine->client_to_server_messages().receiver.InterceptAndMap(
[call, call_spine,
channel](MessageHandle msg) -> absl::optional<MessageHandle> {
@ -591,7 +592,7 @@ inline void InterceptClientToServerMessage(
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_spine->client_to_server_messages().receiver.InterceptAndMap(
[call, channel](MessageHandle msg) {
return call->OnClientToServerMessage(std::move(msg), channel);
@ -603,7 +604,7 @@ inline void InterceptClientToServerMessage(
absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientToServerMessage);
DCHECK(fn == &Derived::Call::OnClientToServerMessage);
call_spine->client_to_server_messages().receiver.InterceptAndMap(
[call, call_spine,
channel](MessageHandle msg) -> absl::optional<MessageHandle> {
@ -622,7 +623,7 @@ template <typename Derived>
inline void InterceptClientInitialMetadata(
void (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call,
Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call](ClientMetadataHandle md) {
call->OnClientInitialMetadata(*md);
@ -635,7 +636,7 @@ inline void InterceptClientInitialMetadata(
void (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call, channel](ClientMetadataHandle md) {
call->OnClientInitialMetadata(*md, channel);
@ -647,7 +648,7 @@ template <typename Derived>
inline void InterceptClientInitialMetadata(
ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md),
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call_spine,
call](ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
@ -664,7 +665,7 @@ inline void InterceptClientInitialMetadata(
Derived* channel),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call_spine, call, channel](
ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
@ -679,7 +680,7 @@ template <typename Derived>
inline void InterceptClientInitialMetadata(
absl::Status (Derived::Call::*fn)(ClientMetadata& md),
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call_spine,
call](ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
@ -696,7 +697,7 @@ inline void InterceptClientInitialMetadata(
absl::Status (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnClientInitialMetadata);
DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call_spine, call, channel](
ClientMetadataHandle md) -> absl::optional<ClientMetadataHandle> {
@ -717,7 +718,7 @@ InterceptClientInitialMetadata(Promise (Derived::Call::*promise_factory)(
ClientMetadata& md, Derived* channel),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(promise_factory == &Derived::Call::OnClientInitialMetadata);
DCHECK(promise_factory == &Derived::Call::OnClientInitialMetadata);
call_spine->client_initial_metadata().receiver.InterceptAndMap(
[call, call_spine, channel](ClientMetadataHandle md) {
ClientMetadata& md_ref = *md;
@ -741,7 +742,7 @@ template <typename Derived>
inline void InterceptServerInitialMetadata(
void (Derived::Call::*fn)(ServerMetadata&),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_args.server_initial_metadata->InterceptAndMap(
[call_data](ServerMetadataHandle md) {
call_data->call.OnServerInitialMetadata(*md);
@ -753,7 +754,7 @@ template <typename Derived>
inline void InterceptServerInitialMetadata(
absl::Status (Derived::Call::*fn)(ServerMetadata&),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_args.server_initial_metadata->InterceptAndMap(
[call_data](
ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
@ -770,7 +771,7 @@ template <typename Derived>
inline void InterceptServerInitialMetadata(
void (Derived::Call::*fn)(ServerMetadata&, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_args.server_initial_metadata->InterceptAndMap(
[call_data](ServerMetadataHandle md) {
call_data->call.OnServerInitialMetadata(*md, call_data->channel);
@ -782,7 +783,7 @@ template <typename Derived>
inline void InterceptServerInitialMetadata(
absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_args.server_initial_metadata->InterceptAndMap(
[call_data](
ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
@ -803,7 +804,7 @@ template <typename Derived>
inline void InterceptServerInitialMetadata(
void (Derived::Call::*fn)(ServerMetadata&), typename Derived::Call* call,
Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_spine->server_initial_metadata().sender.InterceptAndMap(
[call](ServerMetadataHandle md) {
call->OnServerInitialMetadata(*md);
@ -815,7 +816,7 @@ template <typename Derived>
inline void InterceptServerInitialMetadata(
absl::Status (Derived::Call::*fn)(ServerMetadata&),
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_spine->server_initial_metadata().sender.InterceptAndMap(
[call, call_spine](
ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
@ -832,7 +833,7 @@ inline void InterceptServerInitialMetadata(
void (Derived::Call::*fn)(ServerMetadata&, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_spine->server_initial_metadata().sender.InterceptAndMap(
[call, channel](ServerMetadataHandle md) {
call->OnServerInitialMetadata(*md, channel);
@ -845,7 +846,7 @@ inline void InterceptServerInitialMetadata(
absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerInitialMetadata);
DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
call_spine->server_initial_metadata().sender.InterceptAndMap(
[call, call_spine, channel](
ServerMetadataHandle md) -> absl::optional<ServerMetadataHandle> {
@ -864,7 +865,7 @@ template <typename Derived>
inline void InterceptServerToClientMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_args.server_to_client_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
auto return_md = call_data->call.OnServerToClientMessage(*msg);
@ -879,7 +880,7 @@ template <typename Derived>
inline void InterceptServerToClientMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_args.server_to_client_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
auto return_md =
@ -895,7 +896,7 @@ template <typename Derived>
inline void InterceptServerToClientMessage(
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_args.server_to_client_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
return call_data->call.OnServerToClientMessage(std::move(msg),
@ -907,7 +908,7 @@ template <typename Derived>
inline void InterceptServerToClientMessage(
absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
FilterCallData<Derived>* call_data, const CallArgs& call_args) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_args.server_to_client_messages->InterceptAndMap(
[call_data](MessageHandle msg) -> absl::optional<MessageHandle> {
auto r = call_data->call.OnServerToClientMessage(std::move(msg),
@ -926,7 +927,7 @@ template <typename Derived>
inline void InterceptServerToClientMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&),
typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_spine->server_to_client_messages().sender.InterceptAndMap(
[call, call_spine](MessageHandle msg) -> absl::optional<MessageHandle> {
auto return_md = call->OnServerToClientMessage(*msg);
@ -941,7 +942,7 @@ inline void InterceptServerToClientMessage(
ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_spine->server_to_client_messages().sender.InterceptAndMap(
[call, call_spine,
channel](MessageHandle msg) -> absl::optional<MessageHandle> {
@ -957,7 +958,7 @@ inline void InterceptServerToClientMessage(
MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_spine->server_to_client_messages().sender.InterceptAndMap(
[call, channel](MessageHandle msg) {
return call->OnServerToClientMessage(std::move(msg), channel);
@ -969,7 +970,7 @@ inline void InterceptServerToClientMessage(
absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
typename Derived::Call* call, Derived* channel,
PipeBasedCallSpine* call_spine) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnServerToClientMessage);
DCHECK(fn == &Derived::Call::OnServerToClientMessage);
call_spine->server_to_client_messages().sender.InterceptAndMap(
[call, call_spine,
channel](MessageHandle msg) -> absl::optional<MessageHandle> {
@ -1012,7 +1013,7 @@ inline void InterceptFinalize(const NoInterceptor*, void*, void*) {}
template <class Call>
inline void InterceptFinalize(void (Call::*fn)(const grpc_call_final_info*),
void*, Call* call) {
GPR_DEBUG_ASSERT(fn == &Call::OnFinalize);
DCHECK(fn == &Call::OnFinalize);
GetContext<CallFinalization>()->Add(
[call](const grpc_call_final_info* final_info) {
call->OnFinalize(final_info);
@ -1023,7 +1024,7 @@ template <class Derived>
inline void InterceptFinalize(
void (Derived::Call::*fn)(const grpc_call_final_info*, Derived*),
Derived* channel, typename Derived::Call* call) {
GPR_DEBUG_ASSERT(fn == &Derived::Call::OnFinalize);
DCHECK(fn == &Derived::Call::OnFinalize);
GetContext<CallFinalization>()->Add(
[call, channel](const grpc_call_final_info* final_info) {
call->OnFinalize(final_info, channel);
@ -1212,8 +1213,7 @@ class BaseCallData : public Activity, private Wakeable {
~BaseCallData() override;
void set_pollent(grpc_polling_entity* pollent) {
GPR_ASSERT(nullptr ==
pollent_.exchange(pollent, std::memory_order_release));
CHECK(nullptr == pollent_.exchange(pollent, std::memory_order_release));
}
// Activity implementation (partial).
@ -1259,7 +1259,7 @@ class BaseCallData : public Activity, private Wakeable {
~Flusher();
void Resume(grpc_transport_stream_op_batch* batch) {
GPR_ASSERT(!call_->is_last());
CHECK(!call_->is_last());
if (batch->HasOp()) {
release_.push_back(batch);
} else if (batch->on_complete != nullptr) {
@ -1338,7 +1338,7 @@ class BaseCallData : public Activity, private Wakeable {
PipeSender<MessageHandle>* original_sender() override { abort(); }
void GotPipe(PipeReceiver<MessageHandle>* receiver) override {
GPR_ASSERT(receiver_ == nullptr);
CHECK_EQ(receiver_, nullptr);
receiver_ = receiver;
}
@ -1346,7 +1346,7 @@ class BaseCallData : public Activity, private Wakeable {
PipeSender<MessageHandle>* Push() override { return &pipe_.sender; }
PipeReceiver<MessageHandle>* Pull() override {
GPR_ASSERT(receiver_ != nullptr);
CHECK_NE(receiver_, nullptr);
return receiver_;
}
@ -1367,12 +1367,12 @@ class BaseCallData : public Activity, private Wakeable {
void GotPipe(PipeReceiver<MessageHandle>*) override { abort(); }
void GotPipe(PipeSender<MessageHandle>* sender) override {
GPR_ASSERT(sender_ == nullptr);
CHECK_EQ(sender_, nullptr);
sender_ = sender;
}
PipeSender<MessageHandle>* Push() override {
GPR_ASSERT(sender_ != nullptr);
CHECK_NE(sender_, nullptr);
return sender_;
}
PipeReceiver<MessageHandle>* Pull() override { return &pipe_.receiver; }
@ -1890,7 +1890,7 @@ struct CallDataFilterWithFlagsMethods {
if ((kFlags & kFilterIsLast) != 0) {
ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
} else {
GPR_ASSERT(then_schedule_closure == nullptr);
CHECK_EQ(then_schedule_closure, nullptr);
}
}
};
@ -1927,7 +1927,7 @@ template <typename F, uint8_t kFlags>
struct ChannelFilterWithFlagsMethods {
static absl::Status InitChannelElem(grpc_channel_element* elem,
grpc_channel_element_args* args) {
GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0));
CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0));
auto status = F::Create(args->channel_args,
ChannelFilter::Args(args->channel_stack, elem));
if (!status.ok()) {

@ -23,6 +23,7 @@
#include <string>
#include "absl/container/inlined_vector.h"
#include "absl/log/check.h"
#include "absl/strings/ascii.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_split.h"
@ -120,7 +121,7 @@ CompressionAlgorithmSet::CompressionAlgorithmForLevel(
return GRPC_COMPRESS_NONE;
}
GPR_ASSERT(level > 0);
CHECK_GT(level, 0);
// Establish a "ranking" or compression algorithms in increasing order of
// compression.

@ -23,6 +23,8 @@
#include <zconf.h>
#include <zlib.h>
#include "absl/log/check.h"
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@ -41,20 +43,20 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
grpc_slice outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE);
const uInt uint_max = ~uInt{0};
GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
zs->avail_out = static_cast<uInt> GRPC_SLICE_LENGTH(outbuf);
zs->next_out = GRPC_SLICE_START_PTR(outbuf);
flush = Z_NO_FLUSH;
for (i = 0; i < input->count; i++) {
if (i == input->count - 1) flush = Z_FINISH;
GPR_ASSERT(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
CHECK(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
zs->avail_in = static_cast<uInt> GRPC_SLICE_LENGTH(input->slices[i]);
zs->next_in = GRPC_SLICE_START_PTR(input->slices[i]);
do {
if (zs->avail_out == 0) {
grpc_slice_buffer_add_indexed(output, outbuf);
outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE);
GPR_ASSERT(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
zs->avail_out = static_cast<uInt> GRPC_SLICE_LENGTH(outbuf);
zs->next_out = GRPC_SLICE_START_PTR(outbuf);
}
@ -74,7 +76,7 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
goto error;
}
GPR_ASSERT(outbuf.refcount);
CHECK(outbuf.refcount);
outbuf.data.refcounted.length -= zs->avail_out;
grpc_slice_buffer_add_indexed(output, outbuf);
@ -104,7 +106,7 @@ static int zlib_compress(grpc_slice_buffer* input, grpc_slice_buffer* output,
zs.zfree = zfree_gpr;
r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0),
8, Z_DEFAULT_STRATEGY);
GPR_ASSERT(r == Z_OK);
CHECK(r == Z_OK);
r = zlib_body(&zs, input, output, deflate) && output->length < input->length;
if (!r) {
for (i = count_before; i < output->count; i++) {
@ -128,7 +130,7 @@ static int zlib_decompress(grpc_slice_buffer* input, grpc_slice_buffer* output,
zs.zalloc = zalloc_gpr;
zs.zfree = zfree_gpr;
r = inflateInit2(&zs, 15 | (gzip ? 16 : 0));
GPR_ASSERT(r == Z_OK);
CHECK(r == Z_OK);
r = zlib_body(&zs, input, output, inflate);
if (!r) {
for (i = count_before; i < output->count; i++) {

@ -18,6 +18,8 @@
#include <utility>
#include <vector>
#include "absl/log/check.h"
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
@ -49,18 +51,18 @@ CoreConfiguration::CoreConfiguration(Builder* builder)
void CoreConfiguration::RegisterBuilder(
absl::AnyInvocable<void(Builder*)> builder) {
GPR_ASSERT(config_.load(std::memory_order_relaxed) == nullptr &&
"CoreConfiguration was already instantiated before builder "
"registration was completed");
CHECK(config_.load(std::memory_order_relaxed) == nullptr)
<< "CoreConfiguration was already instantiated before builder "
"registration was completed";
RegisteredBuilder* n = new RegisteredBuilder();
n->builder = std::move(builder);
n->next = builders_.load(std::memory_order_relaxed);
while (!builders_.compare_exchange_weak(n->next, n, std::memory_order_acq_rel,
std::memory_order_relaxed)) {
}
GPR_ASSERT(config_.load(std::memory_order_relaxed) == nullptr &&
"CoreConfiguration was already instantiated before builder "
"registration was completed");
CHECK(config_.load(std::memory_order_relaxed) == nullptr)
<< "CoreConfiguration was already instantiated before builder "
"registration was completed";
}
const CoreConfiguration& CoreConfiguration::BuildNewAndMaybeSet() {

@ -18,6 +18,7 @@
#include <atomic>
#include "absl/functional/any_invocable.h"
#include "absl/log/check.h"
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
@ -129,10 +130,10 @@ class GRPC_DLL CoreConfiguration {
~WithSubstituteBuilder() {
// Reset and restore.
Reset();
GPR_ASSERT(CoreConfiguration::config_.exchange(
config_restore_, std::memory_order_acquire) == nullptr);
GPR_ASSERT(CoreConfiguration::builders_.exchange(
builders_restore_, std::memory_order_acquire) == nullptr);
CHECK(CoreConfiguration::config_.exchange(
config_restore_, std::memory_order_acquire) == nullptr);
CHECK(CoreConfiguration::builders_.exchange(
builders_restore_, std::memory_order_acquire) == nullptr);
}
private:

@ -17,6 +17,7 @@
#include <stdio.h>
#include "absl/flags/marshalling.h"
#include "absl/log/check.h"
#include "absl/strings/numbers.h"
#include "absl/strings/str_join.h"
#include "absl/types/optional.h"
@ -36,7 +37,7 @@ absl::optional<std::string> LoadEnv(absl::string_view environment_variable) {
std::string LoadConfigFromEnv(absl::string_view environment_variable,
const char* default_value) {
GPR_ASSERT_INTERNAL(!environment_variable.empty());
CHECK(!environment_variable.empty());
return LoadEnv(environment_variable).value_or(default_value);
}

@ -17,6 +17,7 @@
#include <algorithm>
#include <atomic>
#include "absl/log/check.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
@ -28,7 +29,7 @@ namespace grpc_core {
std::atomic<EventLog*> EventLog::g_instance_{nullptr};
EventLog::~EventLog() {
GPR_ASSERT(g_instance_.load(std::memory_order_acquire) != this);
CHECK(g_instance_.load(std::memory_order_acquire) != this);
}
void EventLog::BeginCollection() {

@ -23,6 +23,7 @@
#include <utility>
#include "absl/functional/any_invocable.h"
#include "absl/log/check.h"
#include "absl/strings/str_join.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
@ -146,7 +147,7 @@ GPR_ATTRIBUTE_NOINLINE Experiments LoadExperimentsFromConfigVariableInner() {
j++) {
// Require that we can check dependent requirements with a linear sweep
// (implies the experiments generator must DAG sort the experiments)
GPR_ASSERT(g_experiment_metadata[i].required_experiments[j] < i);
CHECK(g_experiment_metadata[i].required_experiments[j] < i);
if (!experiments
.enabled[g_experiment_metadata[i].required_experiments[j]]) {
experiments.enabled[i] = false;
@ -244,11 +245,11 @@ void PrintExperimentsList() {
}
void ForceEnableExperiment(absl::string_view experiment, bool enable) {
GPR_ASSERT(Loaded()->load(std::memory_order_relaxed) == false);
CHECK(Loaded()->load(std::memory_order_relaxed) == false);
for (size_t i = 0; i < kNumExperiments; i++) {
if (g_experiment_metadata[i].name != experiment) continue;
if (ForcedExperiments()[i].forced) {
GPR_ASSERT(ForcedExperiments()[i].value == enable);
CHECK(ForcedExperiments()[i].value == enable);
} else {
ForcedExperiments()[i].forced = true;
ForcedExperiments()[i].value = enable;

@ -177,7 +177,7 @@
(ie when all filters in a stack are promise based)
expiry: 2024/06/14
owner: ctiller@google.com
test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "logging_test"]
test_tags: ["core_end2end_test", "logging_test"]
- name: rstpit
description:
On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short duration

@ -24,6 +24,7 @@
#include <utility>
#include "absl/functional/bind_front.h"
#include "absl/log/check.h"
#include "absl/status/status.h"
#include "absl/strings/str_format.h"
@ -183,7 +184,7 @@ HttpRequest::HttpRequest(
GRPC_CLOSURE_INIT(&continue_done_write_after_schedule_on_exec_ctx_,
ContinueDoneWriteAfterScheduleOnExecCtx, this,
grpc_schedule_on_exec_ctx);
GPR_ASSERT(pollent);
CHECK(pollent);
grpc_polling_entity_add_to_pollset_set(pollent, pollset_set_);
}
@ -216,7 +217,7 @@ void HttpRequest::Start() {
void HttpRequest::Orphan() {
{
MutexLock lock(&mu_);
GPR_ASSERT(!cancelled_);
CHECK(!cancelled_);
cancelled_ = true;
// cancel potentially pending DNS resolution.
if (dns_request_handle_.has_value() &&

@ -22,6 +22,7 @@
#include <algorithm>
#include "absl/log/check.h"
#include "absl/status/status.h"
#include <grpc/support/alloc.h>
@ -177,7 +178,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
grpc_http_header hdr = {nullptr, nullptr};
grpc_error_handle error;
GPR_ASSERT(cur != end);
CHECK(cur != end);
if (*cur == ' ' || *cur == '\t') {
error = GRPC_ERROR_CREATE("Continued header lines not supported yet");
@ -191,14 +192,14 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
error = GRPC_ERROR_CREATE("Didn't find ':' in header string");
goto done;
}
GPR_ASSERT(cur >= beg);
CHECK(cur >= beg);
hdr.key = buf2str(beg, static_cast<size_t>(cur - beg));
cur++; // skip :
while (cur != end && (*cur == ' ' || *cur == '\t')) {
cur++;
}
GPR_ASSERT((size_t)(end - cur) >= parser->cur_line_end_length);
CHECK((size_t)(end - cur) >= parser->cur_line_end_length);
size = static_cast<size_t>(end - cur) - parser->cur_line_end_length;
if ((size != 0) && (cur[size - 1] == '\r')) {
size--;

@ -24,6 +24,7 @@
#include <vector>
#include "absl/base/attributes.h"
#include "absl/log/check.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_cat.h"
@ -279,14 +280,14 @@ bool JsonReader::StartContainer(Json::Type type) {
if (type == Json::Type::kObject) {
scope.data = Json::Object();
} else {
GPR_ASSERT(type == Json::Type::kArray);
CHECK(type == Json::Type::kArray);
scope.data = Json::Array();
}
return true;
}
void JsonReader::EndContainer() {
GPR_ASSERT(!stack_.empty());
CHECK(!stack_.empty());
Scope scope = std::move(stack_.back());
stack_.pop_back();
key_ = std::move(scope.parent_object_key);

@ -17,6 +17,8 @@
#include <atomic>
#include <cstdint>
#include "absl/log/check.h"
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
@ -26,10 +28,9 @@ ConnectionQuota::ConnectionQuota() = default;
void ConnectionQuota::SetMaxIncomingConnections(int max_incoming_connections) {
// The maximum can only be configured once.
GPR_ASSERT(max_incoming_connections < INT_MAX);
GPR_ASSERT(max_incoming_connections_.exchange(max_incoming_connections,
std::memory_order_release) ==
INT_MAX);
CHECK_LT(max_incoming_connections, INT_MAX);
CHECK(max_incoming_connections_.exchange(
max_incoming_connections, std::memory_order_release) == INT_MAX);
}
// Returns true if the incoming connection is allowed to be accepted on the
@ -62,9 +63,8 @@ void ConnectionQuota::ReleaseConnections(int num_connections) {
if (max_incoming_connections_.load(std::memory_order_relaxed) == INT_MAX) {
return;
}
GPR_ASSERT(active_incoming_connections_.fetch_sub(
num_connections, std::memory_order_acq_rel) >=
num_connections);
CHECK(active_incoming_connections_.fetch_sub(
num_connections, std::memory_order_acq_rel) >= num_connections);
}
} // namespace grpc_core

@ -25,6 +25,7 @@
#include <tuple>
#include <utility>
#include "absl/log/check.h"
#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
@ -252,9 +253,9 @@ GrpcMemoryAllocatorImpl::GrpcMemoryAllocatorImpl(
}
GrpcMemoryAllocatorImpl::~GrpcMemoryAllocatorImpl() {
GPR_ASSERT(free_bytes_.load(std::memory_order_acquire) +
sizeof(GrpcMemoryAllocatorImpl) ==
taken_bytes_.load(std::memory_order_relaxed));
CHECK(free_bytes_.load(std::memory_order_acquire) +
sizeof(GrpcMemoryAllocatorImpl) ==
taken_bytes_.load(std::memory_order_relaxed));
memory_quota_->Return(taken_bytes_.load(std::memory_order_relaxed));
}
@ -265,7 +266,7 @@ void GrpcMemoryAllocatorImpl::Shutdown() {
reclamation_handles[kNumReclamationPasses];
{
MutexLock lock(&reclaimer_mu_);
GPR_ASSERT(!shutdown_);
CHECK(!shutdown_);
shutdown_ = true;
memory_quota = memory_quota_;
for (size_t i = 0; i < kNumReclamationPasses; i++) {
@ -277,8 +278,8 @@ void GrpcMemoryAllocatorImpl::Shutdown() {
size_t GrpcMemoryAllocatorImpl::Reserve(MemoryRequest request) {
// Validate request - performed here so we don't bloat the generated code with
// inlined asserts.
GPR_ASSERT(request.min() <= request.max());
GPR_ASSERT(request.max() <= MemoryRequest::max_allowed_size());
CHECK(request.min() <= request.max());
CHECK(request.max() <= MemoryRequest::max_allowed_size());
size_t old_free = free_bytes_.load(std::memory_order_relaxed);
while (true) {
@ -357,7 +358,7 @@ void GrpcMemoryAllocatorImpl::MaybeDonateBack() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
gpr_log(GPR_INFO, "[%p] Early return %" PRIdPTR " bytes", this, ret);
}
GPR_ASSERT(taken_bytes_.fetch_sub(ret, std::memory_order_relaxed) >= ret);
CHECK(taken_bytes_.fetch_sub(ret, std::memory_order_relaxed) >= ret);
memory_quota_->Return(ret);
return;
}
@ -478,7 +479,7 @@ void BasicMemoryQuota::Start() {
reclaimer_activity_ =
MakeActivity(std::move(reclamation_loop), ExecCtxWakeupScheduler(),
[](absl::Status status) {
GPR_ASSERT(status.code() == absl::StatusCode::kCancelled);
CHECK(status.code() == absl::StatusCode::kCancelled);
});
}
@ -498,7 +499,7 @@ void BasicMemoryQuota::SetSize(size_t new_size) {
void BasicMemoryQuota::Take(GrpcMemoryAllocatorImpl* allocator, size_t amount) {
// If there's a request for nothing, then do nothing!
if (amount == 0) return;
GPR_DEBUG_ASSERT(amount <= std::numeric_limits<intptr_t>::max());
DCHECK(amount <= std::numeric_limits<intptr_t>::max());
// Grab memory from the quota.
auto prior = free_bytes_.fetch_sub(amount, std::memory_order_acq_rel);
// If we push into overcommit, awake the reclaimer.

@ -28,6 +28,7 @@
#include "absl/base/thread_annotations.h"
#include "absl/container/flat_hash_set.h"
#include "absl/log/check.h"
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
@ -137,7 +138,7 @@ class ReclaimerQueue {
explicit Handle(F reclaimer, std::shared_ptr<State> state)
: sweep_(new SweepFn<F>(std::move(reclaimer), std::move(state))) {}
~Handle() override {
GPR_DEBUG_ASSERT(sweep_.load(std::memory_order_relaxed) == nullptr);
DCHECK_EQ(sweep_.load(std::memory_order_relaxed), nullptr);
}
Handle(const Handle&) = delete;
@ -438,7 +439,7 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
template <typename F>
void PostReclaimer(ReclamationPass pass, F fn) {
MutexLock lock(&reclaimer_mu_);
GPR_ASSERT(!shutdown_);
CHECK(!shutdown_);
InsertReclaimer(static_cast<size_t>(pass), std::move(fn));
}

@ -14,6 +14,8 @@
#include "src/core/lib/resource_quota/thread_quota.h"
#include "absl/log/check.h"
#include <grpc/support/log.h>
#include <grpc/support/port_platform.h>
@ -37,7 +39,7 @@ bool ThreadQuota::Reserve(size_t num_threads) {
void ThreadQuota::Release(size_t num_threads) {
MutexLock lock(&mu_);
GPR_ASSERT(num_threads <= allocated_);
CHECK(num_threads <= allocated_);
allocated_ -= num_threads;
}

@ -113,164 +113,13 @@ grpc_core::DebugOnlyTraceFlag grpc_call_refcount_trace(false, "call_refcount");
namespace grpc_core {
// Alias to make this type available in Call implementation without a grpc_core
// prefix.
using GrpcClosure = Closure;
///////////////////////////////////////////////////////////////////////////////
// Call
class Call : public CppImplOf<Call, grpc_call> {
public:
Arena* arena() { return arena_; }
bool is_client() const { return is_client_; }
virtual void ContextSet(grpc_context_index elem, void* value,
void (*destroy)(void* value)) = 0;
virtual void* ContextGet(grpc_context_index elem) const = 0;
virtual bool Completed() = 0;
void CancelWithStatus(grpc_status_code status, const char* description);
virtual void CancelWithError(grpc_error_handle error) = 0;
virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0;
char* GetPeer();
virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops,
void* notify_tag,
bool is_notify_tag_closure) = 0;
virtual bool failed_before_recv_message() const = 0;
virtual bool is_trailers_only() const = 0;
virtual absl::string_view GetServerAuthority() const = 0;
virtual void ExternalRef() = 0;
virtual void ExternalUnref() = 0;
virtual void InternalRef(const char* reason) = 0;
virtual void InternalUnref(const char* reason) = 0;
grpc_compression_algorithm test_only_compression_algorithm() {
return incoming_compression_algorithm_;
}
uint32_t test_only_message_flags() { return test_only_last_message_flags_; }
CompressionAlgorithmSet encodings_accepted_by_peer() {
return encodings_accepted_by_peer_;
}
// This should return nullptr for the promise stack (and alternative means
// for that functionality be invented)
virtual grpc_call_stack* call_stack() = 0;
// Return the EventEngine used for this call's async execution.
virtual grpc_event_engine::experimental::EventEngine* event_engine()
const = 0;
protected:
// The maximum number of concurrent batches possible.
// Based upon the maximum number of individually queueable ops in the batch
// api:
// - initial metadata send
// - message send
// - status/close send (depending on client/server)
// - initial metadata recv
// - message recv
// - status/close recv (depending on client/server)
static constexpr size_t kMaxConcurrentBatches = 6;
struct ParentCall {
Mutex child_list_mu;
Call* first_child ABSL_GUARDED_BY(child_list_mu) = nullptr;
};
struct ChildCall {
explicit ChildCall(Call* parent) : parent(parent) {}
Call* parent;
/// siblings: children of the same parent form a list, and this list is
/// protected under
/// parent->mu
Call* sibling_next = nullptr;
Call* sibling_prev = nullptr;
};
Call(Arena* arena, bool is_client, Timestamp send_deadline,
RefCountedPtr<Channel> channel)
: channel_(std::move(channel)),
arena_(arena),
send_deadline_(send_deadline),
is_client_(is_client) {
GPR_DEBUG_ASSERT(arena_ != nullptr);
GPR_DEBUG_ASSERT(channel_ != nullptr);
}
virtual ~Call() = default;
void DeleteThis();
ParentCall* GetOrCreateParentCall();
ParentCall* parent_call();
Channel* channel() const {
GPR_DEBUG_ASSERT(channel_ != nullptr);
return channel_.get();
}
absl::Status InitParent(Call* parent, uint32_t propagation_mask);
void PublishToParent(Call* parent);
void MaybeUnpublishFromParent();
void PropagateCancellationToChildren();
Timestamp send_deadline() const { return send_deadline_; }
void set_send_deadline(Timestamp send_deadline) {
send_deadline_ = send_deadline;
}
Slice GetPeerString() const {
MutexLock lock(&peer_mu_);
return peer_string_.Ref();
}
void SetPeerString(Slice peer_string) {
MutexLock lock(&peer_mu_);
peer_string_ = std::move(peer_string);
}
void ClearPeerString() { SetPeerString(Slice(grpc_empty_slice())); }
// TODO(ctiller): cancel_func is for cancellation of the call - filter stack
// holds no mutexes here, promise stack does, and so locking is different.
// Remove this and cancel directly once promise conversion is done.
void ProcessIncomingInitialMetadata(grpc_metadata_batch& md);
// Fixup outgoing metadata before sending - adds compression, protects
// internal headers against external modification.
void PrepareOutgoingInitialMetadata(const grpc_op& op,
grpc_metadata_batch& md);
void NoteLastMessageFlags(uint32_t flags) {
test_only_last_message_flags_ = flags;
}
grpc_compression_algorithm incoming_compression_algorithm() const {
return incoming_compression_algorithm_;
}
void HandleCompressionAlgorithmDisabled(
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
void HandleCompressionAlgorithmNotAccepted(
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
gpr_cycle_counter start_time() const { return start_time_; }
private:
RefCountedPtr<Channel> channel_;
Arena* const arena_;
std::atomic<ParentCall*> parent_call_{nullptr};
ChildCall* child_ = nullptr;
Timestamp send_deadline_;
const bool is_client_;
// flag indicating that cancellation is inherited
bool cancellation_is_inherited_ = false;
// Compression algorithm for *incoming* data
grpc_compression_algorithm incoming_compression_algorithm_ =
GRPC_COMPRESS_NONE;
// Supported encodings (compression algorithms), a bitset.
// Always support no compression.
CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
uint32_t test_only_last_message_flags_ = 0;
// Peer name is protected by a mutex because it can be accessed by the
// application at the same moment as it is being set by the completion
// of the recv_initial_metadata op. The mutex should be mostly uncontended.
mutable Mutex peer_mu_;
Slice peer_string_;
gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
};
Call::ParentCall* Call::GetOrCreateParentCall() {
ParentCall* p = parent_call_.load(std::memory_order_acquire);
if (p == nullptr) {
@ -503,6 +352,50 @@ void Call::HandleCompressionAlgorithmDisabled(
GRPC_STATUS_UNIMPLEMENTED));
}
void Call::UpdateDeadline(Timestamp deadline) {
ReleasableMutexLock lock(&deadline_mu_);
if (grpc_call_trace.enabled()) {
gpr_log(GPR_DEBUG, "[call %p] UpdateDeadline from=%s to=%s", this,
deadline_.ToString().c_str(), deadline.ToString().c_str());
}
if (deadline >= deadline_) return;
if (deadline < Timestamp::Now()) {
lock.Release();
CancelWithError(grpc_error_set_int(
absl::DeadlineExceededError("Deadline Exceeded"),
StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED));
return;
}
auto* const event_engine = channel()->event_engine();
if (deadline_ != Timestamp::InfFuture()) {
if (!event_engine->Cancel(deadline_task_)) return;
} else {
InternalRef("deadline");
}
deadline_ = deadline;
deadline_task_ = event_engine->RunAfter(deadline - Timestamp::Now(), this);
}
void Call::ResetDeadline() {
{
MutexLock lock(&deadline_mu_);
if (deadline_ == Timestamp::InfFuture()) return;
auto* const event_engine = channel()->event_engine();
if (!event_engine->Cancel(deadline_task_)) return;
deadline_ = Timestamp::InfFuture();
}
InternalUnref("deadline[reset]");
}
void Call::Run() {
ApplicationCallbackExecCtx callback_exec_ctx;
ExecCtx exec_ctx;
CancelWithError(grpc_error_set_int(
absl::DeadlineExceededError("Deadline Exceeded"),
StatusIntProperty::kRpcStatus, GRPC_STATUS_DEADLINE_EXCEEDED));
InternalUnref("deadline[run]");
}
///////////////////////////////////////////////////////////////////////////////
// FilterStackCall
// To be removed once promise conversion is complete
@ -678,7 +571,9 @@ class FilterStackCall final : public Call {
: Call(arena, args.server_transport_data == nullptr, args.send_deadline,
args.channel->Ref()),
cq_(args.cq),
stream_op_payload_(context_) {}
stream_op_payload_(context_) {
context_[GRPC_CONTEXT_CALL].value = this;
}
static void ReleaseCall(void* call, grpc_error_handle);
static void DestroyCall(void* call, grpc_error_handle);
@ -912,6 +807,10 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
}
}
if (args->send_deadline != Timestamp::InfFuture()) {
call->UpdateDeadline(args->send_deadline);
}
CSliceUnref(path);
return error;
@ -1027,8 +926,13 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) {
if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) {
return;
}
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
gpr_log(GPR_INFO, "CancelWithError %s %s", is_client() ? "CLI" : "SVR",
StatusToString(error).c_str());
}
ClearPeerString();
InternalRef("termination");
ResetDeadline();
// Inform the call combiner of the cancellation, so that it can cancel
// any in-flight asynchronous actions that may be holding the call
// combiner. This ensures that the cancel_stream batch can be sent
@ -1047,9 +951,10 @@ void FilterStackCall::CancelWithError(grpc_error_handle error) {
void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
gpr_log(GPR_DEBUG, "set_final_status %s %s", is_client() ? "CLI" : "SVR",
gpr_log(GPR_INFO, "set_final_status %s %s", is_client() ? "CLI" : "SVR",
StatusToString(error).c_str());
}
ResetDeadline();
if (is_client()) {
std::string status_details;
grpc_error_get_status(error, send_deadline(), final_op_.client.status,
@ -1353,9 +1258,9 @@ void FilterStackCall::BatchControl::PostCompletion() {
if (completion_data_.notify_tag.is_closure) {
call_ = nullptr;
Closure::Run(DEBUG_LOCATION,
static_cast<grpc_closure*>(completion_data_.notify_tag.tag),
error);
GrpcClosure::Run(
DEBUG_LOCATION,
static_cast<grpc_closure*>(completion_data_.notify_tag.tag), error);
call->InternalUnref("completion");
} else {
grpc_cq_end_op(
@ -1477,7 +1382,7 @@ void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
}
}
if (saved_rsr_closure != nullptr) {
Closure::Run(DEBUG_LOCATION, saved_rsr_closure, error);
GrpcClosure::Run(DEBUG_LOCATION, saved_rsr_closure, error);
}
FinishStep(PendingOp::kRecvInitialMetadata);
@ -1968,10 +1873,7 @@ bool ValidateMetadata(size_t count, grpc_metadata* metadata) {
// PromiseBasedCall
// Will be folded into Call once the promise conversion is done
class BasicPromiseBasedCall : public Call,
public Party,
public grpc_event_engine::experimental::
EventEngine::Closure /* for deadlines */ {
class BasicPromiseBasedCall : public Call, public Party {
public:
using Call::arena;
@ -1986,6 +1888,7 @@ class BasicPromiseBasedCall : public Call,
if (args.cq != nullptr) {
GRPC_CQ_INTERNAL_REF(args.cq, "bind");
}
context_[GRPC_CONTEXT_CALL].value = this;
}
~BasicPromiseBasedCall() override {
@ -1997,9 +1900,6 @@ class BasicPromiseBasedCall : public Call,
}
}
// Implementation of EventEngine::Closure, called when deadline expires
void Run() final;
virtual void OrphanCall() = 0;
virtual ServerCallContext* server_call_context() { return nullptr; }
@ -2057,13 +1957,6 @@ class BasicPromiseBasedCall : public Call,
return context_[elem].value;
}
void UpdateDeadline(Timestamp deadline) ABSL_LOCKS_EXCLUDED(deadline_mu_);
void ResetDeadline() ABSL_LOCKS_EXCLUDED(deadline_mu_);
Timestamp deadline() {
MutexLock lock(&deadline_mu_);
return deadline_;
}
// Accept the stats from the context (call once we have proof the transport is
// done with them).
void AcceptTransportStatsFromContext() {
@ -2139,52 +2032,11 @@ class BasicPromiseBasedCall : public Call,
// Contexts for various subsystems (security, tracing, ...).
grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
grpc_call_stats final_stats_{};
// Current deadline.
Mutex deadline_mu_;
Timestamp deadline_ ABSL_GUARDED_BY(deadline_mu_) = Timestamp::InfFuture();
grpc_event_engine::experimental::EventEngine::TaskHandle ABSL_GUARDED_BY(
deadline_mu_) deadline_task_;
Slice final_message_;
grpc_status_code final_status_ = GRPC_STATUS_UNKNOWN;
grpc_completion_queue* cq_;
};
void BasicPromiseBasedCall::UpdateDeadline(Timestamp deadline) {
MutexLock lock(&deadline_mu_);
if (grpc_call_trace.enabled()) {
gpr_log(GPR_DEBUG, "%s[call] UpdateDeadline from=%s to=%s",
DebugTag().c_str(), deadline_.ToString().c_str(),
deadline.ToString().c_str());
}
if (deadline >= deadline_) return;
auto* const event_engine = channel()->event_engine();
if (deadline_ != Timestamp::InfFuture()) {
if (!event_engine->Cancel(deadline_task_)) return;
} else {
InternalRef("deadline");
}
deadline_ = deadline;
deadline_task_ = event_engine->RunAfter(deadline - Timestamp::Now(), this);
}
void BasicPromiseBasedCall::ResetDeadline() {
{
MutexLock lock(&deadline_mu_);
if (deadline_ == Timestamp::InfFuture()) return;
auto* const event_engine = channel()->event_engine();
if (!event_engine->Cancel(deadline_task_)) return;
deadline_ = Timestamp::InfFuture();
}
InternalUnref("deadline[reset]");
}
void BasicPromiseBasedCall::Run() {
ApplicationCallbackExecCtx callback_exec_ctx;
ExecCtx exec_ctx;
CancelWithError(absl::DeadlineExceededError("Deadline exceeded"));
InternalUnref("deadline[run]");
}
class PromiseBasedCall : public BasicPromiseBasedCall {
public:
PromiseBasedCall(Arena* arena, uint32_t initial_external_refs,
@ -2680,12 +2532,6 @@ void CallContext::IncrementRefCount(const char* reason) {
void CallContext::Unref(const char* reason) { call_->InternalUnref(reason); }
void CallContext::UpdateDeadline(Timestamp deadline) {
call_->UpdateDeadline(deadline);
}
Timestamp CallContext::deadline() const { return call_->deadline(); }
ServerCallContext* CallContext::server_call_context() {
return call_->server_call_context();
}
@ -3697,7 +3543,12 @@ ServerPromiseBasedCall::MakeTopOfServerCallPromise(
server_to_client_messages_ = call_args.server_to_client_messages;
client_to_server_messages_ = call_args.client_to_server_messages;
server_initial_metadata_ = call_args.server_initial_metadata;
set_send_deadline(deadline());
absl::optional<Timestamp> deadline =
client_initial_metadata_->get(GrpcTimeoutMetadata());
if (deadline.has_value()) {
set_send_deadline(*deadline);
UpdateDeadline(*deadline);
}
ProcessIncomingInitialMetadata(*client_initial_metadata_);
ExternalRef();
publish(c_ptr());

@ -76,6 +76,179 @@ typedef struct grpc_call_create_args {
} grpc_call_create_args;
namespace grpc_core {
class Call : public CppImplOf<Call, grpc_call>,
public grpc_event_engine::experimental::EventEngine::
Closure /* for deadlines */ {
public:
Arena* arena() { return arena_; }
bool is_client() const { return is_client_; }
virtual void ContextSet(grpc_context_index elem, void* value,
void (*destroy)(void* value)) = 0;
virtual void* ContextGet(grpc_context_index elem) const = 0;
virtual bool Completed() = 0;
void CancelWithStatus(grpc_status_code status, const char* description);
virtual void CancelWithError(grpc_error_handle error) = 0;
virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0;
char* GetPeer();
virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops,
void* notify_tag,
bool is_notify_tag_closure) = 0;
virtual bool failed_before_recv_message() const = 0;
virtual bool is_trailers_only() const = 0;
virtual absl::string_view GetServerAuthority() const = 0;
virtual void ExternalRef() = 0;
virtual void ExternalUnref() = 0;
virtual void InternalRef(const char* reason) = 0;
virtual void InternalUnref(const char* reason) = 0;
void UpdateDeadline(Timestamp deadline) ABSL_LOCKS_EXCLUDED(deadline_mu_);
void ResetDeadline() ABSL_LOCKS_EXCLUDED(deadline_mu_);
Timestamp deadline() {
MutexLock lock(&deadline_mu_);
return deadline_;
}
grpc_compression_algorithm test_only_compression_algorithm() {
return incoming_compression_algorithm_;
}
uint32_t test_only_message_flags() { return test_only_last_message_flags_; }
CompressionAlgorithmSet encodings_accepted_by_peer() {
return encodings_accepted_by_peer_;
}
// This should return nullptr for the promise stack (and alternative means
// for that functionality be invented)
virtual grpc_call_stack* call_stack() = 0;
// Return the EventEngine used for this call's async execution.
virtual grpc_event_engine::experimental::EventEngine* event_engine()
const = 0;
// Implementation of EventEngine::Closure, called when deadline expires
void Run() final;
protected:
// The maximum number of concurrent batches possible.
// Based upon the maximum number of individually queueable ops in the batch
// api:
// - initial metadata send
// - message send
// - status/close send (depending on client/server)
// - initial metadata recv
// - message recv
// - status/close recv (depending on client/server)
static constexpr size_t kMaxConcurrentBatches = 6;
struct ParentCall {
Mutex child_list_mu;
Call* first_child ABSL_GUARDED_BY(child_list_mu) = nullptr;
};
struct ChildCall {
explicit ChildCall(Call* parent) : parent(parent) {}
Call* parent;
/// siblings: children of the same parent form a list, and this list is
/// protected under
/// parent->mu
Call* sibling_next = nullptr;
Call* sibling_prev = nullptr;
};
Call(Arena* arena, bool is_client, Timestamp send_deadline,
RefCountedPtr<Channel> channel)
: channel_(std::move(channel)),
arena_(arena),
send_deadline_(send_deadline),
is_client_(is_client) {
GPR_DEBUG_ASSERT(arena_ != nullptr);
GPR_DEBUG_ASSERT(channel_ != nullptr);
}
~Call() override = default;
void DeleteThis();
ParentCall* GetOrCreateParentCall();
ParentCall* parent_call();
Channel* channel() const {
GPR_DEBUG_ASSERT(channel_ != nullptr);
return channel_.get();
}
absl::Status InitParent(Call* parent, uint32_t propagation_mask);
void PublishToParent(Call* parent);
void MaybeUnpublishFromParent();
void PropagateCancellationToChildren();
Timestamp send_deadline() const { return send_deadline_; }
void set_send_deadline(Timestamp send_deadline) {
send_deadline_ = send_deadline;
}
Slice GetPeerString() const {
MutexLock lock(&peer_mu_);
return peer_string_.Ref();
}
void SetPeerString(Slice peer_string) {
MutexLock lock(&peer_mu_);
peer_string_ = std::move(peer_string);
}
void ClearPeerString() { SetPeerString(Slice(grpc_empty_slice())); }
// TODO(ctiller): cancel_func is for cancellation of the call - filter stack
// holds no mutexes here, promise stack does, and so locking is different.
// Remove this and cancel directly once promise conversion is done.
void ProcessIncomingInitialMetadata(grpc_metadata_batch& md);
// Fixup outgoing metadata before sending - adds compression, protects
// internal headers against external modification.
void PrepareOutgoingInitialMetadata(const grpc_op& op,
grpc_metadata_batch& md);
void NoteLastMessageFlags(uint32_t flags) {
test_only_last_message_flags_ = flags;
}
grpc_compression_algorithm incoming_compression_algorithm() const {
return incoming_compression_algorithm_;
}
void HandleCompressionAlgorithmDisabled(
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
void HandleCompressionAlgorithmNotAccepted(
grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
gpr_cycle_counter start_time() const { return start_time_; }
private:
RefCountedPtr<Channel> channel_;
Arena* const arena_;
std::atomic<ParentCall*> parent_call_{nullptr};
ChildCall* child_ = nullptr;
Timestamp send_deadline_;
const bool is_client_;
// flag indicating that cancellation is inherited
bool cancellation_is_inherited_ = false;
// Compression algorithm for *incoming* data
grpc_compression_algorithm incoming_compression_algorithm_ =
GRPC_COMPRESS_NONE;
// Supported encodings (compression algorithms), a bitset.
// Always support no compression.
CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
uint32_t test_only_last_message_flags_ = 0;
// Peer name is protected by a mutex because it can be accessed by the
// application at the same moment as it is being set by the completion
// of the recv_initial_metadata op. The mutex should be mostly uncontended.
mutable Mutex peer_mu_;
Slice peer_string_;
// Current deadline.
Mutex deadline_mu_;
Timestamp deadline_ ABSL_GUARDED_BY(deadline_mu_) = Timestamp::InfFuture();
grpc_event_engine::experimental::EventEngine::TaskHandle ABSL_GUARDED_BY(
deadline_mu_) deadline_task_;
gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
};
class BasicPromiseBasedCall;
class ServerPromiseBasedCall;
@ -106,10 +279,6 @@ class CallContext {
public:
explicit CallContext(BasicPromiseBasedCall* call) : call_(call) {}
// Update the deadline (if deadline < the current deadline).
void UpdateDeadline(Timestamp deadline);
Timestamp deadline() const;
// Run some action in the call activity context. This is needed to adapt some
// legacy systems to promises, and will likely disappear once that conversion
// is complete.

@ -926,7 +926,7 @@ struct StackData {
filter_destructor.push_back(FilterDestructor{
call_offset,
[](void* call_data) {
static_cast<typename FilterType::Call*>(call_data)->~Call();
Destruct(static_cast<typename FilterType::Call*>(call_data));
},
});
}

@ -502,7 +502,7 @@ class FilterStackTransport;
class ClientTransport;
class ServerTransport;
class Transport : public Orphanable {
class Transport : public InternallyRefCounted<Transport> {
public:
struct RawPointerChannelArgTag {};
static absl::string_view ChannelArgName() { return GRPC_ARG_TRANSPORT; }

@ -44,7 +44,6 @@ extern void SecurityRegisterHandshakerFactories(
extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
extern void RegisterLegacyChannelIdleFilters(
CoreConfiguration::Builder* builder);
extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
extern void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder);
extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
@ -111,7 +110,6 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
RegisterConnectedChannel(builder);
RegisterGrpcLbPolicy(builder);
RegisterHttpFilters(builder);
RegisterDeadlineFilter(builder);
RegisterMessageSizeFilter(builder);
RegisterServiceConfigChannelArgFilter(builder);
RegisterResourceQuota(builder);

@ -234,7 +234,7 @@ struct Server::RequestedCall {
template <typename OptionalPayload>
void Complete(OptionalPayload payload, ClientMetadata& md) {
Timestamp deadline = GetContext<CallContext>()->deadline();
Timestamp deadline = GetContext<Call>()->deadline();
switch (type) {
case RequestedCall::Type::BATCH_CALL:
GPR_ASSERT(!payload.has_value());
@ -1479,6 +1479,10 @@ void Server::ChannelData::InitCall(RefCountedPtr<CallSpineInterface> call) {
auto* rc = mr.TakeCall();
rc->Complete(std::move(std::get<0>(r)), *md);
auto* call_context = GetContext<CallContext>();
const auto* deadline = md->get_pointer(GrpcTimeoutMetadata());
if (deadline != nullptr) {
GetContext<Call>()->UpdateDeadline(*deadline);
}
*rc->call = call_context->c_call();
grpc_call_ref(*rc->call);
grpc_call_set_completion_queue(call_context->c_call(),
@ -1828,6 +1832,7 @@ void Server::CallData::RecvInitialMetadataReady(void* arg,
auto op_deadline = calld->recv_initial_metadata_->get(GrpcTimeoutMetadata());
if (op_deadline.has_value()) {
calld->deadline_ = *op_deadline;
Call::FromC(calld->call_)->UpdateDeadline(*op_deadline);
}
if (calld->host_.has_value() && calld->path_.has_value()) {
// do nothing

File diff suppressed because it is too large Load Diff

@ -38,7 +38,6 @@ CORE_SOURCE_FILES = [
'src/core/ext/filters/census/grpc_context.cc',
'src/core/ext/filters/channel_idle/idle_filter_state.cc',
'src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc',
'src/core/ext/filters/deadline/deadline_filter.cc',
'src/core/ext/filters/fault_injection/fault_injection_filter.cc',
'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc',
'src/core/ext/filters/http/client/http_client_filter.cc',
@ -998,7 +997,6 @@ CORE_SOURCE_FILES = [
'third_party/address_sorting/address_sorting.c',
'third_party/address_sorting/address_sorting_posix.c',
'third_party/address_sorting/address_sorting_windows.c',
'third_party/boringssl-with-bazel/err_data.c',
'third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c',
'third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c',
'third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c',
@ -1089,6 +1087,8 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/evp/evp.c',
'third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c',
'third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c',
'third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c',
'third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c',
'third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c',
@ -1230,6 +1230,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c',
'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c',
'third_party/boringssl-with-bazel/src/gen/crypto/err_data.c',
'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc',
'third_party/boringssl-with-bazel/src/ssl/d1_both.cc',
'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc',
@ -1251,6 +1252,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc',
'third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc',
'third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc',
'third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc',
'third_party/boringssl-with-bazel/src/ssl/ssl_file.cc',
'third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc',
'third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc',
@ -1415,166 +1417,166 @@ CORE_SOURCE_FILES = [
ASM_SOURCE_FILES = {
'crypto_asm': [
'third_party/boringssl-with-bazel/apple-aarch64/crypto/chacha/chacha-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/armv8-mont-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/bn-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghash-neon-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghashv8-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256-armv8-asm-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha1-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha256-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha512-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/vpaes-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-aarch64/crypto/test/trampoline-armv8-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/chacha/chacha-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/aesni-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/bn-586-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/co-586-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-ssse3-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/md5-586-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha1-586-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha256-586-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha512-586-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/vpaes-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/x86-mont-apple.S',
'third_party/boringssl-with-bazel/apple-x86/crypto/test/trampoline-x86-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/chacha/chacha-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/md5-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256-x86_64-asm-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rdrand-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rsaz-avx2-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha1-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha256-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha512-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/vpaes-x86_64-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont5-apple.S',
'third_party/boringssl-with-bazel/apple-x86_64/crypto/test/trampoline-x86_64-apple.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/armv8-mont-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/bn-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghashv8-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256-armv8-asm-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha1-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha256-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha512-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/vpaes-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-aarch64/crypto/test/trampoline-armv8-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armv7-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armv7-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7-linux.S',
'third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/chacha/chacha-x86-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/aesni-x86-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/bn-586-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/co-586-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-ssse3-x86-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-x86-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/md5-586-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha1-586-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha256-586-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha512-586-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/vpaes-x86-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/x86-mont-linux.S',
'third_party/boringssl-with-bazel/linux-x86/crypto/test/trampoline-x86-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/chacha/chacha-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/md5-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rdrand-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rsaz-avx2-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha1-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha256-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha512-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/vpaes-x86_64-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont5-linux.S',
'third_party/boringssl-with-bazel/linux-x86_64/crypto/test/trampoline-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S',
'third_party/boringssl-with-bazel/src/crypto/hrss/asm/poly_rq_mul.S',
'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-gcm-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-gcm-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv7-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-gcm-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-gcm-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/aesv8-gcm-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/armv4-mont-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/armv8-mont-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/armv8-mont-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/armv8-mont-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/bn-586-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/bn-586-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/bn-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/bn-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/bn-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/bsaes-armv7-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/co-586-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/co-586-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-armv4-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-neon-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-neon-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-neon-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv7-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/ghashv8-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/md5-586-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/md5-586-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/md5-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/md5-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256-armv8-asm-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256-armv8-asm-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256-armv8-asm-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256-x86_64-asm-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256-x86_64-asm-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-armv8-asm-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-armv8-asm-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-armv8-asm-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-x86_64-asm-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-x86_64-asm-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/rdrand-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/rdrand-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/rsaz-avx2-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/rsaz-avx2-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-586-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-586-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv4-large-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-586-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-586-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv4-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-586-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-586-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv4-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv7-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/x86-mont-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/x86-mont-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont-linux.S',
'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont5-apple.S',
'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont5-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/aes128gcmsiv-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/crypto/aes128gcmsiv-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv4-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86-apple.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_x86_64-linux.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv4-linux.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv8-apple.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv8-linux.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-armv8-win.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86-apple.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86-linux.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86_64-apple.S',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86_64-linux.S',
'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_mul.S',
'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_curve25519_adx_square.S',
'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_mul.S',
'third_party/boringssl-with-bazel/src/third_party/fiat/asm/fiat_p256_adx_sqr.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/chacha/chacha-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/armv8-mont-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/bn-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghash-neon-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghashv8-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256-armv8-asm-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha1-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha256-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha512-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/vpaes-armv8-win.S',
'third_party/boringssl-with-bazel/win-aarch64/crypto/test/trampoline-armv8-win.S',
],
'crypto_nasm': [
'third_party/boringssl-with-bazel/win-x86/crypto/chacha/chacha-x86-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/aesni-x86-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/bn-586-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/co-586-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-ssse3-x86-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-x86-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/md5-586-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha1-586-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha256-586-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha512-586-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/vpaes-x86-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/x86-mont-win.asm',
'third_party/boringssl-with-bazel/win-x86/crypto/test/trampoline-x86-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/chacha/chacha-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/md5-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256-x86_64-asm-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rdrand-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rsaz-avx2-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha1-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha256-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha512-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/vpaes-x86_64-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont5-win.asm',
'third_party/boringssl-with-bazel/win-x86_64/crypto/test/trampoline-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-gcm-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/aesni-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/bn-586-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/co-586-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-ssse3-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/ghash-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/md5-586-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/md5-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/p256-x86_64-asm-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/p256_beeu-x86_64-asm-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/rdrand-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/rsaz-avx2-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-586-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/sha1-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-586-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/sha256-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-586-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/sha512-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/vpaes-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/x86-mont-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont-win.asm',
'third_party/boringssl-with-bazel/src/gen/bcm/x86_64-mont5-win.asm',
'third_party/boringssl-with-bazel/src/gen/crypto/aes128gcmsiv-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86-win.asm',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha-x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/crypto/chacha20_poly1305_x86_64-win.asm',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86-win.asm',
'third_party/boringssl-with-bazel/src/gen/test_support/trampoline-x86_64-win.asm',
],
}

@ -105,6 +105,7 @@ CC_FILES=[
'third_party/abseil-cpp/absl/hash/internal/hash.cc',
'third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc',
'third_party/abseil-cpp/absl/log/globals.cc',
'third_party/abseil-cpp/absl/log/internal/check_op.cc',
'third_party/abseil-cpp/absl/log/internal/conditions.cc',
'third_party/abseil-cpp/absl/log/internal/fnmatch.cc',
'third_party/abseil-cpp/absl/log/internal/globals.cc',

@ -198,7 +198,7 @@
ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version
ss.dependency "#{s.name}/Privacy", version
ss.dependency 'BoringSSL-GRPC', '0.0.33'
ss.dependency 'BoringSSL-GRPC', '0.0.34'
% for abseil_spec in grpc_abseil_specs:
ss.dependency '${abseil_spec}', abseil_version
% endfor

@ -70,7 +70,7 @@
Pod::Spec.new do |s|
s.name = 'BoringSSL-GRPC'
version = '0.0.33'
version = '0.0.34'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
# Adapted from the homepage:
@ -149,7 +149,8 @@
s.subspec 'Interface' do |ss|
ss.header_mappings_dir = 'src/include/openssl'
ss.private_header_files = 'src/include/openssl/time.h'
ss.source_files = 'src/include/openssl/*.h'
ss.source_files = 'src/include/openssl/*.h',
'src/include/openssl/**/*.h'
end
s.subspec 'Implementation' do |ss|
ss.header_mappings_dir = 'src'
@ -165,7 +166,7 @@
# We have to include fiat because spake25519 depends on it
'src/third_party/fiat/*.{h,c,cc}',
# Include the err_data.c pre-generated in boringssl's master-with-bazel branch
'err_data.c'
'src/gen/crypto/err_data.c'
ss.private_header_files = 'src/ssl/*.h',
'src/ssl/**/*.h',

@ -138,29 +138,29 @@ TEST(ChannelStackFilters, LooksAsExpected) {
// tests with a default stack
EXPECT_EQ(MakeStack("unknown", no_args, GRPC_CLIENT_DIRECT_CHANNEL),
std::vector<std::string>(
{"authority", "message_size", "deadline", "connected"}));
EXPECT_EQ(
MakeStack("unknown", no_args, GRPC_CLIENT_DIRECT_CHANNEL),
std::vector<std::string>({"authority", "message_size", "connected"}));
EXPECT_EQ(
MakeStack("unknown", no_args, GRPC_CLIENT_SUBCHANNEL),
std::vector<std::string>({"authority", "message_size", "connected"}));
EXPECT_EQ(MakeStack("unknown", no_args, GRPC_SERVER_CHANNEL),
std::vector<std::string>({"server", "message_size", "deadline",
"server_call_tracer", "connected"}));
std::vector<std::string>(
{"server", "message_size", "server_call_tracer", "connected"}));
EXPECT_EQ(
MakeStack("chttp2", no_args, GRPC_CLIENT_DIRECT_CHANNEL),
std::vector<std::string>({"authority", "message_size", "deadline",
"http-client", "compression", "connected"}));
std::vector<std::string>({"authority", "message_size", "http-client",
"compression", "connected"}));
EXPECT_EQ(
MakeStack("chttp2", no_args, GRPC_CLIENT_SUBCHANNEL),
std::vector<std::string>({"authority", "message_size", "http-client",
"compression", "connected"}));
EXPECT_EQ(MakeStack("chttp2", no_args, GRPC_SERVER_CHANNEL),
std::vector<std::string>({"server", "message_size", "deadline",
"http-server", "compression",
"server_call_tracer", "connected"}));
std::vector<std::string>({"server", "message_size", "http-server",
"compression", "server_call_tracer",
"connected"}));
EXPECT_EQ(MakeStack(nullptr, no_args, GRPC_CLIENT_CHANNEL),
std::vector<std::string>({"client_idle", "client-channel"}));
}

@ -181,6 +181,36 @@ class CoreEnd2endTest : public ::testing::Test {
void* p;
};
// Safe notification to use for core e2e tests.
// Since when we're fuzzing we don't run background threads, the normal
// Notification type isn't safe to wait on (for some background timer to fire
// for instance...), consequently we need to use this.
class TestNotification {
public:
explicit TestNotification(CoreEnd2endTest* test) : test_(test) {}
void WaitForNotificationWithTimeout(absl::Duration wait_time) {
if (g_is_fuzzing_core_e2e_tests) {
Timestamp end = Timestamp::Now() + Duration::NanosecondsRoundUp(
ToInt64Nanoseconds(wait_time));
while (true) {
if (base_.HasBeenNotified()) return;
auto now = Timestamp::Now();
if (now >= end) return;
test_->step_fn_(now - end);
}
} else {
base_.WaitForNotificationWithTimeout(wait_time);
}
}
void Notify() { base_.Notify(); }
private:
Notification base_;
CoreEnd2endTest* const test_;
};
// CallBuilder - results in a call to either grpc_channel_create_call or
// grpc_channel_create_registered_call.
// Affords a fluent interface to specify optional arguments.
@ -753,7 +783,14 @@ class CoreEnd2endTest : public ::testing::Test {
cq_,
g_is_fuzzing_core_e2e_tests ? CqVerifier::FailUsingGprCrashWithStdio
: CqVerifier::FailUsingGprCrash,
std::move(step_fn_));
step_fn_ == nullptr
? nullptr
: absl::AnyInvocable<void(
grpc_event_engine::experimental::EventEngine::Duration)
const>(
[this](
grpc_event_engine::experimental::EventEngine::Duration
d) { step_fn_(d); }));
}
return *cq_verifier_;
}

@ -57,8 +57,8 @@ namespace grpc_core {
namespace {
Mutex* g_mu;
Notification* g_client_call_ended_notify;
Notification* g_server_call_ended_notify;
CoreEnd2endTest::TestNotification* g_client_call_ended_notify;
CoreEnd2endTest::TestNotification* g_server_call_ended_notify;
class FakeCallTracer : public ClientCallTracer {
public:
@ -197,8 +197,8 @@ CORE_END2END_TEST(Http2FullstackSingleHopTest, StreamStats) {
GTEST_SKIP() << "Test needs http2_stats_fix experiment to be enabled";
}
g_mu = new Mutex();
g_client_call_ended_notify = new Notification();
g_server_call_ended_notify = new Notification();
g_client_call_ended_notify = new CoreEnd2endTest::TestNotification(this);
g_server_call_ended_notify = new CoreEnd2endTest::TestNotification(this);
GlobalStatsPluginRegistry::RegisterStatsPlugin(
std::make_shared<NewFakeStatsPlugin>());
auto send_from_client = RandomSlice(10);

@ -627,10 +627,12 @@ class XdsClientTest : public ::testing::Test {
uint64_t>;
using ServerFailureMap = std::map<std::string /*xds_server*/, uint64_t>;
const ResourceUpdateMap& resource_updates_valid() const {
ResourceUpdateMap resource_updates_valid() const {
MutexLock lock(&mu_);
return resource_updates_valid_;
}
const ResourceUpdateMap& resource_updates_invalid() const {
ResourceUpdateMap resource_updates_invalid() const {
MutexLock lock(&mu_);
return resource_updates_invalid_;
}
const ServerFailureMap& server_failures() const { return server_failures_; }
@ -640,6 +642,7 @@ class XdsClientTest : public ::testing::Test {
absl::string_view resource_type,
uint64_t num_resources_valid,
uint64_t num_resources_invalid) override {
MutexLock lock(&mu_);
auto key =
std::make_pair(std::string(xds_server), std::string(resource_type));
if (num_resources_valid > 0) {
@ -651,12 +654,14 @@ class XdsClientTest : public ::testing::Test {
}
void ReportServerFailure(absl::string_view xds_server) override {
MutexLock lock(&mu_);
++server_failures_[std::string(xds_server)];
}
ResourceUpdateMap resource_updates_valid_;
ResourceUpdateMap resource_updates_invalid_;
ServerFailureMap server_failures_;
mutable Mutex mu_;
ResourceUpdateMap resource_updates_valid_ ABSL_GUARDED_BY(mu_);
ResourceUpdateMap resource_updates_invalid_ ABSL_GUARDED_BY(mu_);
ServerFailureMap server_failures_ ABSL_GUARDED_BY(mu_);
};
using ResourceCounts =

@ -1 +1 @@
Subproject commit e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df
Subproject commit 5a2bca2124800f2861263959b72bc35cdf18949b

@ -1131,8 +1131,6 @@ src/core/ext/filters/channel_idle/idle_filter_state.cc \
src/core/ext/filters/channel_idle/idle_filter_state.h \
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc \
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h \
src/core/ext/filters/deadline/deadline_filter.cc \
src/core/ext/filters/deadline/deadline_filter.h \
src/core/ext/filters/fault_injection/fault_injection_filter.cc \
src/core/ext/filters/fault_injection/fault_injection_filter.h \
src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc \

@ -936,8 +936,6 @@ src/core/ext/filters/channel_idle/idle_filter_state.cc \
src/core/ext/filters/channel_idle/idle_filter_state.h \
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc \
src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h \
src/core/ext/filters/deadline/deadline_filter.cc \
src/core/ext/filters/deadline/deadline_filter.h \
src/core/ext/filters/fault_injection/fault_injection_filter.cc \
src/core/ext/filters/fault_injection/fault_injection_filter.h \
src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc \

@ -28,7 +28,7 @@ cat <<EOF | sort >"$want_submodules"
third_party/abseil-cpp 4a2c63365eff8823a5221db86ef490e828306f9d
third_party/benchmark 344117638c8ff7e239044fd0fa7085839fc03021
third_party/bloaty 60209eb1ccc34d5deefb002d1b7f37545204f7f2
third_party/boringssl-with-bazel e14d29f68c2d1b02e06f10c83b9b8ea4d061f8df
third_party/boringssl-with-bazel 5a2bca2124800f2861263959b72bc35cdf18949b
third_party/cares/cares 6360e96b5cf8e5980c887ce58ef727e53d77243a
third_party/envoy-api 78f198cf96ecdc7120ef640406770aa01af775c4
third_party/googleapis 2f9af297c84c55c8b871ba4495e01ade42476c92

Loading…
Cancel
Save